]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
Merge from V6_main (04/10/2012)
authorvsr <vsr@opencascade.com>
Mon, 8 Oct 2012 11:13:10 +0000 (11:13 +0000)
committervsr <vsr@opencascade.com>
Mon, 8 Oct 2012 11:13:10 +0000 (11:13 +0000)
437 files changed:
CMakeLists.txt
adm_local_without_kernel/CMakeLists.txt [new file with mode: 0755]
doc/doxygen/figures/medlayers.png [new file with mode: 0644]
doc/doxygen/figures/medlayers_70pc.png [new file with mode: 0644]
doc/doxygen/main.dox
idl/CMakeLists.txt
src/CMakeLists.txt
src/INTERP_KERNEL/Bases/InterpKernelAutoPtr.hxx
src/INTERP_KERNEL/Bases/InterpKernelException.cxx
src/INTERP_KERNEL/Bases/InterpKernelException.hxx
src/INTERP_KERNEL/Bases/NormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/CMakeLists.txt
src/INTERP_KERNEL/CellModel.cxx
src/INTERP_KERNEL/CellModel.hxx
src/INTERP_KERNEL/ConvexIntersector.hxx
src/INTERP_KERNEL/ConvexIntersector.txx
src/INTERP_KERNEL/CurveIntersector.hxx
src/INTERP_KERNEL/CurveIntersector.txx
src/INTERP_KERNEL/CurveIntersectorP0P0.hxx
src/INTERP_KERNEL/CurveIntersectorP0P0.txx
src/INTERP_KERNEL/CurveIntersectorP0P1.hxx
src/INTERP_KERNEL/CurveIntersectorP0P1.txx
src/INTERP_KERNEL/CurveIntersectorP1P0.hxx
src/INTERP_KERNEL/CurveIntersectorP1P0.txx
src/INTERP_KERNEL/CurveIntersectorP1P1.hxx
src/INTERP_KERNEL/CurveIntersectorP1P1.txx
src/INTERP_KERNEL/ExprEval/InterpKernelAsmX86.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelAsmX86.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelExprParser.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelFunction.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelFunction.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelUnit.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelUnit.hxx
src/INTERP_KERNEL/ExprEval/InterpKernelValue.cxx
src/INTERP_KERNEL/ExprEval/InterpKernelValue.hxx
src/INTERP_KERNEL/GenMathFormulae.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DAbstractEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DAbstractEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DBounds.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DComposedEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.txx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeArcCircle.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeInfLin.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeInfLin.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdgeLin.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DElementaryEdge.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DElementaryEdge.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DNode.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DPrecision.hxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx
src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.hxx
src/INTERP_KERNEL/Geometric2DIntersector.hxx
src/INTERP_KERNEL/Geometric2DIntersector.txx
src/INTERP_KERNEL/IntegralUniformIntersector.hxx
src/INTERP_KERNEL/IntegralUniformIntersector.txx
src/INTERP_KERNEL/InterpKernelCellSimplify.cxx
src/INTERP_KERNEL/InterpKernelCellSimplify.hxx
src/INTERP_KERNEL/InterpKernelMatrixTools.cxx
src/INTERP_KERNEL/InterpKernelMatrixTools.hxx
src/INTERP_KERNEL/InterpKernelMeshQuality.cxx
src/INTERP_KERNEL/InterpKernelMeshQuality.hxx
src/INTERP_KERNEL/Interpolation.hxx
src/INTERP_KERNEL/Interpolation.txx
src/INTERP_KERNEL/Interpolation1D.hxx
src/INTERP_KERNEL/Interpolation1D.txx
src/INTERP_KERNEL/Interpolation2D.hxx
src/INTERP_KERNEL/Interpolation2D.txx
src/INTERP_KERNEL/Interpolation2D1D.hxx
src/INTERP_KERNEL/Interpolation2D1D.txx
src/INTERP_KERNEL/Interpolation2DCurve.cxx
src/INTERP_KERNEL/Interpolation2DCurve.hxx
src/INTERP_KERNEL/Interpolation3D.cxx
src/INTERP_KERNEL/Interpolation3D.hxx
src/INTERP_KERNEL/Interpolation3D.txx
src/INTERP_KERNEL/Interpolation3DSurf.cxx
src/INTERP_KERNEL/Interpolation3DSurf.hxx
src/INTERP_KERNEL/InterpolationCurve.hxx
src/INTERP_KERNEL/InterpolationCurve.txx
src/INTERP_KERNEL/InterpolationOptions.cxx
src/INTERP_KERNEL/InterpolationOptions.hxx
src/INTERP_KERNEL/InterpolationPlanar.hxx
src/INTERP_KERNEL/InterpolationPlanar.txx
src/INTERP_KERNEL/InterpolationUtils.hxx
src/INTERP_KERNEL/Intersector3D.hxx
src/INTERP_KERNEL/Intersector3D.txx
src/INTERP_KERNEL/Intersector3DP0P0.hxx
src/INTERP_KERNEL/Intersector3DP0P0.txx
src/INTERP_KERNEL/Intersector3DP0P1.hxx
src/INTERP_KERNEL/Intersector3DP0P1.txx
src/INTERP_KERNEL/Intersector3DP1P0.hxx
src/INTERP_KERNEL/Intersector3DP1P0.txx
src/INTERP_KERNEL/Intersector3DP1P0Bary.hxx
src/INTERP_KERNEL/Intersector3DP1P0Bary.txx
src/INTERP_KERNEL/Intersector3DP1P1.hxx
src/INTERP_KERNEL/Intersector3DP1P1.txx
src/INTERP_KERNEL/Planar2D1DIntersectorP0P0.hxx
src/INTERP_KERNEL/Planar2D1DIntersectorP0P0.txx
src/INTERP_KERNEL/PlanarIntersector.hxx
src/INTERP_KERNEL/PlanarIntersector.txx
src/INTERP_KERNEL/PlanarIntersectorP0P0.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P0.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1.txx
src/INTERP_KERNEL/PlanarIntersectorP0P1PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP0P1PL.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0Bary.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0Bary.txx
src/INTERP_KERNEL/PlanarIntersectorP1P0PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P0PL.txx
src/INTERP_KERNEL/PlanarIntersectorP1P1.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P1.txx
src/INTERP_KERNEL/PlanarIntersectorP1P1PL.hxx
src/INTERP_KERNEL/PlanarIntersectorP1P1PL.txx
src/INTERP_KERNEL/PointLocator2DIntersector.hxx
src/INTERP_KERNEL/PointLocator2DIntersector.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P0.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P0.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P1.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP0P1.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P0.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P0.txx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P1.hxx
src/INTERP_KERNEL/PointLocator3DIntersectorP1P1.txx
src/INTERP_KERNEL/PointLocatorAlgos.txx
src/INTERP_KERNEL/PolyhedronIntersectorP0P0.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP0P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP0P1.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP0P1.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0Bary.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P0Bary.txx
src/INTERP_KERNEL/PolyhedronIntersectorP1P1.hxx
src/INTERP_KERNEL/PolyhedronIntersectorP1P1.txx
src/INTERP_KERNEL/TargetIntersector.hxx
src/INTERP_KERNEL/TransformedTriangle.hxx
src/INTERP_KERNEL/TriangulationIntersector.hxx
src/INTERP_KERNEL/TriangulationIntersector.txx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.hxx
src/INTERP_KERNEL/VTKNormalizedUnstructuredMesh.txx
src/INTERP_KERNEL/VolSurfFormulae.hxx
src/INTERP_KERNEL/VolSurfUser.hxx
src/INTERP_KERNEL/VolSurfUser.txx
src/INTERP_KERNELTest/CMakeLists.txt
src/INTERP_KERNELTest/ExprEvalInterpTest.cxx
src/INTERP_KERNELTest/ExprEvalInterpTest.hxx
src/INTERP_KERNELTest/InterpKernelTestExport.hxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest.hxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest2.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest3.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest4.cxx
src/INTERP_KERNELTest/QuadraticPlanarInterpTest5.cxx
src/MED/CMakeLists.txt
src/MEDCalculator/CMakeLists.txt
src/MEDCalculator/Swig/CMakeLists.txt
src/MEDCalculator/Test/CMakeLists.txt
src/MEDCoupling/CMakeLists.txt
src/MEDCoupling/MEDCoupling.hxx
src/MEDCoupling/MEDCouplingAutoRefCountObjectPtr.hxx
src/MEDCoupling/MEDCouplingCMesh.cxx
src/MEDCoupling/MEDCouplingCMesh.hxx
src/MEDCoupling/MEDCouplingDefinitionTime.cxx
src/MEDCoupling/MEDCouplingDefinitionTime.hxx
src/MEDCoupling/MEDCouplingExtrudedMesh.cxx
src/MEDCoupling/MEDCouplingExtrudedMesh.hxx
src/MEDCoupling/MEDCouplingField.cxx
src/MEDCoupling/MEDCouplingField.hxx
src/MEDCoupling/MEDCouplingFieldDiscretization.cxx
src/MEDCoupling/MEDCouplingFieldDiscretization.hxx
src/MEDCoupling/MEDCouplingFieldDouble.cxx
src/MEDCoupling/MEDCouplingFieldDouble.hxx
src/MEDCoupling/MEDCouplingFieldOverTime.cxx
src/MEDCoupling/MEDCouplingFieldOverTime.hxx
src/MEDCoupling/MEDCouplingFieldTemplate.cxx
src/MEDCoupling/MEDCouplingFieldTemplate.hxx
src/MEDCoupling/MEDCouplingGaussLocalization.cxx
src/MEDCoupling/MEDCouplingGaussLocalization.hxx
src/MEDCoupling/MEDCouplingMemArray.cxx
src/MEDCoupling/MEDCouplingMemArray.hxx
src/MEDCoupling/MEDCouplingMemArray.txx
src/MEDCoupling/MEDCouplingMesh.cxx
src/MEDCoupling/MEDCouplingMesh.hxx
src/MEDCoupling/MEDCouplingMultiFields.cxx
src/MEDCoupling/MEDCouplingMultiFields.hxx
src/MEDCoupling/MEDCouplingNatureOfField.cxx
src/MEDCoupling/MEDCouplingNatureOfField.hxx
src/MEDCoupling/MEDCouplingNormalizedCartesianMesh.hxx
src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.hxx
src/MEDCoupling/MEDCouplingNormalizedUnstructuredMesh.txx
src/MEDCoupling/MEDCouplingPointSet.cxx
src/MEDCoupling/MEDCouplingPointSet.hxx
src/MEDCoupling/MEDCouplingRefCountObject.cxx
src/MEDCoupling/MEDCouplingRefCountObject.hxx
src/MEDCoupling/MEDCouplingRemapper.cxx
src/MEDCoupling/MEDCouplingRemapper.hxx
src/MEDCoupling/MEDCouplingTimeDiscretization.cxx
src/MEDCoupling/MEDCouplingTimeDiscretization.hxx
src/MEDCoupling/MEDCouplingTimeLabel.cxx
src/MEDCoupling/MEDCouplingTimeLabel.hxx
src/MEDCoupling/MEDCouplingUMesh.cxx
src/MEDCoupling/MEDCouplingUMesh.hxx
src/MEDCoupling/MEDCouplingUMeshDesc.cxx
src/MEDCoupling/MEDCouplingUMeshDesc.hxx
src/MEDCoupling/Makefile.am
src/MEDCoupling/Test/CMakeLists.txt
src/MEDCoupling/Test/MEDCouplingBasicsTest.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest0.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest1.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest2.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest2.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest3.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest3.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest4.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest4.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTest5.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTest5.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTestData1.hxx
src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.cxx
src/MEDCoupling/Test/MEDCouplingBasicsTestInterp.hxx
src/MEDCoupling/Test/MEDCouplingExamplesTest.cxx
src/MEDCoupling/Test/MEDCouplingRemapperTest.cxx
src/MEDCoupling/Test/MEDCouplingRemapperTest.hxx
src/MEDCoupling/Test/Makefile.am
src/MEDCoupling/Test/TestMEDCoupling.cxx
src/MEDCoupling/Test/TestMEDCouplingRemapper.cxx
src/MEDCouplingCorba/CMakeLists.txt
src/MEDCouplingCorba/Client/CMakeLists.txt
src/MEDCouplingCorba/Test/CMakeLists.txt
src/MEDCouplingCorba_Swig/CMakeLists.txt
src/MEDCouplingCorba_Swig/Client/CMakeLists.txt
src/MEDCoupling_Swig/CMakeLists.txt
src/MEDCoupling_Swig/MEDCoupling.i
src/MEDCoupling_Swig/MEDCouplingBasicsTest.py
src/MEDCoupling_Swig/MEDCouplingCommon.i
src/MEDCoupling_Swig/MEDCouplingFinalize.i
src/MEDCoupling_Swig/MEDCouplingRemapper.i
src/MEDGUI/CMakeLists.txt
src/MEDLoader/CMakeLists.txt
src/MEDLoader/MEDFileBasis.cxx
src/MEDLoader/MEDFileBasis.hxx
src/MEDLoader/MEDFileData.cxx
src/MEDLoader/MEDFileData.hxx
src/MEDLoader/MEDFileField.cxx
src/MEDLoader/MEDFileField.hxx
src/MEDLoader/MEDFileMesh.cxx
src/MEDLoader/MEDFileMesh.hxx
src/MEDLoader/MEDFileMeshElt.cxx
src/MEDLoader/MEDFileMeshElt.hxx
src/MEDLoader/MEDFileMeshLL.cxx
src/MEDLoader/MEDFileMeshLL.hxx
src/MEDLoader/MEDFileUtilities.cxx
src/MEDLoader/MEDFileUtilities.hxx
src/MEDLoader/MEDLoader.cxx
src/MEDLoader/MEDLoader.hxx
src/MEDLoader/MEDLoaderBase.cxx
src/MEDLoader/MEDLoaderBase.hxx
src/MEDLoader/MEDLoaderDefines.hxx
src/MEDLoader/Makefile.am
src/MEDLoader/SauvMedConvertor.cxx
src/MEDLoader/SauvWriter.cxx
src/MEDLoader/Swig/CMakeLists.txt
src/MEDLoader/Swig/MEDLoader.i
src/MEDLoader/Swig/MEDLoaderCommon.i
src/MEDLoader/Swig/MEDLoaderDataForTest.py
src/MEDLoader/Swig/MEDLoaderExamplesTest.py
src/MEDLoader/Swig/MEDLoaderTest.py
src/MEDLoader/Swig/MEDLoaderTest2.py
src/MEDLoader/Swig/MEDLoaderTest3.py
src/MEDLoader/Swig/MEDLoaderTypemaps.i
src/MEDLoader/Swig/Makefile.am
src/MEDLoader/Swig/SauvLoaderTest.py
src/MEDLoader/Swig/libMEDLoader_Swig.py
src/MEDLoader/Test/CMakeLists.txt
src/MEDLoader/Test/MEDLoaderTest.cxx
src/MEDLoader/Test/MEDLoaderTest.hxx
src/MEDLoader/Test/Makefile.am
src/MEDLoader/Test/SauvLoaderTest.cxx
src/MEDLoader/Test/TestMEDLoader.cxx
src/MEDMEM/CMakeLists.txt
src/MEDMEMBinTest/CMakeLists.txt
src/MEDMEMCppTest/CMakeLists.txt
src/MEDMEM_I/CMakeLists.txt
src/MEDMEM_SWIG/CMakeLists.txt
src/MEDOP/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/cmp/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/doc/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/doc/models/medop.xmi [new file with mode: 0644]
src/MEDOP/doc/sphinx/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/doc/sphinx/Makefile.am [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf [new file with mode: 0755]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv [new file with mode: 0644]
src/MEDOP/doc/sphinx/_static/xmed.css [new file with mode: 0644]
src/MEDOP/doc/sphinx/conf.py.in [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/convert.sh [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/ico_datasource_add.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_use.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_datasource_view.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_imagesource.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_workspace_save.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/ico_xmed.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/med-uml-main.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medlayers.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medmem-corba-layers.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medmem-layers.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-result.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop-gui-visufield.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_exportparavis.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-architecture.png [new file with mode: 0755]
src/MEDOP/doc/sphinx/images/xmed-exploremed.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-functions.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-start.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-implantation.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-irm-diff.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-irm-field.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-irm.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png [new file with mode: 0644]
src/MEDOP/doc/sphinx/index.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/salomedoc.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-definitions.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-develguide.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-prototype-develguide.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-prototype-medmem.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-prototype-overview.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-references.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-specifications.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-userguide.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-workingnotes-2010.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-workingnotes-2011.rst [new file with mode: 0644]
src/MEDOP/doc/sphinx/xmed-workingnotes-2012.rst [new file with mode: 0644]
src/MEDOP/exe/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/exe/appligen/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/exe/image2med/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/gui/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/gui/dialogs/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/res/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/res/testfiles/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/tui/CMakeLists.txt [new file with mode: 0644]
src/MEDOP/tui/xmedpy/CMakeLists.txt [new file with mode: 0644]
src/MEDPartitioner/CMakeLists.txt
src/MEDPartitioner/MEDPARTITIONER.hxx
src/MEDPartitioner/Test/CMakeLists.txt
src/MEDSPLITTER/CMakeLists.txt
src/MEDSPLITTER/Test/CMakeLists.txt
src/MEDSPLITTER_Swig/CMakeLists.txt
src/MEDWrapper/Base/CMakeLists.txt
src/MEDWrapper/Factory/CMakeLists.txt
src/MEDWrapper/V2_2/CMakeLists.txt
src/MED_SWIG/CMakeLists.txt
src/MedClient/src/CMakeLists.txt
src/MedClient/test/environ/CMakeLists.txt
src/MedClient/test/test2/CMakeLists.txt
src/MedCorba_Swig/CMakeLists.txt
src/ParaMEDLoader/CMakeLists.txt
src/ParaMEDLoader/Makefile.am
src/ParaMEDLoader/ParaMEDLoader.cxx
src/ParaMEDLoader/ParaMEDLoader.hxx
src/ParaMEDMEM/CMakeLists.txt
src/ParaMEDMEM/OverlapDEC.cxx
src/ParaMEDMEM/OverlapDEC.hxx
src/ParaMEDMEM/OverlapElementLocator.cxx
src/ParaMEDMEM/OverlapElementLocator.hxx
src/ParaMEDMEM/OverlapInterpolationMatrix.cxx
src/ParaMEDMEM/OverlapInterpolationMatrix.hxx
src/ParaMEDMEM/OverlapMapping.cxx
src/ParaMEDMEM/OverlapMapping.hxx
src/ParaMEDMEMTest/CMakeLists.txt
src/ParaMEDMEM_Swig/CMakeLists.txt
src/RENUMBER/CMakeLists.txt
src/RENUMBER/RENUMBERDefines.hxx

index b8fbd59c381cdf5e0c3b4c8af80bef2e9082cb97..a431ab0ba0b748d496427fa7bb3f5baa48317dea 100644 (file)
@@ -26,12 +26,15 @@ ENDIF(COMMAND cmake_policy)
 ENABLE_TESTING()
 SET(VERSION "6.5.0")
 SET(VERSION_DEV "1")
+SET(WITH_MEDMEMGUI "0")
 
 SET(KERNEL_ROOT_DIR $ENV{KERNEL_ROOT_DIR})
-FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR)
-
 IF(KERNEL_ROOT_DIR)
+  FILE(TO_CMAKE_PATH $ENV{KERNEL_ROOT_DIR} KERNEL_ROOT_DIR)
   SET(MED_ENABLE_KERNEL ON)
+  
+  SET(SALOME_MACROS_DIR ${KERNEL_ROOT_DIR}/salome_adm/cmake_files)
+  
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPLATFORM.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindPYTHON.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindMPI.cmake)
@@ -43,17 +46,13 @@ IF(KERNEL_ROOT_DIR)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSWIG.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindCPPUNIT.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindDOXYGEN.cmake)
+  INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindSPHINX.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindLIBBATCH.cmake)
   INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/FindKERNEL.cmake)
-ELSE(KERNEL_ROOT_DIR)
-  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
-  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
-ENDIF(KERNEL_ROOT_DIR)
-
-SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
-FILE(TO_CMAKE_PATH $ENV{GUI_ROOT_DIR} GUI_ROOT_DIR)
 
-IF(GUI_ROOT_DIR)
+  SET(GUI_ROOT_DIR $ENV{GUI_ROOT_DIR})
+  FILE(TO_CMAKE_PATH $ENV{GUI_ROOT_DIR} GUI_ROOT_DIR)
+  IF(GUI_ROOT_DIR)
   SET(MED_ENABLE_GUI ON)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindCAS.cmake)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQT4.cmake)
@@ -62,7 +61,21 @@ IF(GUI_ROOT_DIR)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindQWT.cmake)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindSIPPYQT.cmake)
   INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/FindGUI.cmake)
-ENDIF(GUI_ROOT_DIR)
+  ENDIF(GUI_ROOT_DIR)
+ELSE(KERNEL_ROOT_DIR)
+  SET(SALOME_MACROS_DIR ${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files)
+  
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPLATFORM.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindMPI.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindBOOST.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindCPPUNIT.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindHDF5.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPYTHON.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindLIBXML2.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindPTHREADS.cmake)
+  INCLUDE(${CMAKE_SOURCE_DIR}/adm_local_without_kernel/cmake_files/FindSWIG.cmake)
+
+ENDIF(KERNEL_ROOT_DIR)
 
 INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindPARMETIS.cmake)
 INCLUDE(${CMAKE_SOURCE_DIR}/adm_local/cmake_files/FindMETIS.cmake)
@@ -112,6 +125,8 @@ SET(MED_admlocalcmake adm_local/cmake_files)
 
 IF(MED_ENABLE_KERNEL)
   ADD_SUBDIRECTORY(idl)
+ELSE(MED_ENABLE_KERNEL)
+  ADD_SUBDIRECTORY(adm_local_without_kernel)
 ENDIF(MED_ENABLE_KERNEL)
 ADD_SUBDIRECTORY(adm_local)
 ADD_SUBDIRECTORY(src)
diff --git a/adm_local_without_kernel/CMakeLists.txt b/adm_local_without_kernel/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..1575c37
--- /dev/null
@@ -0,0 +1,24 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(input ${CMAKE_CURRENT_SOURCE_DIR}/SALOMEconfig.h.in)
+SET(output ${CMAKE_CURRENT_BINARY_DIR}/SALOMEconfig.h)
+MESSAGE(STATUS "Creation of ${output}")
+CONFIGURE_FILE(${input} ${output})
+INSTALL(FILES ${output} DESTINATION ${MED_salomeinclude_HEADERS})
diff --git a/doc/doxygen/figures/medlayers.png b/doc/doxygen/figures/medlayers.png
new file mode 100644 (file)
index 0000000..179ae0b
Binary files /dev/null and b/doc/doxygen/figures/medlayers.png differ
diff --git a/doc/doxygen/figures/medlayers_70pc.png b/doc/doxygen/figures/medlayers_70pc.png
new file mode 100644 (file)
index 0000000..f319976
Binary files /dev/null and b/doc/doxygen/figures/medlayers_70pc.png differ
index a3d73913cf3b99942d9d72694265f4c484fdb31a..a8e64c5b079991f64fbc90186580d2e28d68f6be 100644 (file)
@@ -1,25 +1,65 @@
 /*!\mainpage MEDMEM user's guide
 
-\image html MED_small.png
-\image latex MED_small.eps
-\anchor fig_MED_small
-
 \section intro Introduction
-This document constitutes the user guide of the %MEDMEM library and of its related tools.
+This document is the user guide of the %MED SALOME module. The MED
+module consists in:
+
+- \ref S1 to manipulate meshes and fields that conform
+  to the MED data model. This library can be used in C++ programs as
+  in python script for data processing on meshes and fields.
+- \ref S2 that exhibits some useful functions of the
+  library for a graphical manipulation of data in standard use cases.
+- \ref S3 that can be used to process MED data files
+
+\section S1 A library of functions for data processing
+
+The figure below represents the layer structure of the packages of the
+library:
+
+\image html medlayers_70pc.png
+
+The fondamentals consists in three atomic libraries: 
+
+- \ref medcoupling that describes DataStructures used for cross process exchange of meshes and fields. 
+- \ref medloader that provides I/O functions to the MED file format
+- \ref interptools (INTERP_KERNEL + REMAPPER) that provides
+  mathematical structures and algorithms for interpolation and
+  localization.
+
+You should be warned that the MEDMEM library still exists in the MED
+module but is considered as deprecated:
+
+- \ref medmem covers the %MEDMEM core library, i.e. the implementation
+  of meshes, supports and fields and the associated drivers (for
+  MED-file, VTK, GIBI).
+
+\section S2 A graphical interface for standard use cases
+
+The MED module in SALOME comes with a graphical interface that helps
+you to deal with most standard use case of fields manipulation. The
+user guide can be found here:
+
+- <a class="el" target="_new"
+  href="../../dev/MED/xmed-userguide.html">User guide of the MED Graphical Interface</a>
+
+You could also be interested to read the software specifications and
+requirements for this graphical module, and even the technical
+considerations for development:
+
+- <a class="el" target="_new"
+  href="../../dev/MED/xmed-specifications.html">Software
+  specifications and requirements of the MED Graphical Interface</a>
+- <a class="el" target="_new"
+  href="../../dev/MED/xmed-develguide.html">Developer guide of the MED Graphical Interface</a>
+
+\section S3 A set of tools for file manipulation
 
-\section install Installation 
-The install procedure of the %MEDMEM library can handle a variety of configurations 
-to suit the needs of its user. Instructions for configuring and installing the library can be found in \ref medmem_install.
-
-\section outline Outline
-This user guide contains five different chapters that cover the core %MEDMEM and MEDCoupling libraries, the interpolation library and the associated tools: 
-- Chapter \ref medcoupling describes DataStructures used for cross
-process exchange of meshes and fields.
-- Chapter \ref medloader describes API for I/O from or to a MED file
-coming from a \ref medcoupling data structure.
-- Chapter \ref interptools describes the interpolation and localization library.
-- Chapter \ref medmem covers the %MEDMEM core library, i.e. the implementation of meshes, supports and fields and the associated drivers (for MED-file, VTK, GIBI).
 - Chapter \ref tools describes various tools based on MEDMEM  that can
 be helpful for handling MED files (conversion tools and splitting tools). 
 
+\section install Installation 
+The install procedure of the %MED SALOME module can handle a variety of configurations 
+to suit the needs of its user. Instructions for configuring and
+installing the module an be found in \ref medmem_install.
+
 */
index 21696efb5665264537bba230b06b0199d8ad208e..3556b4e15378e97dcdba34486fd4296284b10786 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/UseOMNIORB.cmake)
 
@@ -23,7 +24,7 @@ INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}
-  )
+)
 
 SET(SalomeIDLMED_IDLSOURCES
   MED.idl
@@ -31,7 +32,11 @@ SET(SalomeIDLMED_IDLSOURCES
   Compo1Py.idl
   MEDCouplingCorbaServant.idl
   ParaMEDCouplingCorbaServant.idl
-  )
+  MEDDataManager.idl
+  MEDCalculator.idl
+  MEDEventListener.idl
+  MEDOPFactory.idl
+)
 
 IF(MPI_IS_OK)
   SET(SalomeIDLMED_IDLSOURCES ${SalomeIDLMED_IDLSOURCES} ParaMEDMEMComponent.idl)
@@ -39,19 +44,26 @@ ENDIF(MPI_IS_OK)
 
 SET(SalomeIDLMEDTests_IDLSOURCES
   MEDCouplingCorbaServantTest.idl
-  )
+)
 
 SET(IDL_INCLUDE_DIRS
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${KERNEL_ROOT_DIR}/idl/salome
-  )
+)
 
-OMNIORB_ADD_MODULE(SalomeIDLMED "${SalomeIDLMED_IDLSOURCES}" "${IDL_INCLUDE_DIRS}")
+SET(TYPE)
+IF(WINDOWS)
+  SET(TYPE STATIC)
+ELSE(WINDOWS)
+  SET(TYPE SHARED)
+ENDIF(WINDOWS
+)
+OMNIORB_ADD_MODULE(SalomeIDLMED "${SalomeIDLMED_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" ${TYPE})
 TARGET_LINK_LIBRARIES(SalomeIDLMED ${CORBA_LIBS} ${KERNEL_LDFLAGS} ${SalomeIDLKernel})
-SET_TARGET_PROPERTIES(SalomeIDLMED PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SET_TARGET_PROPERTIES(SalomeIDLMED PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
-OMNIORB_ADD_MODULE(SalomeIDLMEDTests "${SalomeIDLMEDTests_IDLSOURCES}" "${IDL_INCLUDE_DIRS}")
-TARGET_LINK_LIBRARIES(SalomeIDLMEDTests ${CORBA_LIBS} ${KERNEL_LDFLAGS} ${SalomeIDLKernel})
-SET_TARGET_PROPERTIES(SalomeIDLMEDTests PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+OMNIORB_ADD_MODULE(SalomeIDLMEDTests "${SalomeIDLMEDTests_IDLSOURCES}" "${IDL_INCLUDE_DIRS}" ${TYPE})
+TARGET_LINK_LIBRARIES(SalomeIDLMEDTests SalomeIDLMED)
+SET_TARGET_PROPERTIES(SalomeIDLMEDTests PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 INSTALL(TARGETS SalomeIDLMED SalomeIDLMEDTests DESTINATION ${MED_salomelib_LIBS})
index a041dbf109455de494342cb61530139f7a1310cd..d9ebfc85145f9e0a637cc4647e57fc93ea668739 100644 (file)
@@ -74,7 +74,7 @@ IF(MED_ENABLE_KERNEL)
     SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} ParaMEDCouplingCorba ParaMEDMEMComponent)
   ENDIF(MPI_IS_OK)
   IF(MED_ENABLE_MED3)
-    SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} MEDCalculator)
+    SET(COMMON_SUBDIRS ${COMMON_SUBDIRS} MEDCalculator MEDOP)
     SET(OLD_COMMON_SUBDIRS ${OLD_COMMON_SUBDIRS} MEDMEM_I)
   ENDIF(MED_ENABLE_MED3)
   IF(MED_ENABLE_GUI)
index 4100a4d05b92705fb2c761eb3ea56ff2bb69201a..27eeb5e37684fb6a11befc6b90622607309a6d44 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELAUTOPTR_HXX__
 #define __INTERPKERNELAUTOPTR_HXX__
index 35483a8ccc75470c7dcc2bf6bd6be6ba16617707..9f777b61f123d952664247412ae8940784777cdf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelException.hxx"
 
index c2aa9e32f39f6c08075112cc61f291df6e90fe58..3b573c0240935a013fa51a7bd8de4cf0d8957903 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELEXCEPTION_HXX__
 #define __INTERPKERNELEXCEPTION_HXX__
index 30c429ed763d3f44aab73666f62d14d2227337e7..3d43cb6d5c2242e29a57429e4596e9d0be8420b8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __NORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __NORMALIZEDUNSTRUCTUREDMESH_HXX__
index b0b85bdc6f4414cecf4d7cc4ae639fe47ead6360..8d9d2463a16270b3eb8a63cee32611a4c5186322 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 SET(interpkernel_SOURCES
   TransformedTriangle.cxx
@@ -65,7 +66,8 @@ INCLUDE_DIRECTORIES(
   )
 
 ADD_LIBRARY(interpkernel SHARED ${interpkernel_SOURCES})
-
+SET_TARGET_PROPERTIES(interpkernel PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(interpkernel ${PLATFORM_LIBS})
 INSTALL(TARGETS interpkernel DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB_RECURSE interpkernel_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 626fef91680796bfe0c58bf36bf2e119bb984dea..13781012362e08ae725a3a00227935775738a433 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "CellModel.hxx"
 
index f9d19c981015a55abc3f01dd606f5507761a6321..27ec69f056128202b6c7583b282dce033f31b000 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CELLMODEL_INTERP_KERNEL_HXX__
 #define __CELLMODEL_INTERP_KERNEL_HXX__
index 10755efa2cb0c13c8cf348b615e8bffce708e43d..12fe453b9635faff4f3d9e248886c514596a07d7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CONVEXINTERSECTOR_HXX__
 #define __CONVEXINTERSECTOR_HXX__
index 44836c63910dec29d0136fdc15b9cd5ea8b64b36..a30c6a932d9e73bac361f78aaaf6e832a27cc2fd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CONVEXINTERSECTOR_TXX__
 #define __CONVEXINTERSECTOR_TXX__
 
index 14035f13a36a0bbf952188d5b76f4be756929069..6a9ee27d5491d94c0ea7b442624923f34450a899 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTOR_HXX__
 #define __CURVEINTERSECTOR_HXX__
index 38dfa9920730d74fc6ef911153ba2010a9aea0e6..3281d99291b6bff76fd8706ad79cd9a7aef3dcb9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CURVEINTERSECTOR_TXX__
 #define __CURVEINTERSECTOR_TXX__
 
index 761dc2dc3202949a1eeaaaa573da952f6882dfab..26c58420c6277bb16a74e9dd24b51405c2cec53c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP0P0_HXX__
 #define __CURVEINTERSECTORP0P0_HXX__
index 3981d1218f2b1bd311b2708a4c775d159a50892e..d82f4eb589561df482f90f198a45e201f2b41cde 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CURVEINTERSECTORP0P0_TXX__
 #define __CURVEINTERSECTORP0P0_TXX__
 
index 42dbd758bb7c18e01d227edb994f602e76f9d6e3..fb42bf140325a7aaf7921df4fed3391cdd6cc38e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP0P1_HXX__
 #define __CURVEINTERSECTORP0P1_HXX__
index 91bb236d498c301acd9484f4eb6b54784069952e..ff43da455501196f9453dafe953258bb701117bf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CurveIntersectorP0P1_TXX__
 #define __CurveIntersectorP0P1_TXX__
 
index 7a5d3d6cfae183e46e516880ac1fc21e629b2cba..ba548b9e37af8f300f61f096a2af98bc59d00068 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP1P0_HXX__
 #define __CURVEINTERSECTORP1P0_HXX__
index 2a41ee145b4d67558a7f33362e81e3aa0a9e724f..45c1eeb87dc33e75e63e1bf5843a2ef63e458f1d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CurveIntersectorP1P0_TXX__
 #define __CurveIntersectorP1P0_TXX__
 
index f09e5143ff78a1c048091af308aad450b9ae557b..537fe9714b8f3d109345fc29be4624ef426502f9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __CURVEINTERSECTORP1P1_HXX__
 #define __CURVEINTERSECTORP1P1_HXX__
index efd1f855a1a047c3df08cfba56e502b0ae45087c..1d3b93d73c5b97c53f3f829c12465f7f47bee116 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __CurveIntersectorP1P1_TXX__
 #define __CurveIntersectorP1P1_TXX__
 
index db4496f72f19a67b6799864b5eaf98cb416b1128..695bbc160e08e5d43a369f67db8228c26cfe72ed 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelAsmX86.hxx"
 
@@ -26,7 +27,7 @@
 #ifdef _POSIX_MAPPED_FILES
 #include <sys/mman.h>
 #else
-#ifdef WNT
+#ifdef WIN32
 #include <windows.h>
 #endif
 #endif
@@ -48,7 +49,7 @@ char *INTERP_KERNEL::AsmX86::copyToExecMemZone(const std::vector<char>& ml, unsi
 #ifdef _POSIX_MAPPED_FILES
   ret=(char *)mmap(0,lgth,PROT_EXEC | PROT_WRITE,MAP_ANONYMOUS | MAP_PRIVATE,-1,0);
 #else
-#ifdef WNT
+#ifdef WIN32
   HANDLE h=CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_EXECUTE_READWRITE,0,lgth,NULL);
   ret=(char *)MapViewOfFile(h,FILE_MAP_EXECUTE | FILE_MAP_READ | FILE_MAP_WRITE,0,0,lgth);
 #endif
index d305da4b8fa6d29bbb6f4c18b5a3e32897d76ebc..3fa6f73e77fd5a8ee9752eea55e0993c30a894fd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELASMX86_HXX__
 #define __INTERPKERNELASMX86_HXX__
index 69dabca7a6b747c4409751f5b1571303feb84358..e75a2e5f47c6adc2f02db8b3ec8be2fdd0589d55 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelExprParser.hxx"
 #include "InterpKernelValue.hxx"
index a87f335a7337ae403685ff2643a6ba9c5df60d20..29c8c0d9cd0a0d8e6ee36757779279ed53941491 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELEXPRPARSER_HXX__
 #define __INTERPKERNELEXPRPARSER_HXX__
index 4979adc058beda2963ace8dd2ba1d9fc5cee44a8..c8e4d5b8dc19b752b0648d6321efe2244f5f1071 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelFunction.hxx"
 #include "InterpKernelValue.hxx"
index cfd4bf692a1be1ccae5c98c82c3c776db84b2533..f49c7594303c42938b811afe329a78610ecfe7f7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELFUNCTION_HXX__
 #define __INTERPKERNELFUNCTION_HXX__
index c719b5e739cabfa0994a87bf5bf145b93bbf9811..e7e737cf46578b59abee643e0516e6705bcd5cac 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelUnit.hxx"
 #include "InterpKernelExprParser.hxx"
index a3f33b76a624dc952299aecccdc5d3fb49d0fb55..688917adfb8d10c9a43e59e5c79165db4b852af2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELUNIT_HXX__
 #define __INTERPKERNELUNIT_HXX__
index 5a97db3ddb95c4365d9f2070bf4e8bec0ea0184a..6564cfd252f78c6ae4207949cd156471016f3413 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelValue.hxx"
 #include "InterpKernelFunction.hxx"
index 01581024db67327c2963c54f9ab7200ee409bcdb..71d5bf0f07727efab5a87609bd740d11d3e1de03 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELVALUE_HXX__
 #define __INTERPKERNELVALUE_HXX__
index 95c78f3d50d77abd73f5c29742cd798e7551a111..9b003ce1dbc7b8be52e366bd532b03cab28d7332 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __GENMATHFORMULAE_HXX__
 #define __GENMATHFORMULAE_HXX__
index 694ebd113ab5fe7c04958a8f214070d025dcc919..c30b1f698971f1cbc72b9b6c62741a51840378bb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DAbstractEdge.hxx"
 #include "InterpKernelGeo2DComposedEdge.hxx"
index 37a3fb51df8cfdfc4f4361f80e08c691ecef106d..b0c5b4e2bda615394c794089aec684fe20049c3d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DABSTRACTEDGE_HXX__
 #define __INTERPKERNELGEO2DABSTRACTEDGE_HXX__
index e4c5f9187984eb3a9787fd54d13f54a3f3d943c7..8a9902f08a2c6bcbb89b2d800414011a77015d0c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DBounds.hxx"
 #include "InterpKernelException.hxx"
index 77e0095433809db53f191384de2155eec5b61b63..8780aae35d47126ad512a3a50b1258d1892666da 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DBOUNDS_HXX__
 #define __INTERPKERNELGEO2DBOUNDS_HXX__
index c57210de9e049d6b22169eaa9c78f5d4d0c7cb98..ed800c1b89e217706e60e87e4c20405eeeb53cf2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DComposedEdge.hxx"
 #include "InterpKernelGeo2DElementaryEdge.hxx"
index 62b56d7fb1d2aafd62d0fba5ba33264868351548..8fbf7bd2e8932a7091b6eac2dd782c5085d3f762 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DCOMPOSEDNODE_HXX__
 #define __INTERPKERNELGEO2DCOMPOSEDNODE_HXX__
index 257667df8cc4258254c2e6436ddcc41a9000317d..182fb25801041efb00b7b98af573aab9e5dcc508 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdge.hxx"
 #include "InterpKernelGeo2DEdgeLin.hxx"
index bc8a1dcb70e4329ca7d24ede751fec2dd7ef5ea7..36526ab17240277e62d56b72179632db02c7ff53 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGE_HXX__
 #define __INTERPKERNELGEO2DEDGE_HXX__
index ed9dc5298f7348e01bfb504b0ba7e2ed035773d7..18502eb6a8b8f4bd90be6b6b82017f8dadbee3c6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPKERNELGEO2DEDGE_TXX__
 #define __INTERPKERNELGEO2DEDGE_TXX__
 
index 551056cecc4d05c83ee251d6d92cc37b7048c2b8..5c079b185cc1738784e0439b7369d05e0679da2c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdgeArcCircle.hxx"
 #include "InterpKernelGeo2DEdgeLin.hxx"
index 921723688bd75ca982c3fb4305d759d4b98c8c2c..4faf2d5e4b8c9ea883eff931e093c7a5da9005fa 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGEARCCIRCLE_HXX__
 #define __INTERPKERNELGEO2DEDGEARCCIRCLE_HXX__
index dceb2addc3d1430d24eff8170a0609b9653c3c95..a1150cb968351147fb11dc78c5b54a5963f35a62 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdgeInfLin.hxx"
 
index dffd43d4c5281b6d9facf0f32c507279b89384a4..9159140979d49c6b2efb39f93df839703b1f9575 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGEINFLIN_HXX__
 #define __INTERPKERNELGEO2DEDGEINFLIN_HXX__
index 1a7b3cc3b40d3dbec346292fe21860d66dcc5bb2..dfe1f81d5c8bd6468e54c966af12531a2756417e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DEdgeLin.hxx"
 #include "InterpKernelGeo2DNode.hxx"
index d5b212bcf2b7e2678d928a39158e6c58c2ce0c29..d8332e7d03b2741e3ba6b94c6a4eb5568d8ba102 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DEDGELIN_HXX__
 #define __INTERPKERNELGEO2DEDGELIN_HXX__
index a2a222f70b26a0f0677272baefc403df8fb7c17c..dd1e0ab02e077e751930204795229de620510f3a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DElementaryEdge.hxx"
 #include "InterpKernelException.hxx"
index 8611fe1730d785f5527ec9260f72297e8bb748c9..17b2459e9cf12e236fb40922cccbdf10de04313a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DELEMENTARYEDGE_HXX__
 #define __INTERPKERNELGEO2DELEMENTARYEDGE_HXX__
index 03c3445f9a02190db137e3c1d2f0f891b416cee6..e345cccf70b37c8e3a8f207705b4babd6a896a75 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DNode.hxx"
 #include "InterpKernelGeo2DEdgeArcCircle.hxx"
index 2d1a9d5e386bd44d66b693436dc14f1caa1ab46a..48ebe58e1928dc0a93b8199fbf15954e55a8ded7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DNODE_HXX__
 #define __INTERPKERNELGEO2DNODE_HXX__
index e5e453f7f6911456549aa8978e49f0ca36855ee7..c3edf2dc405cd7af49f3b10cc19dd05c4b9ff4b9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DPrecision.hxx"
 
index 83504ea8b9525502c6e9312cf984b15260b729c1..a8313481fbdc5974e67ce15ab7ff2fb600f1ef50 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DPRECISION_HXX__
 #define __INTERPKERNELGEO2DPRECISION_HXX__
index c85d413c56a2da71472a951384097816392d022c..66e3a9b500825da1c5ae4623120714184a03f6c1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
 #include "InterpKernelGeo2DElementaryEdge.hxx"
index a7beda997e8009cba1a0bc16e776c48bd676ad94..d98b20dcdc68d8e7844941d1668777fd97092cb5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELGEO2DQUADRATICPOLYGON_HXX__
 #define __INTERPKERNELGEO2DQUADRATICPOLYGON_HXX__
index 69879f51b2a0c97b11d2f4d4b9862dec3544bafa..4f408f705201db6da306f6e16da97e541255ae02 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __GEOMETRIC2DINTERSECTOR_HXX__
 #define __GEOMETRIC2DINTERSECTOR_HXX__
index a78d233dd145dbc2e88c072bb7041ead5e1195cb..6895011619b2d552c2c4606820dea4484aa94edd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __GEOMETRIC2DINTERSECTOR_TXX__
 #define __GEOMETRIC2DINTERSECTOR_TXX__
 
index 71cfebb7de3907e708fed0b48aa17d3fb482d410..c6701a78b7648915c8e65f56b2384240ee0dcf06 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTEGRALUNIFORMINTERSECTOR_HXX__
 #define __INTEGRALUNIFORMINTERSECTOR_HXX__
index 0d46d983e0309f97223b9ae3292316c5eeb44f33..efd74e62c7e203cc9f59475e46a0481e60088e61 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTEGRALUNIFORMINTERSECTOR_TXX__
 #define __INTEGRALUNIFORMINTERSECTOR_TXX__
 
index 1200fcf85185e9d7e649e7841b51167b3b50ad83..5ed816146d6b2e1d8c43168be2f30f91e77f119e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelCellSimplify.hxx"
 #include "CellModel.hxx"
index 34585260ede2dc24d526c4d02c5803ac6fad935e..0b8b2afa7b7b6e62b5be4cbca19712efae6e7601 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELCELLSIMPLIFY_HXX__
 #define __INTERPKERNELCELLSIMPLIFY_HXX__
index 97ba6bff8968f0339993400e82617f9c5ae2bb2e..988f343cefbe6cc9752aef7e775ead027b4f7c76 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelMatrixTools.hxx"
 #include "InterpKernelAutoPtr.hxx"
index 7f59ee9936a8f91a09242cd19d448756988412f0..68863a22474e41eaf3c5635f880da80965cc9c22 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELMATRIXTOOLS_HXX__
 #define __INTERPKERNELMATRIXTOOLS_HXX__
index c3f27f1aba950a1991a87fcf134bbcbf963f7ef9..06f6d325d545c2902c9fea55c8481e754b74504e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpKernelMeshQuality.hxx"
 
index 95e30f5c27c76d06725e0c61cff9eea87d87b523..158d8519378f303916ad5cfb9c81d370e67d2ecb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPKERNELMESHQUALITY_HXX_
 #define __INTERPKERNELMESHQUALITY_HXX__
index 38951463cb199bf7d55051f55574b50bcb2f254b..3c5eab1316e210bd112256f59b61b3e7aeec435f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION_HXX__
 #define __INTERPOLATION_HXX__
index 3ac70163fd6182d0c2a3f21e5a1b0665dbae14ac..201b4467151a798485760407c4cb8cd89592386d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION_TXX__
 #define __INTERPOLATION_TXX__
 
index 37e36de45167f0e5e3c000626b3d113f175e0c81..cbb72ba25ab34a358dacc1925fdedb8ab625b3c3 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION1D_HXX__
 #define __INTERPOLATION1D_HXX__
index 174c18291d28e2bc6da38b5ebff8990b0f3acbd4..b7e40eff0f6fa8c69b7016d01add7824e7ea5ae3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION1D_TXX__
 #define __INTERPOLATION1D_TXX__
 
index 6551ebda4ec8dcc4490318769c128b7552654276..849f3af9e020661f3996980dccf33c664f5e4be2 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION2D_HXX__
 #define __INTERPOLATION2D_HXX__
index aa44100963158c7805b7789089406e6129da8b61..2555f4ada2b130d1d90745652cc6524f650c089e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION2D_TXX__
 #define __INTERPOLATION2D_TXX__
 
index f1a0b76f4bfd632df8f93515e71f68b1157331a2..64f0db9edd7ed4e41eddca42607de0dead452cb5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION2D1D_HXX__
 #define __INTERPOLATION2D1D_HXX__
index e84d07dec7238add8ee7636a470c526231371b4e..862c120775106d18db456c678de8f0edbb6d6e2e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION2D1D_TXX__
 #define __INTERPOLATION2D1D_TXX__
 
index c1cfa381c2b94ff054df81a742ea8cc32599b19b..779b9bafe028426cd3f4e54737b11553be7a8b71 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "Interpolation2DCurve.hxx"
 #include "InterpolationCurve.txx"
index d1c2f76533ec524b5de90a690dae7cf69b7c66fc..1ddf9ed7c4ec6b1dd70d625855500363da5225b8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION2DCURVE_HXX__
 #define __INTERPOLATION2DCURVE_HXX__
index d2401e3d1d8eecaec02e6c3ee8ecf012c1e5d7d0..edaad1408a0c4a7ae7af9a028455b6a6834a3c4b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "Interpolation3D.hxx"
 #include "Interpolation3D.txx"
index 247ca14a202102fb786d98d387cd3b1e702a355f..128eedcfbfead98a5eaf3a524ff530c718fc90db 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION3D_HXX__
 #define __INTERPOLATION3D_HXX__
index 248207e02e07b8e0f457a0e1a5208967990dd59b..c293c745fb46191446a377e10efbeaf0c3f6a98b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATION3D_TXX__
 #define __INTERPOLATION3D_TXX__
 
index 488ca2b857548f202efbcc517de5793919209b13..8126ae823aaef2e19400af864868ed663fe7b8eb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "Interpolation3DSurf.hxx"
 #include "InterpolationPlanar.txx"
index ede723162bd3f2a737b2c476e404b6c33bf2be2a..68a05d12db587016482ac8c7a97b5d93ed06093e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATION3DSURF_HXX__
 #define __INTERPOLATION3DSURF_HXX__
index 35dbd6799f3654138ce76c392f3b8abcd475e5ff..a88801482c4e08d6c07831cd4e539d013554ca20 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONCURVE_HXX__
 #define __INTERPOLATIONCURVE_HXX__
index 86ec617440b4e54b9c519f0d1fd85dc579cbc3df..dc45b61ae0b2cc3bf93e18a90fbdc99b3303e399 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATIONCURVE_TXX__
 #define __INTERPOLATIONCURVE_TXX__
 
index 2e2e7def7193764f69bdde32a9ff52399fafbe4b..94ab498ff92e732e03a5fc6b590dbc8de8758831 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "InterpolationOptions.hxx"
 
index d9c51d70af1883a1716c823a516a920ef3211f38..6ba269bb7427b11c515bd71688baf11a786f217e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONOPTIONS_HXX__
 #define __INTERPOLATIONOPTIONS_HXX__
index c30cd81f44002fafae6db004726d68c102a9b2e8..6d9cdd17190030b457f6b35f1d13e3bbfacdce0a 100755 (executable)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONPLANAR_HXX__
 #define __INTERPOLATIONPLANAR_HXX__
index 2ba5aafe895925c0ada0894dbae513575392c8a1..07fd4d5e9562d813f37fc738122d27e8fb090a30 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERPOLATIONPLANAR_TXX__
 #define __INTERPOLATIONPLANAR_TXX__
 
index af7fdfcc93aad5cd681a39820d0be5e55e0f89e2..80cdb8d72986e63f90463af5cbcdfa656f9284f2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERPOLATIONUTILS_HXX__
 #define __INTERPOLATIONUTILS_HXX__
@@ -437,7 +438,7 @@ namespace INTERP_KERNEL
             T21 = n[0][_Y]-n[2][_Y], T22 = n[1][_Y]-n[2][_Y];
           // matrix determinant
           double Tdet = T11*T22 - T12*T21;
-          if ( std::fabs( Tdet ) < std::numeric_limits<double>::min() )
+          if ( (std::fabs( Tdet) ) < (std::numeric_limits<double>::min()) )
             {
               bc[0]=1; bc[1]=bc[2]=0; // no solution
               return;
index 9ab3f7b7836d3601a53261029643f41328d48647..47e39122e90f33ea7f7582c354d43c8706e041ae 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3D_HXX__
 #define __INTERSECTOR3D_HXX__
index 05b5c94094ff4bb571bf1c56833f3fa6fe292eeb..67ce5941b5a788a7bdece6574ea666dcc31a5c82 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3D_TXX__
 #define __INTERSECTOR3D_TXX__
 
index 243ce6ff4d19207451f83c6573ff3e3ff3a904be..7355f6eb103643b73cefcccba8f2e42c99f5befe 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3DP0P0_HXX__
 #define __INTERSECTOR3DP0P0_HXX__
index 1ab4b5a44055a01923258a10c46bc8602f3e0e8d..5ad2fee71064249bb2354256f6144b57d677c5d3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3DP0P0_TXX__
 #define __INTERSECTOR3DP0P0_TXX__
 
index 98a2476148fc0994d5eda30cc3a4443487c6c5fd..4b1dafab03498825a2961cf929d56fb1de587816 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3DP0P1_HXX__
 #define __INTERSECTOR3DP0P1_HXX__
index 50dc45eac35c47d54a62ef8b99e1206f59cfcd74..6abdb882899650b2e8b8e456a89d361a28030db1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3DP0P1_TXX__
 #define __INTERSECTOR3DP0P1_TXX__
 
index cc7f494c87f6874a76a6009e21f9cd0c4a8a5809..923b0145d172ee5b7b821a5c1edb759a2e35ace5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __INTERSECTOR3DP1P0_HXX__
 #define __INTERSECTOR3DP1P0_HXX__
index e302323f55d2e79801f0dd42afc1cd18f78ee54e..bda1c1931123ee22aba0b29bd62ab539013d51ff 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __INTERSECTOR3DP1P0_TXX__
 #define __INTERSECTOR3DP1P0_TXX__
 
index a08948afe27f1b6340fccc93ad7d1958c8f0a92a..5adbc1fe0c648a0648e01227588633a493ff6fdc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __Intersector3DP1P0Bary_HXX__
 #define __Intersector3DP1P0Bary_HXX__
index de36ddd78ecc1d6bc657704be38195fcefd4a797..0328a0927ad0afd9e5663287cefd3a16d1afbb5c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __Intersector3DP1P0Bary_TXX__
 #define __Intersector3DP1P0Bary_TXX__
 
index 13c495aefddcc0ca63c288045323bdeffaf595d5..a636a63929ed7237806cc7db318d7f22638ce3e7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __Intersector3DP1P1_HXX__
 #define __Intersector3DP1P1_HXX__
index 03698f4d62c0d9ccda8909fbfbe0bc95d5d4c2eb..f620322675c2b6f56ac8f2cf233757582c1e9b0c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __Intersector3DP1P1_TXX__
 #define __Intersector3DP1P1_TXX__
 
index b159689f27424d8dfa1dce9c66488efd50cb0f8b..9b89117b2eda941b3c4510d8f0c5d10621379da4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANAR2D1DINTERSECTORP0P0_HXX__
 #define __PLANAR2D1DINTERSECTORP0P0_HXX__
index 758df4d5595785a763e0ef6f1cd4c32703bb14a5..0d4a9eb85a751d45f7289b054228eeb317415486 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANAR2D1DINTERSECTORP0P0_TXX__
 #define __PLANAR2D1DINTERSECTORP0P0_TXX__
 
index d25b81d4f71a9ddb41b94f66be0ce5bd5a7ccdbe..e1552c5cf00983e782ce1a4ef983d45df0dda89e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTOR_HXX__
 #define __PLANARINTERSECTOR_HXX__
index 5323eda430d69f5ae6361779d1e9a9f63a0f4edb..ff351fb899c7a26d68c04c2856eca58e5281f9a0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTOR_TXX__
 #define __PLANARINTERSECTOR_TXX__
 
index 9e5249d629499f6d35b6f7ee1c0ee7b933337562..f0e96825c69fb1f055e41627f348787301fb04df 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP0P0_HXX__
 #define __PLANARINTERSECTORP0P0_HXX__
index f698b984dd78dcc4fe956497eed5e5c8b0fc4479..c62357b1a48a238d44b7a3d36c409e127cd014ae 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP0P0_TXX__
 #define __PLANARINTERSECTORP0P0_TXX__
 
index c6083a228f2e37385c4b5d88cf720a78bd682ff8..5f1107b115812eedd2b79f3eee9552edc93c3f8e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP0P1_HXX__
 #define __PLANARINTERSECTORP0P1_HXX__
index 48343d92af343c47d43cda83ff8de72ad55154d5..090929db69e865a35f5c1e8fbbfb8a48b7e8783b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP0P1_TXX__
 #define __PLANARINTERSECTORP0P1_TXX__
 
index 10b47cfc85bdf56054c7c18129b13368312c663d..c5f22d409898d759b51a27749dbe986868adeee1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP0P1PL_HXX__
 #define __PLANARINTERSECTORP0P1PL_HXX__
index 6537c7bf4bd9a1a72c9d8135a5223729adbd6fb7..902c86a22311447507219ceb20c1d52e67013315 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP0P1PL_TXX__
 #define __PLANARINTERSECTORP0P1PL_TXX__
 
index 29459a510b858b53803fcd5de9d6c109955cd248..50dc049870707b38bb35c1127360be26406f4c8c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P0_HXX__
 #define __PLANARINTERSECTORP1P0_HXX__
index 27f598702ae6c0181253b1f1c55bd75c20369746..22ebb93a9f933aa2989a50f51e91de0d1b32a661 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P0_TXX__
 #define __PLANARINTERSECTORP1P0_TXX__
 
index 1ea4f480f82f3788d8fcbbda3f44bb04c14e9acf..2d3260316395bf69ce74ddd31dd5321a7444c35b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PlanarIntersectorP1P0Bary_HXX__
 #define __PlanarIntersectorP1P0Bary_HXX__
index a9079580b440c2a9934b59a04e71ca99b8f9d6e2..a8bd8bc8e8a1925330ac5c11aec87d754504f17c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PlanarIntersectorP1P0Bary_TXX__
 #define __PlanarIntersectorP1P0Bary_TXX__
 
index fe82a84e771f8010d33b02eef5d0fe3a0c9d0df4..47def33d0def9d68313aefa2d3a2adc46290e80a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P0PL_HXX__
 #define __PLANARINTERSECTORP1P0PL_HXX__
index 311c724de94616284a594eb886f1da3d27c1689d..0f0ab958267ca744951d442d36c9064b2dc8dff5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P0PL_TXX__
 #define __PLANARINTERSECTORP1P0PL_TXX__
 
index 1168345d847357a538cd62e7d6a87727da7ceec3..26f77918a990119b267d56898884cbc69f13cc03 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P1_HXX__
 #define __PLANARINTERSECTORP1P1_HXX__
index 707cafeb2ab210866ccf44fc2a29d1d9e92b8fd2..9507a63b43ca999171e5ed9f05658ecf58e03167 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P1_TXX__
 #define __PLANARINTERSECTORP1P1_TXX__
 
index f2e9c6190c297f1363fa3f1ee9588f7e12ef5dd2..d43edaa58456d9445d4ff66c93c164c631c1178d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PLANARINTERSECTORP1P1PL_HXX__
 #define __PLANARINTERSECTORP1P1PL_HXX__
index 353240def9a1b2fa6cf06594fc6594443c1fb33f..61bdd13f1d2133f682da00c4060324089614ecbb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PLANARINTERSECTORP1P1PL_TXX__
 #define __PLANARINTERSECTORP1P1PL_TXX__
 
index a45ee36853d475079445e6a0ed72432541349104..8971dc9e771f4e1e939c732fb2ec4bdfe41be1c4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATORINTERSECTOR_HXX__
 #define __POINTLOCATORINTERSECTOR_HXX__
index 080dc9c4e0bedef46e4f871bd922c68174493bee..14429bb5ecc0410fdd281d959438d024baa2fd6d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATORINTERSECTOR_TXX__
 #define __POINTLOCATORINTERSECTOR_TXX__
 
index 1831ff9088a99d5b3eb4e6346327d748ce8b4990..3b4081ec2f4f653517851afda96fe77e17658b67 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP0P0_HXX__
 #define __POINTLOCATOR3DINTERSECTORP0P0_HXX__
index 043df337e97a433844ca0a290e7be196df876705..5cfa1321cfd3fa0f77011a6f5e42a11bc365619b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP0P0_TXX__
 #define __POINTLOCATOR3DINTERSECTORP0P0_TXX__
 
index 13bc98cac733d6d508369784df91d6ed04ae6e6f..345bac94482ef8a1694875230e49dd4276911de5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP0P1_HXX__
 #define __POINTLOCATOR3DINTERSECTORP0P1_HXX__
index 0ea7ddc804c66adeb772ff7a1d30f9f273708601..33d9d6883bdc653d31a0690c44d1946cc1217135 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP0P1_TXX__
 #define __POINTLOCATOR3DINTERSECTORP0P1_TXX__
 
index 4dd3f26ca25ed971e08e9b849038518b3827b27e..dab5aa63c2726449bc3e88da83add1b711eec920 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP1P0_HXX__
 #define __POINTLOCATOR3DINTERSECTORP1P0_HXX__
index 3a941337d517d00a370afc71d4a410deb3631979..bad0d01cba2522e0e4544582905cee66bbaeb727 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP1P0_TXX__
 #define __POINTLOCATOR3DINTERSECTORP1P0_TXX__
 
index 9951eea526339ded0ef0ac281e8765323496c09f..ec88c82740ef542b8e21dad6d5193c99c39a56da 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POINTLOCATOR3DINTERSECTORP1P1_HXX__
 #define __POINTLOCATOR3DINTERSECTORP1P1_HXX__
index 1cffba133b94f52ce6b4096df72c9531000eb6f4..d6baf689fc274e7b52a40f82dc1a9a3e4f4db5c8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATOR3DINTERSECTORP1P1_TXX__
 #define __POINTLOCATOR3DINTERSECTORP1P1_TXX__
 
index db6972d2a65fffc2c077e44636c8184780c038c8..0ac908044e838c53d5e3311f33629c3b44959d87 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POINTLOCATORALGOS_TXX__
 #define __POINTLOCATORALGOS_TXX__
 
index 6e746ef055c1fc17bad4adecfc3e18fcf9294978..fd039593c8fddad134341d36a10706c5b5622623 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POLYHEDRONINTERSECTORP0P0_HXX__
 #define __POLYHEDRONINTERSECTORP0P0_HXX__
index 61011e735222e1511c115b864c2d22c0e093f389..ba5ea83b8fac3613406424bae70799ed8f2a6702 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POLYHEDRONINTERSECTORP0P0_TXX__
 #define __POLYHEDRONINTERSECTORP0P0_TXX__
 
index 024ce9b68dc1b5fbbe44b3dfbcd31d8d3dd72200..75ef149baf59137a4c7c775cdcc35098a114432e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POLYHEDRONINTERSECTORP0P1_HXX__
 #define __POLYHEDRONINTERSECTORP0P1_HXX__
index 8786b3f769f4890574de1003b35b8f2aa86f90e6..f41bca07d58fb3a38077b8a8309873d37d473431 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POLYHEDRONINTERSECTORP0P1_TXX__
 #define __POLYHEDRONINTERSECTORP0P1_TXX__
 
index c3e257d22cb13f47456a251bc0e102304c2a5684..486f35394689dab748ef8fa7cdcd00892d457c7d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __POLYHEDRONINTERSECTORP1P0_HXX__
 #define __POLYHEDRONINTERSECTORP1P0_HXX__
index 962fd76e5cdd017d631a25699166bf6114167439..7e56de719bdd66874dbde9c3f235da787c1a6496 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __POLYHEDRONINTERSECTORP1P0_TXX__
 #define __POLYHEDRONINTERSECTORP1P0_TXX__
 
index b6d6f7c15566287fddccd5d86ff8530dc32f1f89..982586ecb0a7584dbab948129211e3e98dc98cc8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PolyhedronIntersectorP1P0Bary_HXX__
 #define __PolyhedronIntersectorP1P0Bary_HXX__
index 884adf1fd93f129eb4d5b67ace41484cd0ddc7b2..044e68acb208e441f6a4006527177509911e9e62 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PolyhedronIntersectorP1P0Bary_TXX__
 #define __PolyhedronIntersectorP1P0Bary_TXX__
 
index fc65a7f10b7443bf1073800941cafb6fde682457..346a14e3398d1a2c210256ff7fe0d2c50caa4d36 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PolyhedronIntersectorP1P1_HXX__
 #define __PolyhedronIntersectorP1P1_HXX__
index 31a26e7df5413c062199bb10f6270a71502b1061..3d3cfb88d97412e8ab6be6e4b32b2c5885985b5a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PolyhedronIntersectorP1P1_TXX__
 #define __PolyhedronIntersectorP1P1_TXX__
 
index 1023394af8683ae09dbbb2e8464a2349b135b7f2..c1a898a9917db478330320de17aad5697f1aa221 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __TARGETINTERSECTOR__HXX__
 #define __TARGETINTERSECTOR__HXX__
index d7f7a4e32def8b7281ca27744fce273a379192d6..8372c4a386f1593db7141627671276684715e223 100644 (file)
@@ -33,7 +33,7 @@
 
 #include "Log.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning(disable:4251)
 #endif
 
index 99959cd2cc22eeb31b8ea6399f75b7490bbed257..170a8f12099b6e74e531c8a9dbdb3e6db050d369 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __TRIANGULATIONINTERSECTOR_HXX__
 #define __TRIANGULATIONINTERSECTOR_HXX__
index 3cc53f66eca0394769a936e026ddd286c7a2b11b..53363c96b712f105cbe2d258c39e46c36726a1f2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __TRIANGULATIONINTERSECTOR_TXX__
 #define __TRIANGULATIONINTERSECTOR_TXX__
 
index 49bf127f9600f84dd682cc8ee20324d86de18a67..f533492df0078366c43481fb84357991c71892fa 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __VTKNORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __VTKNORMALIZEDUNSTRUCTUREDMESH_HXX__
index 3baae70f2591da16c7881d0a5a2953e50bbebcd9..e326ec4aeba15192f1dceaa8e1955a9194536558 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __VTKNORMALIZEDUNSTRUCTUREDMESH_TXX__
 #define __VTKNORMALIZEDUNSTRUCTUREDMESH_TXX__
 
index b1e815effbc233790c0069e2d884d0ea89f8672a..b7ad4fdb568ed4a8afaa7859d4391dbde09daee9 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __VOLSURFFORMULAE_HXX__
 #define __VOLSURFFORMULAE_HXX__
index 09fe9967afbe1ed1bd4d7c2eb6cca0020a6c4632..e6f877bf48cbe1a17a93e431e1179c0d220389fd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __VOLSURFUSER_HXX__
 #define __VOLSURFUSER_HXX__
index 31988e3e0789833975299db2fd75be962261693d..5e4f6129dc9015b689620ac97e65dcf6dd623855 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __VOLSURFUSER_TXX__
 #define __VOLSURFUSER_TXX__
 
index b8cf746fb5d042d381a6e5511e91ad52c51fa681..658a3cee1e2b609c3d0c9d9b2c89eb4390628a49 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${CPPUNIT_INCLUDE_DIRS}
@@ -67,17 +68,18 @@ IF(NOT MED_ENABLE_MICROMED)
     PerfTest.cxx
     )
   ADD_EXECUTABLE(PerfTest ${PerfTest_SOURCES})
-  SET_TARGET_PROPERTIES(PerfTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(PerfTest InterpKernelTest ${CPPUNIT_LIBS})
+  SET_TARGET_PROPERTIES(PerfTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(PerfTest InterpKernelTest ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
+  INSTALL(TARGETS PerfTest DESTINATION ${MED_salomebin_BINS})
 ENDIF(NOT MED_ENABLE_MICROMED)
 
 ADD_LIBRARY(InterpKernelTest SHARED ${InterpKernelTest_SOURCES})
-SET_TARGET_PROPERTIES(InterpKernelTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(InterpKernelTest medmem ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(InterpKernelTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(InterpKernelTest medmem interpkernel ${CPPUNIT_LIBS})
 
 ADD_EXECUTABLE(TestINTERP_KERNEL ${TestINTERP_KERNEL_SOURCES})
-SET_TARGET_PROPERTIES(TestINTERP_KERNEL PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestINTERP_KERNEL InterpKernelTest ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestINTERP_KERNEL PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestINTERP_KERNEL InterpKernelTest ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestINTERP_KERNEL TestINTERP_KERNEL)
 
 INSTALL(TARGETS TestINTERP_KERNEL DESTINATION ${MED_salomebin_BINS})
index 9178175fe1520ad7c20dd4d350c351ab08589b6c..85192e313a7854b034447b128a854e49d81b29b1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "ExprEvalInterpTest.hxx"
 #include "InterpKernelExprParser.hxx"
index f631cb25095b4b42857b4b19c374c433d21dff55..88b7662b7a03aca84b8ec2169cf588c070e5cfe4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef _EXPREVALINTERPTEST_HXX_
 #define _EXPREVALINTERPTEST_HXX_
index 93e49afbde4078468ca5a80a00b99e5842c16336..c936b224a370d2ea4e52f99f8949b87ed5edd9ee 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef _INTERPKERNELTESTEXPORT_HXX_
 #define _INTERPKERNELTESTEXPORT_HXX_
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined InterpKernelTest_EXPORTS
 #    define INTERPKERNELTEST_EXPORT __declspec( dllexport )
 #  else
index a58f32b14c79987178708e6a9b68097019c86e6b..577887c6e028a137a8d862019ee26e3eb7a20938 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index 8024a21ac68cd9a901cd7c14e6ffa8026a594d7e..b9d39e01507d4487dedef77c983ba51593fb8481 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef _QUADRATICPLANARINTERPTEST_HXX_
 #define _QUADRATICPLANARINTERPTEST_HXX_
index 8eae1b8a8fd62c9bbeba9b45f900e9a1f0ef77ab..2781d503fb164a6c08e23b81334629c6fd2afcf1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index a249d3a1360ad7519333739fd4d2ad897badd796..7b22ab2ae99d61ffafc6eb6b4d34c4b94fa7db44 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index 9210694b4a8e56f1b73de12ad9109f712a2ea6cd..5ab41b33e10b7efcd163ddb3d68fc2b149d52c46 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index 329ce0f84397abb06e69e39ed37a00d364abc756..111b61aa389e352dc35af151182f703c0e263571 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "QuadraticPlanarInterpTest.hxx"
 #include "InterpKernelGeo2DQuadraticPolygon.hxx"
index a6362e34c59b57a4f538e5789a0ce21482d72f03..0fdffb561acf0eb2921055175bff28a92459066a 100644 (file)
@@ -21,6 +21,7 @@ INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${XDR_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}/../../idl
@@ -29,16 +30,23 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/GaussPoints
-  )
+)
 
 SET(MEDEngine_SOURCES
   Med_Gen_i.cxx
   Med_Gen_Driver_i.cxx
-  )
+)
+
+SET(COMMON_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(WINDOWS)
+  SET(COMMON_FLAGS "${COMMON_FLAGS} -DNOGDI")
+ENDIF(WINDOWS
+)
 
 ADD_LIBRARY(MEDEngine SHARED ${MEDEngine_SOURCES})
-SET_TARGET_PROPERTIES(MEDEngine PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDEngine MEDMEMImpl SalomeIDLMED ${TOOLSDS} ${SalomeHDFPersist} ${SalomeContainer} ${SalomeCommunication} ${SalomeLifeCycleCORBA})
+SET_TARGET_PROPERTIES(MEDEngine PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
+TARGET_LINK_LIBRARIES(MEDEngine MEDMEMImpl SalomeIDLMED ${TOOLSDS} ${SalomeHDFPersist} 
+  ${SalomeContainer} ${SalomeCommunication} ${SalomeLifeCycleCORBA} ${PLATFORM_LIBS})
 INSTALL(TARGETS MEDEngine DESTINATION ${MED_salomelib_LIBS})
 
 SET(MED_MED_salomescript_DATA
index 9c9046e7740ec47e2039726c68583528032f5804..8b29aca918e0410bbc159bf8f72ca59ae97472a0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Swig)
 ADD_SUBDIRECTORY(Test)
@@ -24,6 +25,7 @@ INCLUDE_DIRECTORIES(
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}/../../idl
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCouplingCorba
@@ -47,8 +49,8 @@ SET(medcalculator_SOURCES
 )
 
 ADD_LIBRARY(medcalculator SHARED ${medcalculator_SOURCES})
-SET_TARGET_PROPERTIES(medcalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcalculator medloader medcouplingcorba ${KERNEL_LDFLAGS} ${SALOMELocalTrace} ${SalomeNS} ${OpUtil})
+SET_TARGET_PROPERTIES(medcalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcalculator medloader medcouplingcorba ${KERNEL_LDFLAGS} ${SALOMELocalTrace} ${SalomeNS} ${OpUtil} ${OMNIORB_LIBS} ${PLATFORM_LIBS})
 INSTALL(TARGETS medcalculator DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcalculator_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index eb2593a92584a2f6f050f9850bed69ab94fd0b5f..0ea866771b236e07b9411140ecbd9b472506bdb4 100644 (file)
@@ -16,8 +16,9 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -46,9 +47,13 @@ INSTALL(TARGETS medcalculatorspython DESTINATION ${MED_salomelib_LIBS})
 
 SET_SOURCE_FILES_PROPERTIES(MEDCalculator.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(MEDCalculator.i PROPERTIES SWIG_DEFINITIONS "-shadow")
-
 SWIG_ADD_MODULE(MEDCalculator python MEDCalculator.i)
-SWIG_LINK_LIBRARIES(MEDCalculator ${PYTHON_LIBRARIES} medcalculator)
+SWIG_LINK_LIBRARIES(MEDCalculator ${PYTHON_LIBS} medcalculator)
+SET_TARGET_PROPERTIES(_MEDCalculator PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCalculator PROPERTIES DEBUG_OUTPUT_NAME _MEDCalculator_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 
 FILE(GLOB medcalculatorspython_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
 INSTALL(FILES ${medcalculatorspython_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
index 5d320587b8a442d4c571516e5d01393fe08cfbd4..7f28318b22ed6bf2f21f0f5a6b081047501701f4 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
@@ -37,8 +38,8 @@ SET(TestMEDCalculator_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCalculator ${TestMEDCalculator_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCalculator medcalculatorspython medcalculator ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCalculator PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCalculator medcalculatorspython medcalculator ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCalculator TestMEDCalculator)
 
 INSTALL(TARGETS TestMEDCalculator DESTINATION ${MED_salomebin_BINS})
index 047589fa89695702b9f107bb6eb2da3b40c03a55..e2513eb99bb2fe38d6d47f377ebe1f4549d99af3 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Test)
 
@@ -54,11 +55,13 @@ SET(medcouplingremapper_SOURCES
   )
 
 ADD_LIBRARY(medcoupling SHARED ${medcoupling_SOURCES})
+SET_TARGET_PROPERTIES(medcoupling PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(medcoupling interpkernel)
 INSTALL(TARGETS medcoupling DESTINATION ${MED_salomelib_LIBS})
 
 ADD_LIBRARY(medcouplingremapper SHARED ${medcouplingremapper_SOURCES})
 TARGET_LINK_LIBRARIES(medcouplingremapper medcoupling)
+SET_TARGET_PROPERTIES(medcouplingremapper PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 INSTALL(TARGETS medcouplingremapper DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcoupling_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index d732798dedba48184141616b869c400d292b6e3e..0ca61624bf2c54eea439741c5671bc4df83cbc13 100644 (file)
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef _MEDCOUPLING_HXX_
 #define _MEDCOUPLING_HXX_
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined medcoupling_EXPORTS
 #    define MEDCOUPLING_EXPORT __declspec( dllexport )
 #  else
@@ -30,7 +31,7 @@
 #  define MEDCOUPLING_EXPORT
 #endif
 
-#ifdef WNT
+#ifdef WIN32
 #  if defined medcouplingremapper_EXPORTS
 #    define MEDCOUPLINGREMAPPER_EXPORT __declspec( dllexport )
 #  else
@@ -40,7 +41,7 @@
 #  define MEDCOUPLINGREMAPPER_EXPORT
 #endif
 
-#ifdef WNT
+#ifdef WIN32
 #pragma warning( disable : 4290 )
 #endif
 
index f9dc0efe3978676f3b9f5d80185a2171d6231c1b..fc0c0f4e9a5de28061d285c7dea7c935cbdb0895 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGAUTOREFCOUNTOBJECTPTR_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGAUTOREFCOUNTOBJECTPTR_HXX__
index 883b4c9ca767517c7b6eb3801a539f8987802605..bd6233b93535f961bc25e89d36b22004632c7673 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingCMesh.hxx"
 #include "MEDCouplingUMesh.hxx"
index d80a3e2a33b2db6d64582d2ebc871741168ea650..39407ebb61b38ad370837674e2035cd18a8ee09e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGCMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGCMESH_HXX__
index a43312d902d3ac47378101ff1c328776dd325a21..0d703ce733d547a18796208ac96780a986519c2a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingDefinitionTime.hxx"
 #include "MEDCouplingFieldDouble.hxx"
index 26ef19667d8286f6f2a2b022d7db1a7405e89500..2ef0464ebdfadc3d4042cbcda1c1fc18fd5a6a3b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGDEFINITIONTIME_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGDEFINITIONTIME_HXX__
index 71a7e65c8f244bed9270e3fd55c253d6c24b2bc0..663737af5d8b3b9e62070b86f2a9e1efd441d6a7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingExtrudedMesh.hxx"
 #include "MEDCouplingUMesh.hxx"
index fa3a3e1d90b5ca36b9e68b674ff533c88bb7105d..9dc8122edd43453ac3b90d391ca1e1f220f2eb62 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGEXTRUDEDMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGEXTRUDEDMESH_HXX__
index 6c598c084b1565f566765fd14506207ecc3ee266..08eb6970b29e1744561a2adbefcf106d4d5c117a 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingField.hxx"
 #include "MEDCouplingMesh.hxx"
index 162a17834324c7ef0da5e79dd0177e9acaa6c15b..439743ad56539c7b5265c3a6d946b30b33608686 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELD_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELD_HXX__
index 54b2ad6751e132c71b5198b0da195d95c61eaf70..2739ca421baee04a9a10e8fda3d0d6a09ed36dd7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldDiscretization.hxx"
 #include "MEDCouplingCMesh.hxx"
index 0bd0034616d45333825eca05e2c21c0dfe242d89..df43d95277b35b88f76c16117cd50c163994f8c5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDDISCRETIZATION_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDDISCRETIZATION_HXX__
index 5f208b5c6d66ebf40d0b4668b19aa1ee8aa802b4..170cf2ecbbaf6b7ab4bbeb5ddb5c6d05a02e13b2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldDouble.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
index 4d86fd3f8f19636eb896cb25ea19693ed7608c8d..3eac19dceb18b4e19d43a1960bc1eecc4dba57cc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDDOUBLE_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDDOUBLE_HXX__
index eed9db85b54872ce5ae1db1a358c63b98a57681c..280c69a2dfc1f4129c48f0df6e1fa4e7f9fa0704 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldOverTime.hxx"
 #include "MEDCouplingMesh.hxx"
index 4c353c8e68ce1fd8d4a6b6ab7fb98a9aa87575d7..f1daea33c0350f59cfd12d99dd55bc2faa0741cb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDOVERTIME_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDOVERTIME_HXX__
index 2a77f785fb571e9bbdaac526be79d35e46191cae..628ee6b7290715451833c32d6525def90b2f456b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingFieldTemplate.hxx"
 #include "MEDCouplingMesh.hxx"
index 7c731463e1770ab061489f4d7523af19b4ccb42d..d93411ecb0bff8a53a3c26fd7873ac7ad5bfdc5b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGFIELDTEMPLATE_HXX__
index eae9beab48a823397d28176d7da4836808c06668..1b5df9b077c53ebc7f57aa6d5fd3ae2f0c70b168 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingGaussLocalization.hxx"
 #include "CellModel.hxx"
index 2660f946e67599de9222480025f1a15efe69ac93..49f843e7e0757cea57664152a369ffcc51505930 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGGAUSSLOCALIZATION_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGGAUSSLOCALIZATION_HXX__
index 2dabb36d33c8ccfc693bb8dcbd4077f5b963b23c..a112e3edad4a4cce8654e2b2eb4a0e05711931ef 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMemArray.txx"
 #include "MEDCouplingAutoRefCountObjectPtr.hxx"
@@ -686,7 +687,7 @@ std::string DataArrayDouble::reprZip() const
 void DataArrayDouble::writeVTK(std::ostream& ofs, int indent, const char *nameInFile) const throw(INTERP_KERNEL::Exception)
 {
   std::string idt(indent,' ');
-  ofs.precision(15);
+  ofs.precision(17);
   ofs << idt << "<DataArray type=\"Float32\" Name=\"" << nameInFile << "\" NumberOfComponents=\"" << getNumberOfComponents() << "\"";
   ofs << " format=\"ascii\" RangeMin=\"" << getMinValueInArray() << "\" RangeMax=\"" << getMaxValueInArray() << "\">\n" << idt;
   std::copy(begin(),end(),std::ostream_iterator<double>(ofs," "));
@@ -708,14 +709,14 @@ void DataArrayDouble::reprZipStream(std::ostream& stream) const
 void DataArrayDouble::reprWithoutNameStream(std::ostream& stream) const
 {
   DataArray::reprWithoutNameStream(stream);
-  stream.precision(15);
+  stream.precision(17);
   _mem.repr(getNumberOfComponents(),stream);
 }
 
 void DataArrayDouble::reprZipWithoutNameStream(std::ostream& stream) const
 {
   DataArray::reprWithoutNameStream(stream);
-  stream.precision(15);
+  stream.precision(17);
   _mem.reprZip(getNumberOfComponents(),stream);
 }
 
@@ -1611,7 +1612,7 @@ void DataArrayDouble::SetArrayIn(DataArrayDouble *newArray, DataArrayDouble* &ar
     }
 }
 
-void DataArrayDouble::useArray(const double *array, bool ownership,  DeallocType type, int nbOfTuple, int nbOfCompo)
+void DataArrayDouble::useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo)
 {
   _nb_of_tuples=nbOfTuple;
   _info_on_compo.resize(nbOfCompo);
@@ -1619,6 +1620,14 @@ void DataArrayDouble::useArray(const double *array, bool ownership,  DeallocType
   declareAsNew();
 }
 
+void DataArrayDouble::useExternalArrayWithRWAccess(const double *array, int nbOfTuple, int nbOfCompo)
+{
+  _nb_of_tuples=nbOfTuple;
+  _info_on_compo.resize(nbOfCompo);
+  _mem.useExternalArrayWithRWAccess(array,nbOfTuple*nbOfCompo);
+  declareAsNew();
+}
+
 void DataArrayDouble::checkNoNullValues() const throw(INTERP_KERNEL::Exception)
 {
   const double *tmp=getConstPointer();
@@ -3299,7 +3308,7 @@ DataArrayDoubleTuple::DataArrayDoubleTuple(double *pt, int nbOfComp):_pt(pt),_nb
 
 std::string DataArrayDoubleTuple::repr() const
 {
-  std::ostringstream oss; oss.precision(15); oss << "(";
+  std::ostringstream oss; oss.precision(17); oss << "(";
   for(int i=0;i<_nb_of_compo-1;i++)
     oss << _pt[i] << ", ";
   oss << _pt[_nb_of_compo-1] << ")";
@@ -3324,7 +3333,7 @@ DataArrayDouble *DataArrayDoubleTuple::buildDADouble(int nbOfTuples, int nbOfCom
   if((_nb_of_compo==nbOfCompo && nbOfTuples==1) || (_nb_of_compo==nbOfTuples && nbOfCompo==1))
     {
       DataArrayDouble *ret=DataArrayDouble::New();
-      ret->useArray(_pt,false,CPP_DEALLOC,nbOfTuples,nbOfCompo);
+      ret->useExternalArrayWithRWAccess(_pt,nbOfTuples,nbOfCompo);
       return ret;
     }
   else
@@ -3792,6 +3801,14 @@ void DataArrayInt::useArray(const int *array, bool ownership,  DeallocType type,
   declareAsNew();
 }
 
+void DataArrayInt::useExternalArrayWithRWAccess(const int *array, int nbOfTuple, int nbOfCompo)
+{
+  _nb_of_tuples=nbOfTuple;
+  _info_on_compo.resize(nbOfCompo);
+  _mem.useExternalArrayWithRWAccess(array,nbOfTuple*nbOfCompo);
+  declareAsNew();
+}
+
 DataArrayInt *DataArrayInt::fromNoInterlace() const throw(INTERP_KERNEL::Exception)
 {
   if(_mem.isNull())
@@ -6418,7 +6435,7 @@ DataArrayInt *DataArrayIntTuple::buildDAInt(int nbOfTuples, int nbOfCompo) const
   if((_nb_of_compo==nbOfCompo && nbOfTuples==1) || (_nb_of_compo==nbOfTuples && nbOfCompo==1))
     {
       DataArrayInt *ret=DataArrayInt::New();
-      ret->useArray(_pt,false,CPP_DEALLOC,nbOfTuples,nbOfCompo);
+      ret->useExternalArrayWithRWAccess(_pt,nbOfTuples,nbOfCompo);
       return ret;
     }
   else
index 2fccfc1b6417a2e871001176d869be8562435e36..675a563ec7afd27401713c0a79b56d0ad0b67f24 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGMEMARRAY_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGMEMARRAY_HXX__
@@ -74,6 +75,7 @@ namespace ParaMEDMEM
     void alloc(int nbOfElements) throw(INTERP_KERNEL::Exception);
     void reAlloc(int newNbOfElements) throw(INTERP_KERNEL::Exception);
     void useArray(const T *array, bool ownership, DeallocType type, int nbOfElem);
+    void useExternalArrayWithRWAccess(const T *array, int nbOfElem);
     void writeOnPlace(int id, T element0, const T *others, int sizeOfOthers);
     ~MemArray() { destroy(); }
   private:
@@ -217,6 +219,7 @@ namespace ParaMEDMEM
     MEDCOUPLING_EXPORT const double *begin() const { return getConstPointer(); }
     MEDCOUPLING_EXPORT const double *end() const { return getConstPointer()+getNbOfElems(); }
     MEDCOUPLING_EXPORT void useArray(const double *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+    MEDCOUPLING_EXPORT void useExternalArrayWithRWAccess(const double *array, int nbOfTuple, int nbOfCompo);
     MEDCOUPLING_EXPORT void writeOnPlace(int id, double element0, const double *others, int sizeOfOthers) { _mem.writeOnPlace(id,element0,others,sizeOfOthers); }
     MEDCOUPLING_EXPORT void checkNoNullValues() const throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT void getMinMaxPerComponent(double *bounds) const throw(INTERP_KERNEL::Exception);
@@ -461,6 +464,7 @@ namespace ParaMEDMEM
     MEDCOUPLING_EXPORT DataArrayInt *duplicateEachTupleNTimes(int nbTimes) const throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT std::set<int> getDifferentValues() const throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT void useArray(const int *array, bool ownership, DeallocType type, int nbOfTuple, int nbOfCompo);
+    MEDCOUPLING_EXPORT void useExternalArrayWithRWAccess(const int *array, int nbOfTuple, int nbOfCompo);
     MEDCOUPLING_EXPORT void writeOnPlace(int id, int element0, const int *others, int sizeOfOthers) { _mem.writeOnPlace(id,element0,others,sizeOfOthers); }
     MEDCOUPLING_EXPORT static DataArrayInt *Add(const DataArrayInt *a1, const DataArrayInt *a2) throw(INTERP_KERNEL::Exception);
     MEDCOUPLING_EXPORT void addEqual(const DataArrayInt *other) throw(INTERP_KERNEL::Exception);
index 4c5339a8b6671a5e34484af5c29501115aa647cd..e569249d8dfddf3bdbbce777a9ca2d119c86e449 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __PARAMEDMEM_MEDCOUPLINGMEMARRAY_TXX__
 #define __PARAMEDMEM_MEDCOUPLINGMEMARRAY_TXX__
 
@@ -67,6 +68,16 @@ namespace ParaMEDMEM
     _dealloc=type;
   }
 
+  template<class T>
+  void MemArray<T>::useExternalArrayWithRWAccess(const T *array, int nbOfElem)
+  {
+    _nb_of_elem=nbOfElem;
+    destroy();
+    _pointer.setInternal(const_cast<T *>(array));
+    _ownership=false;
+    _dealloc=CPP_DEALLOC;
+  }
+  
   template<class T>
   void MemArray<T>::writeOnPlace(int id, T element0, const T *others, int sizeOfOthers)
   {
index be03bdd7d1bca6bdde3b65a0a1830eb9ceea0cdd..d226fd90dbba65c58f64984a755f0f9463937791 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMesh.hxx"
 #include "MEDCouplingUMesh.hxx"
index 4d8d69c14672893f965a55ea64777e808912926f..988ab77e9b12b717b2e25fa62669d5b080193211 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGMESH_HXX__
index 3586308b75a63752920aea2597379b9bcbcc10a9..94856e43d37ae78583cc142d0242f9f9d0545fb0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingMultiFields.hxx"
 #include "MEDCouplingFieldTemplate.hxx"
index 69445a724b76379db93ff5ada59685da48b962d3..16e25852c7e81d3a83a799db840b6046b5935458 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGMULTIFIELDS_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGMULTIFIELDS_HXX__
index 8344d7588bb6c3f81311695901d3b6eb20db35f8..818614ba0961dd6275e24fe345b0f1efd1c1332b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingNatureOfField.hxx"
 
index 314c62131822437a134165f3cd36eba9bec8334c..6bcf75abed116d4899c9ab8690c3f575422fb517 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGNATUREOFFIELD_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGNATUREOFFIELD_HXX__
index 60cbfdb34d7b1246dc22c698ae2940767a776021..a0ef2a55050827ada2d6d75d89e5e149ce69e112 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGNORMALIZEDCARTESIANMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGNORMALIZEDCARTESIANMESH_HXX__
index cffd88a3ab5ee2e4135d53825e507339a25ab481..4a2466b33c0828491df33db87084be3885d0d6d2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_HXX__
index 4ad2677b6e1a4e5c7c85c537f368f4c7159d2f05..8a9da83cf99fe14e898f6e01c711b45be9bfb8bf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 #ifndef __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
 #define __MEDCOUPLINGNORMALIZEDUNSTRUCTUREDMESH_TXX__
 
index f4aedb6a591d0bb7a8c462e21282e2c316d6b786..f2acae753adb5d922c755edfe9f4067e4736a9ee 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingPointSet.hxx"
 #include "MEDCouplingAutoRefCountObjectPtr.hxx"
index 88a0f3ecd1f0c23072cee360eab5f28461176da8..4e00e4770c1bde6f3bdce9a9fdd1ff5d7bb99432 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGPOINTSET_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGPOINTSET_HXX__
index ab245084ef27624e3b15d4a6b72bcbf05f640412..af387699bd6034d2fe42dc97a37f4501ce36e58e 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRefCountObject.hxx"
 
index c466315b385c8be839985c9763fcb16a32de7b27..f9084503e7618159511a81609646d2ba786613e5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGREFCOUNTOBJECT_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGREFCOUNTOBJECT_HXX__
index 3c5fa11f23cffa0d2084fc7ab4d3506ab56a16c9..0ef48eec7fb1ef0154f0dd4df3ca82f1068e1f08 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRemapper.hxx"
 #include "MEDCouplingMemArray.hxx"
@@ -705,3 +706,74 @@ const std::vector<std::map<int,double> >& MEDCouplingRemapper::getCrudeMatrix()
 {
   return _matrix;
 }
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method works on precomputed \a this->_matrix. All coefficients in the matrix is lower than \a maxValAbs this coefficient is
+ * set to 0. That is to say that its entry disappear from the map storing the corresponding row in the data storage of sparse crude matrix.
+ * This method is useful to correct at a high level some problems linked to precision. Indeed, with some \ref NatureOfField "natures of field" some threshold effect
+ * can occur.
+ *
+ * \param [in] maxValAbs is a limit behind which a coefficient is set to 0. \a maxValAbs is expected to be positive, if not this method do nothing.
+ * \return a positive value that tells the number of coefficients put to 0. The 0 returned value means that the matrix has remained unchanged.
+ * \sa MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrix
+ */
+int MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception)
+{
+  int ret=0;
+  std::vector<std::map<int,double> > matrixNew(_matrix.size());
+  int i=0;
+  for(std::vector<std::map<int,double> >::const_iterator it1=_matrix.begin();it1!=_matrix.end();it1++,i++)
+    {
+      std::map<int,double>& rowNew=matrixNew[i];
+      for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+        {
+          if(fabs((*it2).second)>maxValAbs)
+            rowNew[(*it2).first]=(*it2).second;
+          else
+            ret++;
+        }
+    }
+  if(ret>0)
+    _matrix=matrixNew;
+  return ret;
+}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method works on precomputed \a this->_matrix. All coefficients in the matrix is lower than delta multiplied by \a scaleFactor this coefficient is
+ * set to 0. That is to say that its entry disappear from the map storing the corresponding row in the data storage of sparse crude matrix.
+ * delta is the value returned by MEDCouplingRemapper::getMaxValueInCrudeMatrix method.
+ * This method is useful to correct at a high level some problems linked to precision. Indeed, with some \ref NatureOfField "natures of field" some threshold effect
+ * can occur.
+ *
+ * \param [in] scaleFactor is the scale factor from which coefficients lower than \a scaleFactor times range width of coefficients are set to zero.
+ * \return a positive value that tells the number of coefficients put to 0. The 0 returned value means that the matrix has remained unchanged. If -1 is returned it means
+ *         that all coefficients are null.
+ * \sa MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrixAbs
+ */
+int MEDCouplingRemapper::nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception)
+{
+  double maxVal=getMaxValueInCrudeMatrix();
+  if(maxVal==0.)
+    return -1;
+  return nullifiedTinyCoeffInCrudeMatrixAbs(scaleFactor*maxVal);
+}
+
+/*!
+ * This method is supposed to be called , if needed, right after MEDCouplingRemapper::prepare or MEDCouplingRemapper::prepareEx.
+ * If not the behaviour is unpredictable.
+ * This method returns the maximum of the absolute values of coefficients into the sparse crude matrix.
+ * The returned value is positive.
+ */
+double MEDCouplingRemapper::getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception)
+{
+  double ret=0.;
+  for(std::vector<std::map<int,double> >::const_iterator it1=_matrix.begin();it1!=_matrix.end();it1++)
+    for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+      if(fabs((*it2).second)>ret)
+        ret=fabs((*it2).second);
+  return ret;
+}
index b09539ec405af3653dedee3f876729613d9028ab..c2005df8e26a8e477a5a635f99f8591c060743de 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGREMAPPER_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGREMAPPER_HXX__
@@ -54,6 +55,10 @@ namespace ParaMEDMEM
     MEDCOUPLINGREMAPPER_EXPORT bool setOptionInt(const std::string& key, int value);
     MEDCOUPLINGREMAPPER_EXPORT bool setOptionDouble(const std::string& key, double value);
     MEDCOUPLINGREMAPPER_EXPORT bool setOptionString(const std::string& key, const std::string& value);
+    //
+    MEDCOUPLINGREMAPPER_EXPORT int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
+    MEDCOUPLINGREMAPPER_EXPORT int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
+    MEDCOUPLINGREMAPPER_EXPORT double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
   public:
     MEDCOUPLINGREMAPPER_EXPORT const std::vector<std::map<int,double> >& getCrudeMatrix() const;
     MEDCOUPLINGREMAPPER_EXPORT static void PrintMatrix(const std::vector<std::map<int,double> >& m);
index 1f4e1fef5ad0f1bf3e2856fe5fd35bde23f44aef..7712aa874d4354f56f4764b5a902054fae09e6ad 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingTimeDiscretization.hxx"
 #include "MEDCouplingMemArray.hxx"
index 6dab084c31e365bf56b4da2adba475678b753317..79d6fa07a6bdde63e6ffb6b69e89b2dea8378f23 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGTIMEDISCRETIZATION_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGTIMEDISCRETIZATION_HXX__
index e91f08a4e76f546428a2c0ec830194b4edce0ee3..9c2716c1e70ad62d83900490e8ec9ddcc4d121c3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingTimeLabel.hxx"
 
index c334ffdbdd1c3375537ed51c42bd504a0c9bcbc4..4755d2edd88d3432c8f898554b538082f54ec81d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_TIMELABEL_HXX__
 #define __PARAMEDMEM_TIMELABEL_HXX__
index 24e0e52dd6ba431facbd78ca5706baba244ee449..d8f87ad56216febabd1b67931b1a43b818c7b675 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingUMesh.hxx"
 #include "MEDCouplingMemArray.txx"
index a03196d89aba49a7e70fca0f0f75a93e881ef6da..eb28c5a309ccc4c9115eecfde6f963efdf9046ae 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGUMESH_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGUMESH_HXX__
index 4807d075b0a438d183e5052e62c0f9286e040e69..22905de8578ee2ed3692a5687c15430a9fe2cdaf 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingUMeshDesc.hxx"
 #include "CellModel.hxx"
index 27216c8f348c7eb7766acd405327112c78e83ba6..37e27e1f37da5f36730f0f107bb2b462a41e2016 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDMEM_MEDCOUPLINGUMESHDESC_HXX__
 #define __PARAMEDMEM_MEDCOUPLINGUMESHDESC_HXX__
index f293a7ca08100152b411c1a11236679c91814093..8f87532b8b6b448b917f1c534de1d050a1915ee0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index c5b2385ee52e473a0e3ca291eb7f3d36edaf6c82..f0c4138b3e6962827c413b5ffbad406044eb1684 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
-  $(CPPUNIT_INCLUDE_DIRS)
+  ${CPPUNIT_INCLUDE_DIRS}
+  ${PTHREADS_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Bases
@@ -51,18 +53,18 @@ SET(TestMEDCouplingExamples_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCoupling ${TestMEDCoupling_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCoupling PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCoupling PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCoupling medcoupling ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCoupling TestMEDCoupling)
 
 ADD_EXECUTABLE(TestMEDCouplingRemapper ${TestMEDCouplingRemapper_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingRemapper medcouplingremapper ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingRemapper medcouplingremapper ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCouplingRemapper TestMEDCouplingRemapper)
 
 ADD_EXECUTABLE(TestMEDCouplingExamples ${TestMEDCouplingExamples_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingExamples PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingExamples PROPERTIES COMPILE_FLAGS "${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingExamples medcoupling ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDCouplingExamples TestMEDCouplingExamples)
 
 INSTALL(TARGETS TestMEDCoupling TestMEDCouplingRemapper DESTINATION ${MED_salomebin_BINS})
index 3e7a7844849fcd0f4cbf3c9dcb4d00585ee93f36..12daa71e6ff375d6db29a44f417b5c3055c30682 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST_HXX__
 #define __MEDCOUPLINGBASICSTEST_HXX__
index bcd2fc326cdc1e6e10df0c0a7bb9ab534b31fe44..84624cf0bf920505473967da435e9b978fa903f4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest.hxx"
 #include "MEDCouplingUMesh.hxx"
index 12769a45c587882235cd7a5e7be2e8a167299b12..b1b83ca9e18c78a00dd09d6e5c2e6c3d96f9e3b0 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest1.hxx"
 #include "MEDCouplingUMesh.hxx"
index 6cea32d74735e39d30516346e13cb137acb77987..9e0082458c44f74c553f04aae8aed919ffd194b5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST1_HXX__
 #define __MEDCOUPLINGBASICSTEST1_HXX__
index fd90286e875159a0adc7fd78a6bafb5ee1eb37ed..89cf9818f87b03f573cf044a5eb5ac4c6246e58f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest2.hxx"
 #include "MEDCouplingUMesh.hxx"
index 4a8d58c45c23e5cb8776afbcea909f3cb8340c4d..ae2f56ddbc012ee1c72a94b53ada03339cf498e6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST2_HXX__
 #define __MEDCOUPLINGBASICSTEST2_HXX__
index a02421060a758c9aa7c3ddf0b805f2fe19c1ab64..ce2fc84ecc57f0bc43809a71fcfcaef206d91817 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest3.hxx"
 #include "MEDCouplingUMesh.hxx"
index b6d04e3bc9d7e5c50e58f8e17e5aebc5207cf5fe..1caa2c5bb21075bc8be536b949150a1b74ba86b6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST3_HXX__
 #define __MEDCOUPLINGBASICSTEST3_HXX__
index c867a699adb7653206cf8228af2e63fd593f0980..f781b061a3bc1b506d6676dbe4ae303e185370ef 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest4.hxx"
 #include "MEDCouplingUMesh.hxx"
index f1eb2c0c7a77aba85a3653d43f5d63896b862c62..d3551bbcb00d04abd835ec8ff26c03dbd399b67c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST4_HXX__
 #define __MEDCOUPLINGBASICSTEST4_HXX__
index 25e9a5bb98c3e025816b20353d6236bb7530a5e3..5e0d2a25343704387530c3824f8c1c5a71a04931 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest5.hxx"
 #include "MEDCouplingUMesh.hxx"
index cd4b556464a85dcf2fc1bc7c80208414e87a4b66..0bc8432f6d1cded094c786a937768b616294b33d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTEST5_HXX__
 #define __MEDCOUPLINGBASICSTEST5_HXX__
index 14541f4cfa34000d116f8a05baacd170fd2754e0..2ec891bc14867264c0b4d73ea434e2cd273c34d6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 int connITT[201]={0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1029, 1058, 1087, 1116, 1145, 1174, 1203,
                     1232, 1261, 1290, 1319, 1348, 1377, 1406, 1435, 1464, 1493, 1522, 1551, 1580, 1609, 1638, 1667, 1696, 1725, 1754, 1783, 1812, 1841, 1870, 1899,
index 33c4a793de5791661641b77a722826b827f11b5a..9d6e9a16d4540262a5887c5f0c5c8971fdc7c35b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTestInterp.hxx"
 #include "MEDCouplingUMesh.hxx"
@@ -1524,7 +1525,7 @@ void MEDCouplingBasicsTestInterp::testInterpolationCC()
       {
         sum += s_v->second;
         double vvv;
-#ifdef WNT
+#ifdef WIN32
         double vv = s_v->second / precis;
         if(vv>=0.0)
           {
index 96a6781ebed7e03213ec395dac8b3596ff351db5..af82f9d6b63dec7344d8cda8b47af0afa74b7eb1 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGBASICSTESTINTERP_HXX__
 #define __MEDCOUPLINGBASICSTESTINTERP_HXX__
index 1f89f7578622195a8a01a9b205a95abf467081b4..635f91789d24659fe949f09f6279592c07f742f6 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest.hxx"
 #include "MEDCouplingUMesh.hxx"
index e348d8e51584605c360bf4a7aed9b6953396d425..b5c4a24169e104a96e0df0baff10ac80b9638c00 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRemapperTest.hxx"
 #include "MEDCouplingUMesh.hxx"
index 44c4bc31274de4ecdec313d63447bd30230aa889..d7d161d6f33eb4a5c37ef5da28b56c3bfc864651 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDCOUPLINGREMAPPERTEST_HXX__
 #define __MEDCOUPLINGREMAPPERTEST_HXX__
index 1e0cd1d0c14608fe50bd16971b70da471c851d8b..4eff0b4a3af72b0db70f322e6ee236e90943434d 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 50ba034934db7c58513df3c02c0b4de579a0d5ca..c192b27a41ad307ae48adeb2494217a2713d3f5c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingBasicsTest1.hxx"
 #include "MEDCouplingBasicsTest2.hxx"
index 35ff0082859bd124415e968b8be6f9e140ac3484..14e0c3b85d5fb044fb0a90b58b3a9e5ce4c87f03 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDCouplingRemapperTest.hxx"
 
index e4d866dff35b08560d0c9350989afa39f8690894..07af5fb49f5881f07393dd7df47cd1fda04d859c 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Client)
-ADD_SUBDIRECTORY(Test)
+
+IF (CPPUNIT_IS_OK)
+  ADD_SUBDIRECTORY(Test)
+ENDIF (CPPUNIT_IS_OK)
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
@@ -47,8 +51,8 @@ SET(medcouplingcorba_SOURCES
   )
 
 ADD_LIBRARY(medcouplingcorba SHARED ${medcouplingcorba_SOURCES})
-SET_TARGET_PROPERTIES(medcouplingcorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcouplingcorba medcoupling SalomeIDLMED)
+SET_TARGET_PROPERTIES(medcouplingcorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcouplingcorba medcoupling SalomeIDLMED ${PLATFORM_LIBS})
 INSTALL(TARGETS medcouplingcorba DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcouplingcorba_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index f2fa9690044a394675181ebbb03f42476b276549..c7486da92540a94fe5a055952d8585fb68fc8ff0 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
@@ -40,8 +41,8 @@ SET(medcouplingclient_SOURCES
   )
 
 ADD_LIBRARY(medcouplingclient SHARED ${medcouplingclient_SOURCES})
-SET_TARGET_PROPERTIES(medcouplingclient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medcouplingclient medcoupling SalomeIDLMED ${OMNIORB_LIBS})
+SET_TARGET_PROPERTIES(medcouplingclient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medcouplingclient medcoupling SalomeIDLMED ${OMNIORB_LIBS} ${PLATFORM_LIBS})
 INSTALL(TARGETS medcouplingclient DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medcouplingclient_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index f376122165ff6adea0606a6e42856845a1de3ed0..ef36e359dae2e14bf4f3e137b01d079915dcec93 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${CPPUNIT_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}/../../../idl
   ${CMAKE_CURRENT_SOURCE_DIR}/..
@@ -35,8 +38,8 @@ SET(TestMEDCouplingCorbaServ_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCouplingCorbaServ ${TestMEDCouplingCorbaServ_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingCorbaServ PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaServ medcouplingcorba SalomeIDLMEDTests ${OMNIORB_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingCorbaServ PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaServ medcouplingcorba SalomeIDLMEDTests ${OMNIORB_LIBS} ${PLATFORM_LIBS})
 
 SET(TestMEDCouplingCorbaClt_SOURCES
   TestMEDCouplingCorbaClt.cxx
@@ -45,7 +48,7 @@ SET(TestMEDCouplingCorbaClt_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDCouplingCorbaClt ${TestMEDCouplingCorbaClt_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDCouplingCorbaClt PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaClt medcouplingclient SalomeIDLMEDTests ${OMNIORB_LIBS} ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDCouplingCorbaClt PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDCouplingCorbaClt medcouplingclient SalomeIDLMEDTests ${OMNIORB_LIBS} ${CPPUNIT_LIBS} ${PLATFORM_LIBS} ${PTHREAD_LIBS})
 
 INSTALL(TARGETS TestMEDCouplingCorbaServ TestMEDCouplingCorbaClt DESTINATION ${MED_salomebin_BINS})
index 8a79fe154c2a2aee8b5b6b86cb40cd50cd6d9ece..78a20f1e0e127a82d7470bd2129118ad5199f1a0 100644 (file)
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Client)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -40,8 +41,11 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(MEDCouplingCorba python MEDCouplingCorba.i)
-SWIG_LINK_LIBRARIES(MEDCouplingCorba ${PYTHON_LIBRARIES} medcouplingcorba)
-SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(MEDCouplingCorba ${PYTHON_LIBS} medcouplingcorba ${PLATFORM_LIBS})
+SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCouplingCorba PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingCorba_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 
 INSTALL(TARGETS _MEDCouplingCorba DESTINATION ${MED_salomepythondir})
 INSTALL(FILES MEDCouplingCorba.i MEDCouplingCorbaTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
index d7af2876d9fbbda7908eb216acf8781b43327e1d..e92b1fafe35dfd4d33dde0ea1db99a8c43c80184 100644 (file)
@@ -16,8 +16,9 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -38,8 +39,11 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(MEDCouplingClient python MEDCouplingClient.i)
-SWIG_LINK_LIBRARIES(MEDCouplingClient ${PYTHON_LIBRARIES} medcouplingclient)
-SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(MEDCouplingClient ${PYTHON_LIBS} medcouplingclient)
+SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCouplingClient PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingClient_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 
 INSTALL(TARGETS _MEDCouplingClient DESTINATION ${MED_salomepythondir})
 INSTALL(FILES MEDCouplingClient.i DESTINATION ${MED_salomeinclude_HEADERS})
index 8e47178bad361ba7a0dbdace2c7328a30a9744c9..bbd5f1848a4cd37687a092f9ddb4804028445d9d 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
-#INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/UseSWIG.cmake)
 
 SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(MEDCoupling.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Bases
@@ -38,19 +40,28 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(MEDCoupling python MEDCoupling.i)
-SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBRARIES} medcoupling)
+SWIG_LINK_LIBRARIES(MEDCoupling ${PYTHON_LIBS} ${PLATFORM_LIBS} medcoupling)
+SET_TARGET_PROPERTIES(_MEDCoupling PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 
 SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(MEDCouplingRemapper.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 SWIG_ADD_MODULE(MEDCouplingRemapper python MEDCouplingRemapper.i)
-SWIG_LINK_LIBRARIES(MEDCouplingRemapper ${PYTHON_LIBRARIES} medcouplingremapper)
+SWIG_LINK_LIBRARIES(MEDCouplingRemapper ${PYTHON_LIBS} medcouplingremapper)
+SET_TARGET_PROPERTIES(_MEDCouplingRemapper PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDCouplingRemapper PROPERTIES DEBUG_OUTPUT_NAME _MEDCouplingRemapper_d)
+  SET_TARGET_PROPERTIES(_MEDCoupling PROPERTIES DEBUG_OUTPUT_NAME _MEDCoupling_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+INSTALL(TARGETS _MEDCoupling _MEDCouplingRemapper DESTINATION ${MED_salomelib_LIBS})
 
 SET(PYFILES_TO_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/MEDCoupling.py ${CMAKE_CURRENT_BINARY_DIR}/MEDCouplingRemapper.py ${CMAKE_CURRENT_SOURCE_DIR}/libMEDCoupling_Swig.py)
-INSTALL(TARGETS _MEDCoupling _MEDCouplingRemapper DESTINATION ${MED_salomepythondir})
-INSTALL(FILES MEDCoupling.i MEDCouplingCommon.i MEDCouplingFinalize.i MEDCouplingRemapper.i MEDCouplingTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
 INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomescript_PYTHON})
 
+INSTALL(FILES MEDCoupling.i MEDCouplingCommon.i MEDCouplingFinalize.i MEDCouplingRemapper.i MEDCouplingTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
+INSTALL(FILES MEDCouplingBasicsTest.py MEDCouplingRemapperTest.py MEDCouplingDataForTest.py DESTINATION ${MED_salomescript_PYTHON})
+
 ADD_TEST(MEDCouplingBasicsTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingBasicsTest.py)
 ADD_TEST(MEDCouplingExamplesTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingExamplesTest.py)
 ADD_TEST(MEDCouplingRemapperTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDCouplingRemapperTest.py)
index ff905cc1ade9f5f17e54230653e331f4f3731ddd..04d497020f95629c6af7c83f978e0d5248e738e2 100644 (file)
@@ -59,6 +59,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDCoupling
     return _MEDCoupling.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDCoupling
+    return _MEDCoupling.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index c635023fc39a9f484f1a782ade72bbf06955ee6c..4f63e6fd3fd5f32e6ad69db3c74014280e6204c9 100644 (file)
@@ -10182,6 +10182,54 @@ class MEDCouplingBasicsTest(unittest.TestCase):
             pass
         pass
 
+    def testSwigDataTupleIOp1(self):
+        d=DataArrayDouble(10,1)
+        d.iota(7.)
+        for elt in d:
+            elt+=2.
+            pass
+        toTest=DataArrayDouble([9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        for elt in d:
+            elt-=2.
+            pass
+        toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        for elt in d:
+            elt*=2.
+            pass
+        toTest=DataArrayDouble([14.0,16.0,18.0,20.0,22.0,24.0,26.0,28.0,30.0,32.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        for elt in d:
+            elt/=2.
+            pass
+        toTest=DataArrayDouble([7.0,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0,16.0])
+        self.assertTrue(toTest.isEqual(d,1e-12))
+        #
+        d=DataArrayInt(10,1)
+        d.iota(7)
+        for elt in d:
+            elt+=2
+            pass
+        self.assertEqual(d.getValues(),[9,10,11,12,13,14,15,16,17,18])
+        for elt in d:
+            elt-=2
+            pass
+        self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
+        for elt in d:
+            elt*=2
+            pass
+        self.assertEqual(d.getValues(),[14,16,18,20,22,24,26,28,30,32])
+        for elt in d:
+            elt/=2
+            pass
+        self.assertEqual(d.getValues(),[7,8,9,10,11,12,13,14,15,16])
+        for elt in d:
+            elt%=3
+            pass
+        self.assertEqual(d.getValues(),[1,2,0,1,2,0,1,2,0,1])
+        pass
+
     def setUp(self):
         pass
     pass
index b6e2d0b64d0603f72ebf3d85d8733251e7ee7c6e..085293b0c9405d55d120950ae93e10bd174a8660 100644 (file)
@@ -2444,7 +2444,39 @@ namespace ParaMEDMEM
   {
     return self->buildDADouble(1,self->getNumberOfCompo());
   }
+
+  PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____iadd___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
   
+  PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____isub___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+  
+  PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____imul___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
+  PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> ret=self->buildDADouble(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayDouble____idiv___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
   PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
   {
     int sw;
@@ -4108,6 +4140,46 @@ namespace ParaMEDMEM
   {
     return self->buildDAInt(1,self->getNumberOfCompo());
   }
+
+  PyObject *___iadd___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____iadd___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+  
+  PyObject *___isub___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____isub___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+  
+  PyObject *___imul___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____imul___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
+  PyObject *___idiv___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____idiv___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
+
+  PyObject *___imod___(PyObject *trueSelf, PyObject *obj) throw(INTERP_KERNEL::Exception)
+  {
+    MEDCouplingAutoRefCountObjectPtr<DataArrayInt> ret=self->buildDAInt(1,self->getNumberOfCompo());
+    ParaMEDMEM_DataArrayInt____imod___(ret,0,obj);
+    Py_XINCREF(trueSelf);
+    return trueSelf;
+  }
   
   PyObject *__getitem__(PyObject *obj) throw(INTERP_KERNEL::Exception)
   {
index 5f47296fa9e752f20d6de68bb9438900c4c9eebf..909b4cf959caf78155fd680a6ea4ffb5f50d1c6b 100644 (file)
@@ -34,6 +34,17 @@ MEDCouplingFieldDouble.__isub__=ParaMEDMEMMEDCouplingFieldDoubleIsub
 MEDCouplingFieldDouble.__imul__=ParaMEDMEMMEDCouplingFieldDoubleImul
 MEDCouplingFieldDouble.__idiv__=ParaMEDMEMMEDCouplingFieldDoubleIdiv
 
+DataArrayDoubleTuple.__iadd__=ParaMEDMEMDataArrayDoubleTupleIadd
+DataArrayDoubleTuple.__isub__=ParaMEDMEMDataArrayDoubleTupleIsub
+DataArrayDoubleTuple.__imul__=ParaMEDMEMDataArrayDoubleTupleImul
+DataArrayDoubleTuple.__idiv__=ParaMEDMEMDataArrayDoubleTupleIdiv
+
+DataArrayIntTuple.__iadd__=ParaMEDMEMDataArrayIntTupleIadd
+DataArrayIntTuple.__isub__=ParaMEDMEMDataArrayIntTupleIsub
+DataArrayIntTuple.__imul__=ParaMEDMEMDataArrayIntTupleImul
+DataArrayIntTuple.__idiv__=ParaMEDMEMDataArrayIntTupleIdiv
+DataArrayIntTuple.__imod__=ParaMEDMEMDataArrayIntTupleImod
+
 del ParaMEDMEMDataArrayDoubleIadd
 del ParaMEDMEMDataArrayDoubleIsub
 del ParaMEDMEMDataArrayDoubleImul
@@ -47,4 +58,13 @@ del ParaMEDMEMDataArrayIntIsub
 del ParaMEDMEMDataArrayIntImul
 del ParaMEDMEMDataArrayIntIdiv
 del ParaMEDMEMDataArrayIntImod
+del ParaMEDMEMDataArrayDoubleTupleIadd
+del ParaMEDMEMDataArrayDoubleTupleIsub
+del ParaMEDMEMDataArrayDoubleTupleImul
+del ParaMEDMEMDataArrayDoubleTupleIdiv
+del ParaMEDMEMDataArrayIntTupleIadd
+del ParaMEDMEMDataArrayIntTupleIsub
+del ParaMEDMEMDataArrayIntTupleImul
+del ParaMEDMEMDataArrayIntTupleIdiv
+del ParaMEDMEMDataArrayIntTupleImod
 %}
index 9e43f6e36ae9cd5c3e7b4eca507c011252c0631f..3b2359a61f6b28cc6ccb3b5800093b5c7b9988bb 100644 (file)
@@ -59,6 +59,10 @@ namespace ParaMEDMEM
       bool setOptionInt(const std::string& key, int value);
       bool setOptionDouble(const std::string& key, double value);
       bool setOptionString(const std::string& key, const std::string& value);
+      //
+      int nullifiedTinyCoeffInCrudeMatrixAbs(double maxValAbs) throw(INTERP_KERNEL::Exception);
+      int nullifiedTinyCoeffInCrudeMatrix(double scaleFactor) throw(INTERP_KERNEL::Exception);
+      double getMaxValueInCrudeMatrix() const throw(INTERP_KERNEL::Exception);
       %extend
          {
            PyObject *getCrudeMatrix() const
@@ -120,6 +124,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDCouplingRemapper
     return _MEDCouplingRemapper.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDCouplingRemapper
+    return _MEDCouplingRemapper.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index ca343368e30967c6ada5f104f601ca7555b2cbc5..f6216e8525eae1b9b7b39be1c63dbe2d848852c8 100644 (file)
@@ -39,6 +39,7 @@ INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
   ${CAS_INCLUDE_DIRS}
   ${BOOST_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
   ${GUI_ROOT_DIR}/include/salome
   ${CMAKE_CURRENT_BINARY_DIR}
@@ -55,10 +56,10 @@ SET(MEDGUITS_SOURCES
   MED_images.ts
   MED_msg_fr.ts
   MED_msg_en.ts
-  )
+)
 
 ADD_LIBRARY(MEDGUI SHARED ${MEDGUI_SOURCES} ${MEDGUI_HEADERS_MOC} ${MEDGUI_FORMS_HEADERS})
-SET_TARGET_PROPERTIES(MEDGUI PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDGUI medcalculator ${QT_MT_LIBS} ${CAS_KERNEL} ${BOOST_LIBS} ${GUI_LDFLAGS} ${SalomeApp} ${CAM} ${LightApp} ${qtx} ${suit} ${SalomeObject})
+SET_TARGET_PROPERTIES(MEDGUI PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDGUI medcalculator ${QT_MT_LIBS} ${CAS_KERNEL} ${BOOST_LIBS} ${GUI_LDFLAGS} ${SalomeApp} ${CAM} ${LightApp} ${qtx} ${suit} ${SalomeObject} ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA})
 INSTALL(TARGETS MEDGUI DESTINATION ${MED_salomelib_LIBS})
 QT4_INSTALL_TS_RESOURCES("${MEDGUITS_SOURCES}" "${MED_salomeres_DATA}")
index 5da47beaba6205c6498cf76ec61f3bc73227ad8c..0a812c71a66ff5fe0564f735cf7c82844eb523dc 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 ADD_SUBDIRECTORY(Swig)
 ADD_SUBDIRECTORY(Test)
@@ -47,7 +48,7 @@ SET(medloader_SOURCES
   )
 
 ADD_LIBRARY(medloader SHARED ${medloader_SOURCES})
-SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
+SET_TARGET_PROPERTIES(medloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(medloader medcoupling ${MED3_LIBS_C_ONLY} ${HDF5_LIBS})
 INSTALL(TARGETS medloader DESTINATION ${MED_salomelib_LIBS})
 
index aa856a49277636b50ba2211ed92a8d8fdebee971..cf361a4c3479d971f6f63da04842cbec4f61dd9c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileBasis.hxx"
 
index 24de3909aa58f7d0e91124612d97fc3364c03d97..67702e68ef3664b58a8e70dc1bb3c69441adb698 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEBASIS_HXX__
 #define __MEDFILEBASIS_HXX__
index 8a97c37548d3aebff4116e4b9bcddfd9dcc177c2..b18c3cb4299300f3a6afa904999148acb9728262 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileData.hxx"
 
index 6a9e404124fa81d68fe7326f3a20709b8472cc92..64b946ec0d1ef3b33c1165d0ccf4b48dd4141692 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEDATA_HXX__
 #define __MEDFILEDATA_HXX__
index cc166fa444dd971a0d20c7d1f9884872ea2e3f09..cf851c2e96052398aec3f3ad5d8a121577f6a97f 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileField.hxx"
 #include "MEDFileMesh.hxx"
index b099d369b53b0d9aa32f9cf69657d20b4793dee0..b6afd67a1f57c5c00bf2918ae0b00e219fcfbffc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEFIELD_HXX__
 #define __MEDFILEFIELD_HXX__
@@ -535,14 +536,14 @@ namespace ParaMEDMEM
     void setProfileNameOnLeaf(const char *mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const char *newPflName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
     //! underground method see MEDFileField1TSWithoutSDA::setLocNameOnLeaf
     void setLocNameOnLeaf(const char *mName, INTERP_KERNEL::NormalizedCellType typ, int locId, const char *newLocName, bool forceRenameOnGlob=false) throw(INTERP_KERNEL::Exception);
-  private:
-    void writeLL(med_idt fid) const throw(INTERP_KERNEL::Exception);
     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) throw(INTERP_KERNEL::Exception);
     void changeLocsRefsNamesGen(const std::vector< std::pair<std::vector<std::string>, std::string > >& mapOfModif) throw(INTERP_KERNEL::Exception);
+  private:
+    void writeLL(med_idt fid) const throw(INTERP_KERNEL::Exception);
     MEDFileField1TS(const char *fileName, const char *fieldName, int iteration, int order) throw(INTERP_KERNEL::Exception);
     MEDFileField1TS(const MEDFileField1TSWithoutSDA& other, bool deepCpy);
     MEDFileField1TS();
@@ -715,7 +716,7 @@ std::vector< std::vector<DataArrayDouble *> > getFieldSplitedByType2(int iterati
     void destroyFieldAtPos(int i) throw(INTERP_KERNEL::Exception);
     bool changeMeshNames(const std::vector< std::pair<std::string,std::string> >& modifTab) throw(INTERP_KERNEL::Exception);
     bool renumberEntitiesLyingOnMesh(const char *meshName, const std::vector<int>& oldCode, const std::vector<int>& newCode, const DataArrayInt *renumO2N) throw(INTERP_KERNEL::Exception);
-  private:
+  public:
     int getPosFromFieldName(const char *fieldName) const throw(INTERP_KERNEL::Exception);
     std::vector<std::string> getPflsReallyUsed() const;
     std::vector<std::string> getLocsReallyUsed() const;
index 009112b705da5628194116be64d9e6cac046dcb8..6f77ac21770c9d32dba7126cf8ad001dfb18952c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileMesh.hxx"
 #include "MEDFileUtilities.hxx"
index 563df009374917cb2fed9b6de4afdeccd2dd8622..02df40ac61be2ce5e0c468a80d71e83677bc01b8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEMESH_HXX__
 #define __MEDFILEMESH_HXX__
index 6a04fb2d2735341c22c8189194bade872908e179..33d14b9f39318d6c47745d416635fcaedb25a83b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileMeshElt.hxx"
 
index 7cf22da69748a5752ee6e7b74948971b4e2802f2..e8bda66294729b97484bcbb4d6c93f0f6b62c72b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEMESHELT_HXX__
 #define __MEDFILEMESHELT_HXX__
index 7191c0bb88b59a74401cec670e145c4192936f5c..2c3c77d9be8d6c7fff7abb6536ff48ba0308c4e7 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileMeshLL.hxx"
 #include "MEDFileMesh.hxx"
index 16f3a446ec8b5d0cd620ac4f65c6af66e4655370..263f77d4175017c85817f2f3f47bff824d5033d3 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEMESHLL_HXX__
 #define __MEDFILEMESHLL_HXX__
index 6114e0ea7086164a35c9ed0f90fa80cf7e98c347..89ddaa17aa2a6ec04095fa952b4bbca79ea9e015 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDFileUtilities.hxx"
 #include "MEDLoaderBase.hxx"
index b814c12828b1ad737ec5da7b085edce09bfcfd43..42fbcd28c567a01133392afb2d5bdfd2cc755e42 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDFILEUTILITIES_HXX__
 #define __MEDFILEUTILITIES_HXX__
index 0d1d57ce0961f03daf8c408d634e03d7b48d47f0..60e8773ec517cbc912193479c5e0abef9a2416c5 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDLoader.hxx"
 #include "MEDLoaderBase.hxx"
index 33907f2197dd951d33402d7191946bbb1df151e6..61536db389b7a46c385ce6f902cdf39df35e657c 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADER_HXX__
 #define __MEDLOADER_HXX__
index dd69727dab25b17cc9474bbc304147e68cdbfb28..7284476eb9df006052bd59eb602a682a3084f2d2 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDLoaderBase.hxx"
 #include "InterpKernelException.hxx"
index b31b8c6adcd714fc925bb360a6ce95b6c680c977..504b4b0d37dff3d3282b1665019f5a0e74fff569 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADERBASE_HXX__
 #define __MEDLOADERBASE_HXX__
index f1a0874576ea51109f50b674a5971e91f27dbda5..c68fb07ef74a3d2a30cc00fd402c2e80049d18fc 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADERDEFINES_HXX__
 #define __MEDLOADERDEFINES_HXX__
index 1edb2c85f79a0d95a840c60fbe608d28505962ae..31bdf0ffa2c6d8ca020cd68a2d09a71a7468e8dc 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 800c84ab1619836b72e8e53183b193209c4249c3..75e1d0c139c8c6776fb45388a0d459ae31ed88df 100644 (file)
 #include <cstring>
 #include <fcntl.h>
 
-#ifdef WNT
+#ifdef WIN32
 #include <io.h>
 #endif
 
-#ifndef WNT
+#ifndef WIN32
 #define HAS_XDR
 #include <unistd.h>
 #endif
@@ -259,7 +259,8 @@ unsigned SauvUtilities::getDimension( INTERP_KERNEL::NormalizedCellType type )
 
 //================================================================================
 /*!
- * \brief Returns interlace array to transform a quadratic GIBI element to a MED one
+ * \brief Returns interlace array to transform a quadratic GIBI element to a MED one.
+ *        i-th array item gives node index in GIBI connectivity for i-th MED node
  */
 //================================================================================
 
@@ -474,7 +475,7 @@ bool ASCIIReader::isASCII() const
 
 bool ASCIIReader::open()
 {
-#ifdef WNT
+#ifdef WIN32
   _file = ::_open (_fileName.c_str(), _O_RDONLY|_O_BINARY);
 #else
   _file = ::open (_fileName.c_str(), O_RDONLY);
@@ -772,9 +773,9 @@ double ASCIIReader::getDouble() const
   //  7.70000000000000-100  7.70000000000000+100  7.70000000000000+100
   //0123456789012345678901234567890123456789012345678901234567890123456789
   const size_t posE = 18;
-  if ( _curPos[posE] != 'E' && _curPos[posE] != 'e' )
+  std::string aStr (_curPos);
+  if ( aStr.find('E') < 0 && aStr.find('e') < 0 )
     {
-      std::string aStr (_curPos);
       if ( aStr.size() < posE+1 )
         THROW_IK_EXCEPTION("No more doubles (line #" << lineNb() << ")");
       aStr.insert( posE, "E", 1 );
index b86f34dfa7489bedbf267c7f3530824ab2164737..b4f44f55422088f6ac5fbf42e98dc2a45ba288df 100644 (file)
@@ -572,7 +572,7 @@ void SauvWriter::write(const char* fileName)
   std::fstream fileStream;
   fileStream.open( fileName, ios::out);
   if
-#ifdef WNT
+#ifdef WIN32
     ( !fileStream || !fileStream.is_open() )
 #else
     ( !fileStream || !fileStream.rdbuf()->is_open() )
@@ -737,7 +737,7 @@ void SauvWriter::writeSubMeshes()
                       if ( toMedConn )
                         {
                           for ( unsigned j = 0; j < nbElemNodes; ++j )
-                            transformedConn[ j ] = cellConn[ toMedConn[ j ]];
+                            transformedConn[ toMedConn[ j ]] = cellConn[ j ];
                           cellConn.swap( transformedConn );
                         }
                       for ( unsigned j = 0; j < nbElemNodes; ++j, fcount++ )
index 16da8eb57a76a7f07eaf657d34f43267a1f227eb..dece3560bbedcf6126da59298fe09eefc9e07bd6 100644 (file)
@@ -16,8 +16,9 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
@@ -27,32 +28,34 @@ SET_SOURCE_FILES_PROPERTIES(MEDLoader.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${MED3_INCLUDE_DIRS}
+  ${HDF5_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling_Swig
   ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Bases
-  )
-
-SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
-
-SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBRARIES} medloader)
-
-INCLUDE_DIRECTORIES(
-  ${MED3_INCLUDE_DIRS}
-  ${HDF5_INCLUDE_DIRS}
-  ${CMAKE_CURRENT_SOURCE_DIR}/..
-  ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Geometric2D
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/ExprEval
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/GaussPoints
-  )
+)
+
+SWIG_ADD_MODULE(MEDLoader python MEDLoader.i)
+SWIG_LINK_LIBRARIES(MEDLoader ${PYTHON_LIBS} ${PLATFORM_LIBS} medloader medcoupling)
+SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_MEDLoader PROPERTIES DEBUG_OUTPUT_NAME _MEDLoader_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+INSTALL(TARGETS _MEDLoader DESTINATION ${MED_salomelib_LIBS})
+
+INSTALL(FILES MEDLoader.i MEDLoaderTypemaps.i MEDLoaderCommon.i DESTINATION ${MED_salomeinclude_HEADERS})
 
-INSTALL(TARGETS _MEDLoader DESTINATION ${MED_salomepythondir})
-INSTALL(FILES MEDLoader.i MEDLoaderCommon.i MEDLoaderTypemaps.i DESTINATION ${MED_salomeinclude_HEADERS})
 SET(PYFILES_TO_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/MEDLoader.py ${CMAKE_CURRENT_SOURCE_DIR}/libMEDLoader_Swig.py)
 INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomescript_PYTHON})
 
+INSTALL(FILES MEDLoaderDataForTest.py MEDLoaderTest.py MEDLoaderTest2.py MEDLoaderTest3.py DESTINATION ${MED_salomescript_PYTHON})
+
 ADD_TEST(MEDLoaderTest ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest.py)
 ADD_TEST(MEDLoaderTest2 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest2.py)
 ADD_TEST(MEDLoaderTest3 ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/MEDLoaderTest3.py)
index 4ee736faccaaee1e428ebb74da26cad6b7ec0443..1f4b743e01d168fb499458f543c55c1f38f15f40 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %include "MEDLoaderCommon.i"
 
@@ -59,6 +60,33 @@ def ParaMEDMEMDataArrayIntIdiv(self,*args):
 def ParaMEDMEMDataArrayIntImod(self,*args):
     import _MEDLoader
     return _MEDLoader.DataArrayInt____imod___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIadd(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIsub(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleImul(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayDoubleTupleIdiv(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayDoubleTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIadd(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____iadd___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIsub(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____isub___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImul(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____imul___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleIdiv(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____idiv___(self, self, *args)
+def ParaMEDMEMDataArrayIntTupleImod(self,*args):
+    import _MEDLoader
+    return _MEDLoader.DataArrayIntTuple____imod___(self, self, *args)
 %}
 
 %include "MEDCouplingFinalize.i"
index 0ca52c382a87d94f31ca1a07c7fd63884469bc35..f99f6635bc14242c1ad22dcb2a702ff4d5083ac8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 %module MEDLoader
 
index 26c949d7876c49e7a8413134554c9b2ad27e7ea8..104675b3e9019f4bc3f51c6ddfd0d1a18cb78924 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 from math import pi,e,sqrt
index f9b2651112a0f2d446f4b14d85d492a189ef0fc2..24ee31a8cf8b7bacc8c54dc1f654554ff6253ca2 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
index 2e31afb65a94f19cf0f8a88dc7cb11096119bef5..42f11222e9ff67473b2ee2482bd8380304704a06 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 import MEDLoader
 import unittest
index 4e7a94760f530b593a8f4b008da9145a1a02529f..f7df16c882ff41d0147a1f054d7d890c3222fcc7 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
index a50b516a6228f3bb05d5a3b1fe2d4942281cf90a..1622b29803f58e049a40edc98c33b3e873ef632e 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 from MEDLoader import *
 import unittest
index 05d60b7269c14fcaae56eed025ca346859c8d6bf..111fd0e2b159d1b04e9ef892514cf175454c4711 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include <vector>
 
index 18194bb0e2687cbf5643f1e63c052fe8f6325061..bf514f6f6736191d611b8443a5dc4a40c70bdfa6 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 #  MED MEDMEM_SWIG : binding of C++ implementation and Python
 #
index 6621b405bfe2d27f2bec10f8f13e5f9e67391c46..88b33f85a4325229d09a10f8525413031fd693a1 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Edward AGAPOV (eap)
 
 from MEDLoader import *
 import unittest, os
index 25e57944be5dcbb8da96b9cb8cada0a7668e7ac4..5bf7093d66784590ce7ddf91fc9716aba5a6c2ae 100644 (file)
@@ -17,6 +17,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 print """
 **********************************************************************
index 2865a645019231b40adafc75ec6b37c966f199fc..eb4f5fcd6a48df67a822274900d8282a4e87e6b6 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${CPPUNIT_INCLUDE_DIRS}
@@ -39,13 +40,14 @@ SET(TestSauvLoader_SOURCES
   )
 
 ADD_EXECUTABLE(TestMEDLoader ${TestMEDLoader_SOURCES})
-SET_TARGET_PROPERTIES(TestMEDLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestMEDLoader medloader ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestMEDLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(TestMEDLoader medloader ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestMEDLoader TestMEDLoader)
 
 ADD_EXECUTABLE(TestSauvLoader ${TestSauvLoader_SOURCES})
-SET_TARGET_PROPERTIES(TestSauvLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(TestSauvLoader medloader ${CPPUNIT_LIBS})
+SET_TARGET_PROPERTIES(TestSauvLoader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+TARGET_LINK_LIBRARIES(TestSauvLoader medloader ${CPPUNIT_LIBS} ${PLATFORM_LIBS})
 ADD_TEST(TestSauvLoader TestSauvLoader)
 
 INSTALL(TARGETS TestMEDLoader TestSauvLoader DESTINATION ${MED_salomebin_BINS})
index f4f7362fc2dec5149a522c28ad808bb36282fb70..1a2528843b07408e4835fe8db03713245e0bd691 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "MEDLoaderTest.hxx"
 #include "MEDLoader.hxx"
index bdd7278d6e27023e26fccbd298cd3df7a70d7621..111f2c0b9afcb7f58cffd7f45a4b0e39f874f71d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __MEDLOADERTEST_HXX__
 #define __MEDLOADERTEST_HXX__
index aced95abda0f9146529eb7ea579dec9c6ca9b5c9..c6d7be53477c648cc76aa506537b7a6f6e1b5717 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index 249f192067c66d59ff7d77ca18579bf0d4ac957f..76df3f1ae84af9eda1f03946007183ebb409baa6 100644 (file)
@@ -25,7 +25,7 @@
 #include "MEDCouplingFieldDouble.hxx"
 #include "MEDCouplingMemArray.hxx"
 
-#ifdef WNT
+#ifdef WIN32
 # include <windows.h>
 #else
 # include <unistd.h>
@@ -205,7 +205,7 @@ void SauvLoaderTest::tearDown()
   const char* fileToRemove[nbFilesToRemove] = { "allPillesTest.med", "pointe.sauv" };
   for ( int i = 0; i < nbFilesToRemove; ++i )
     {
-#ifdef WNT
+#ifdef WIN32
       if (GetFileAttributes(fileToRemove[i]) != INVALID_FILE_ATTRIBUTES)
 #else
         if (access(fileToRemove[i], F_OK) == 0)
@@ -229,7 +229,7 @@ std::string SauvLoaderTest::getResourceFile( const std::string& filename )
     resourceFile += "/share/salome/resources/med/";
   }
   resourceFile += filename;
-#ifdef WNT
+#ifdef WIN32
   std::string fixedpath = resourceFile;
   for ( int i=0; i < fixedpath.length(); ++i )
     if (fixedpath[i] == '/')
index 9e9b6d872660eee7695fc744f87baf1fe3d01f13..c2fc70395b3b90b2264eec3f8ca6e5f4edd08bfd 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "CppUnitTest.hxx"
 #include "MEDLoaderTest.hxx"
index 1484d97c826af07ce8089d03816a72308be839ea..98380852218f309602cbc64734dc083f5a73bcb7 100644 (file)
@@ -71,8 +71,8 @@ SET(medmem_SOURCES
   )
 
 ADD_LIBRARY(medmem SHARED ${medmem_SOURCES})
-SET_TARGET_PROPERTIES(medmem PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medmem interpkernel ${MED3_LIBS_C_ONLY} ${HDF5_LIBS} ${XDR_LIBS})
+SET_TARGET_PROPERTIES(medmem PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medmem interpkernel ${MED3_LIBS_C_ONLY} ${HDF5_LIBS} ${XDR_LIBS} ${PLATFORM_LIBS})
 INSTALL(TARGETS medmem DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB medmem_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 2dc0288eb4cb9d12676ca753100a56fb570e3d5a..12ffc1e5433934e9c38627f7f12a4752ff557814 100644 (file)
@@ -131,6 +131,15 @@ SET(testAnalFile_SOURCES testAnalFile.cxx)
 SET(test_MEDMEM_MeshingFlica_SOURCES test_MEDMEM_MeshingFlica.cxx)
 
 SET(testConvertPolygon_SOURCES testConvertPolygon.cxx)
+SET(create_mesh_SOURCES create_mesh.c)
+SET(create_mesh_c2q4s2_SOURCES create_mesh_c2q4s2.c)
+SET(create_mesh_c3h8q4_SOURCES create_mesh_c3h8q4.c)
+SET(create_mesh_c3h8q4_wrong_SOURCES create_mesh_c3h8q4_wrong.c)
+SET(create_mesh_c2q4s2_wrong_SOURCES create_mesh_c2q4s2_wrong.c)
+SET(create_grid_SOURCES create_grid.c)
+SET(create_mesh_c2q4_SOURCES create_mesh_c2q4.c)
+SET(create_mesh_c3h8_SOURCES create_mesh_c3h8.c)
+SET(create_poly3D_SOURCES create_poly3D.c)
 
 SET(ALLMEDMEMBIN_TESTS
   dumpInterpolation
@@ -185,17 +194,27 @@ SET(ALLMEDMEMBIN_TESTS
   testAnalFile
   test_MEDMEM_MeshingFlica
   testConvertPolygon
+  create_mesh 
+  create_mesh_c2q4s2 
+  create_mesh_c3h8q4 
+  create_mesh_c3h8q4_wrong
+  create_mesh_c2q4s2_wrong 
+  create_grid 
+  create_mesh_c2q4 
+  create_mesh_c3h8 
+  create_poly3D                  
   )
 
 FOREACH(ALLMEDMEMBIN_TEST ${ALLMEDMEMBIN_TESTS})
   ADD_EXECUTABLE(${ALLMEDMEMBIN_TEST} ${${ALLMEDMEMBIN_TEST}_SOURCES})
-  SET_TARGET_PROPERTIES(${ALLMEDMEMBIN_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(${ALLMEDMEMBIN_TEST} medmem)
+  SET_TARGET_PROPERTIES(${ALLMEDMEMBIN_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(${ALLMEDMEMBIN_TEST} medmem ${PLATFORM_LIBS})
 ENDFOREACH(ALLMEDMEMBIN_TEST ${ALLMEDMEMBIN_TESTS})
 
 INSTALL(TARGETS ${ALLMEDMEMBIN_TESTS} DESTINATION ${MED_salomebin_BINS})
 
 SET(MEDMEMBINTEST_PYOPT_TEST -c"import sys;import os;import subprocess;os.putenv(\"srcdir\",sys.argv[1]);sys.exit(subprocess.call([\"sh\",sys.argv[2]]))")
+
 ADD_TEST(check_convertToPoly ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_convertToPoly)
 ADD_TEST(check_duplicateMED ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_duplicateMED)
 ADD_TEST(check_ensight2med ${PYTHON_EXECUTABLE} ${MEDMEMBINTEST_PYOPT_TEST} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/check_ensight2med)
index d85cee87ea5a51bdd19568315245f4678e390936..ad869500adb8db1b3f266f2a48c17cb6f3f0ed60 100644 (file)
@@ -114,15 +114,17 @@ SET(MEDMEMTest_VtkMeshDriver_fault_SOURCES
   )
 
 ADD_LIBRARY(MEDMEMCppTest SHARED ${MEDMEMCppTest_SOURCES})
-SET_TARGET_PROPERTIES(MEDMEMCppTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDMEMCppTest PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDMEMCppTest medmem ${CPPUNIT_LIBS})
 
 SET(ALLMEDMEMCPP_TESTS TestMEDMEM MEDMEMTest_Array_fault MEDMEMTest_Connectivity_fault MEDMEMTest_Coordinate_fault MEDMEMTest_Family_fault MEDMEMTest_Field_fault MEDMEMTest_Grid_fault MEDMEMTest_MeshAndMeshing_fault MEDMEMTest_Support_fault MEDMEMTest_VtkFieldDriver_fault MEDMEMTest_VtkMeshDriver_fault)
 FOREACH(MEDMEMCPP_TEST ${ALLMEDMEMCPP_TESTS})
   ADD_EXECUTABLE(${MEDMEMCPP_TEST} ${${MEDMEMCPP_TEST}_SOURCES})
-  SET_TARGET_PROPERTIES(${MEDMEMCPP_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(${MEDMEMCPP_TEST} MEDMEMCppTest)
+  SET_TARGET_PROPERTIES(${MEDMEMCPP_TEST} PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(${MEDMEMCPP_TEST} MEDMEMCppTest ${PLATFORM_LIBS})
 ENDFOREACH(MEDMEMCPP_TEST ${ALLMEDMEMCPP_TESTS})
 
 INSTALL(TARGETS MEDMEMCppTest DESTINATION ${MED_salomelib_LIBS})
 INSTALL(TARGETS ${ALLMEDMEMCPP_TESTS} DESTINATION ${MED_salomebin_BINS})
+INSTALL(FILES testMEDMEM.py DESTINATION ${MED_salomebin_BINS})
+INSTALL(FILES MEDMEMTest.hxx MEDMEMCppTestExport.hxx DESTINATION ${MED_salomeinclude_HEADERS})
index edba2fed85b85c8837a5dd906491c07c4dc9f2ad..1a9b7e745877f947126c043f145c74177a4ad6d6 100644 (file)
@@ -19,6 +19,7 @@
 
 INCLUDE_DIRECTORIES(
   ${OMNIORB_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${KERNEL_ROOT_DIR}/include/salome
@@ -42,8 +43,9 @@ SET(MEDMEMImpl_SOURCES
   )
 
 ADD_LIBRARY(MEDMEMImpl SHARED ${MEDMEMImpl_SOURCES})
-SET_TARGET_PROPERTIES(MEDMEMImpl PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDMEMImpl medmem SalomeIDLMED)
+SET_TARGET_PROPERTIES(MEDMEMImpl PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDMEMImpl medmem SalomeIDLMED ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA} ${SALOMELocalTrace} ${SalomeCommunication} ${SalomeGenericObj} ${SalomeNS} ${OpUtil})
+
 INSTALL(TARGETS MEDMEMImpl DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB MEDMEMImpl_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index c721f6fa06c0d8e27d7ff2437c53b556a38bf33f..42a42423ae47949f2b504a4d5abc1da44d66eed5 100644 (file)
@@ -22,7 +22,7 @@ INCLUDE(${SWIG_USE_FILE})
 
 SET_SOURCE_FILES_PROPERTIES(libMEDMEM_Swig.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(libMEDMEM_Swig.i PROPERTIES SWIG_DEFINITIONS "-shadow")
-SET_SOURCE_FILES_PROPERTIES(libMEDMEM_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SET_SOURCE_FILES_PROPERTIES(libMEDMEM_SwigPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
@@ -37,10 +37,42 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(libMEDMEM_Swig python libMEDMEM_Swig.i)
-SWIG_LINK_LIBRARIES(libMEDMEM_Swig ${PYTHON_LIBRARIES} medmem)
+SWIG_LINK_LIBRARIES(libMEDMEM_Swig ${PYTHON_LIBS} medmem)
+SET_TARGET_PROPERTIES(_libMEDMEM_Swig PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
 
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMEDMEM_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMEDMEM_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMEDMEM_Swig DESTINATION ${MED_salomepythondir})
+
 INSTALL(FILES libMEDMEM_Swig.i my_typemap.i MEDMEM_SWIG_Templates.hxx DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDMEM_Swig.py DESTINATION ${MED_salomescript_PYTHON})
-INSTALL(FILES med2sauv sauv2med avs2med DESTINATION ${MED_salomescript_PYTHON}
+INSTALL(FILES medutilities.py ${CMAKE_CURRENT_BINARY_DIR}/libMEDMEM_Swig.py DESTINATION ${MED_salomepythondir})
+SET(SCRIPTS
+  medmem.py
+  med_test1.py
+  med_test2.py
+  med_test3.py
+  med_test_grid.py
+  med_test_skin.py
+  medMeshing_test.py
+  med_field_anal.py
+  med_opfield_test.py
+  med_opsupp_test.py
+  test_gibi.py
+  test_porflow.py
+  testDriverAscii.py
+  testGaussLocalization.py
+  test_profil_MedFieldDriver.py
+  testWriteAndFam.py
+  testMedMemGeneral.py
+  testMedMemCxxTests.py
+  dumpMEDMEM.py
+  ensightMedEnsight_test.py
+  medEnsightMed_test.py
+  medNumPy_test.py
+  med2sauv 
+  sauv2med 
+  avs2med
+)
+INSTALL(FILES ${SCRIPTS} DESTINATION ${MED_salomescript_PYTHON}
   PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
diff --git a/src/MEDOP/CMakeLists.txt b/src/MEDOP/CMakeLists.txt
new file mode 100644 (file)
index 0000000..00a361e
--- /dev/null
@@ -0,0 +1,25 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(cmp)
+ADD_SUBDIRECTORY(tui)
+ADD_SUBDIRECTORY(res)
+ADD_SUBDIRECTORY(gui)
+ADD_SUBDIRECTORY(exe)
+ADD_SUBDIRECTORY(doc)
diff --git a/src/MEDOP/cmp/CMakeLists.txt b/src/MEDOP/cmp/CMakeLists.txt
new file mode 100644 (file)
index 0000000..165ca2d
--- /dev/null
@@ -0,0 +1,73 @@
+# Copyright (C) 2007-2012  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
+#
+
+INCLUDE_DIRECTORIES(
+  ${OMNIORB_INCLUDE_DIRS}
+  ${MED3_INCLUDE_DIRS}
+  ${HDF5_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${KERNEL_ROOT_DIR}/include/salome
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}/idl
+  ${CMAKE_SOURCE_DIR}/src/MEDCoupling
+  ${CMAKE_SOURCE_DIR}/src/INTERP_KERNEL/Bases
+  ${CMAKE_SOURCE_DIR}/src/INTERP_KERNEL
+  ${CMAKE_SOURCE_DIR}/src/MEDLoader
+)
+
+SET(MEDOPFactoryEngine_SOURCES
+  MEDDataManager_i.cxx
+  MEDCalculator_i.cxx
+  MEDOPFactory_i.cxx
+)
+SET(COMMON_LIBS
+  medloader
+  SalomeIDLMED
+  ${TOOLSDS}
+  ${SalomeHDFPersist}
+  ${SalomeContainer}
+  ${SalomeCommunication}
+  ${SalomeKernelHelpers}
+  ${SalomeLifeCycleCORBA}
+  ${SALOMELocalTrace}
+  ${SALOMEBasics} 
+  ${SalomeGenericObj}
+  medcoupling
+  interpkernel
+  ${MED3_LIBS}
+  ${HDF5_LIBS}
+  ${OMNIORB_LIBS}
+  ${PLATFORM_LIBS}
+)
+SET(COMMON_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+# This undefines the macros MIN and MAX which are specified in the windows headers 
+IF(WINDOWS)
+  SET(COMMON_FLAGS "${COMMON_FLAGS} -DNOMINMAX")
+ENDIF(WINDOWS)
+
+ADD_LIBRARY(MEDOPFactoryEngine SHARED ${MEDOPFactoryEngine_SOURCES})
+SET_TARGET_PROPERTIES(MEDOPFactoryEngine PROPERTIES COMPILE_FLAGS "${COMMON_FLAGS}")
+TARGET_LINK_LIBRARIES(MEDOPFactoryEngine SalomeIDLMED ${COMMON_LIBS})
+
+INSTALL(TARGETS MEDOPFactoryEngine DESTINATION ${MED_salomelib_LIBS})
+
+FILE(GLOB MEDOPFactoryEngine_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${MEDOPFactoryEngine_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
+INSTALL(FILES test_medop_components.py PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MED_salomebin_BINS}/xmed)
diff --git a/src/MEDOP/doc/CMakeLists.txt b/src/MEDOP/doc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f06fcb6
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(sphinx)
diff --git a/src/MEDOP/doc/models/medop.xmi b/src/MEDOP/doc/models/medop.xmi
new file mode 100644 (file)
index 0000000..0175826
--- /dev/null
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XMI verified="false" xmi.version="1.2" timestamp="2012-09-06T10:36:47" xmlns:UML="http://schema.omg.org/spec/UML/1.3">
+ <XMI.header>
+  <XMI.documentation>
+   <XMI.exporter>umbrello uml modeller http://uml.sf.net</XMI.exporter>
+   <XMI.exporterVersion>1.5.8</XMI.exporterVersion>
+   <XMI.exporterEncoding>UnicodeUTF8</XMI.exporterEncoding>
+  </XMI.documentation>
+  <XMI.metamodel xmi.version="1.3" href="UML.xml" xmi.name="UML"/>
+ </XMI.header>
+ <XMI.content>
+  <UML:Model isSpecification="false" isAbstract="false" isLeaf="false" xmi.id="m1" isRoot="false" name="Modèle UML">
+   <UML:Namespace.ownedElement>
+    <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="folder" name="folder"/>
+    <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="datatype" name="datatype"/>
+    <UML:Stereotype visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="interface" name="interface"/>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Logical View" name="Logical View">
+     <UML:Namespace.ownedElement>
+      <UML:Package stereotype="folder" visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Datatypes" name="Datatypes">
+       <UML:Namespace.ownedElement>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ZPqOwG3ZaJgC" name="int"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="WVv63G5f9uiL" name="char"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="dHU5JP7qmxEj" name="bool"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="CIGkZvv5QqCT" name="float"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="7F8E7oZk44nN" name="double"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="RuDDqPu2fBmF" name="short"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="6hIUWSwdh4po" name="long"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rMXvQKIpDT33" name="unsigned int"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="qx3W6plAV1f1" name="unsigned short"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Ubc9dPySlTNA" name="unsigned long"/>
+        <UML:DataType stereotype="datatype" visibility="public" isSpecification="false" namespace="Datatypes" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="ndz0601vw4R2" name="string"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Package visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="NBqMfPwp0LlT" name="MEDOP">
+       <UML:Namespace.ownedElement>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="KO9M6BTsmDX3" name="DatasourceHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="IDqrnmQNZzdi" type="ZPqOwG3ZaJgC" name="sourceid"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="eazbSktruFv5" type="ndz0601vw4R2" name="name"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="Js2a6sRrdpCC" type="ndz0601vw4R2" name="uri"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="mpuQQtzqbsfV" name="MeshHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="6bYmLOgeEiEK" type="ZPqOwG3ZaJgC" name="meshid"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="MMCAGaa7ZOiQ" type="ndz0601vw4R2" name="name"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="4CWdiGy6waJd" type="ZPqOwG3ZaJgC" name="sourceid"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Z3sQfH0YJ5g6" name="FieldHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="o3IdSrqOde12" type="ZPqOwG3ZaJgC" name="fieldid"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="HICpfJOiAmOR" type="ZPqOwG3ZaJgC" name="type"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="kwipcobg6E6w" type="ZPqOwG3ZaJgC" name="iteration"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="5UZhTZzlr9YW" type="ZPqOwG3ZaJgC" name="order"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="RuFbeb0OViC7" type="ZPqOwG3ZaJgC" name="meshid"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="tFFeytJRMARL" name="FieldseriesHandler">
+         <UML:Classifier.feature>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="OKYFoL4febk2" type="ZPqOwG3ZaJgC" name="fieldseriesId"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="dZ9FP4RHHevG" type="ZPqOwG3ZaJgC" name="type"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="VEhrN6DlOlzB" type="ZPqOwG3ZaJgC" name="nbIterations"/>
+          <UML:Attribute visibility="public" isSpecification="false" xmi.id="41qibbiE8sRX" type="ZPqOwG3ZaJgC" name="meshId"/>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="kG3S8XATRqib" name="Factory">
+         <UML:Classifier.feature>
+          <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="CS8eIf5ejE39" name="getDataManager">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter kind="return" xmi.id="HO3Z38DlLEsc" type="nSHVdoPkDYFK"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+          <UML:Operation visibility="public" isSpecification="false" isQuery="false" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="52BLkz1CzFrG" name="getCalculator">
+           <UML:BehavioralFeature.parameter>
+            <UML:Parameter kind="return" xmi.id="UD4jBGoER8yQ" type="UsXTM49RP2EE"/>
+           </UML:BehavioralFeature.parameter>
+          </UML:Operation>
+         </UML:Classifier.feature>
+        </UML:Class>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="nSHVdoPkDYFK" name="DataManager"/>
+        <UML:Class visibility="public" isSpecification="false" namespace="NBqMfPwp0LlT" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="UsXTM49RP2EE" name="Calculator"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="waq19EhXGt1t" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="aIpeEQxrDZ1d" type="KO9M6BTsmDX3" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="n" xmi.id="KLQQ3Six0Wy7" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="SJsPpluxXW2y" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="uGVzTJNdzM70" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="L0i3AAwcTp0I" type="KO9M6BTsmDX3" name="sourceid" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="ld0pX3I6kldh" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="UVr0zGsErWnr" type="Z3sQfH0YJ5g6" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="tIX5O3q7eqxB" type="mpuQQtzqbsfV" name="meshId" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="oCVhQ0u5qFB3" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="yYmvjqxZZY8F" type="Z3sQfH0YJ5g6" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="0" xmi.id="kG5Bo02aCVGa" type="tFFeytJRMARL" name="fieldseriesId" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="ONJtNJsd01tV" name="">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="n" xmi.id="5vXlBV761AlS" type="tFFeytJRMARL" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="uYDM7AmTV5Lr" type="mpuQQtzqbsfV" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Package visibility="public" isSpecification="false" namespace="Logical View" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="rEjTH3dMz3kh" name="SALOME">
+       <UML:Namespace.ownedElement>
+        <UML:Interface stereotype="interface" visibility="public" isSpecification="false" namespace="rEjTH3dMz3kh" isAbstract="true" isLeaf="false" isRoot="false" xmi.id="BYw7PBW7PaZW" comment="SALOME CORBA Object that can be requested using the lyfe cycle corba registry" name="EngineComponent"/>
+        <UML:Interface stereotype="interface" visibility="public" isSpecification="false" namespace="rEjTH3dMz3kh" isAbstract="true" isLeaf="false" isRoot="false" xmi.id="tDJT9A2gh9I3" comment="Standard SALOME CORBA Object" name="GenericObject"/>
+       </UML:Namespace.ownedElement>
+      </UML:Package>
+      <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="BYw7PBW7PaZW" xmi.id="OOxclE0ol1ww" client="kG3S8XATRqib" name=""/>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="fUBIKo7DA4LI" name="instancie">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="FsZMpwZ9gj4C" type="kG3S8XATRqib" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="50TAtgDYAPqS" type="nSHVdoPkDYFK" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Association visibility="public" isSpecification="false" namespace="Logical View" xmi.id="DweL0xdEpAae" name="instancie">
+       <UML:Association.connection>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="false" isSpecification="false" multiplicity="1" xmi.id="5AnlrsvxqO7j" type="kG3S8XATRqib" name="" aggregation="none"/>
+        <UML:AssociationEnd changeability="changeable" visibility="public" isNavigable="true" isSpecification="false" multiplicity="1" xmi.id="4JHDg6ft0HE0" type="UsXTM49RP2EE" name="" aggregation="none"/>
+       </UML:Association.connection>
+      </UML:Association>
+      <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="tDJT9A2gh9I3" xmi.id="WqUPF7X6LpZS" client="nSHVdoPkDYFK" name=""/>
+      <UML:Abstraction visibility="public" isSpecification="false" namespace="Logical View" supplier="tDJT9A2gh9I3" xmi.id="AwSTl1vib2NJ" client="UsXTM49RP2EE" name=""/>
+     </UML:Namespace.ownedElement>
+     <XMI.extension xmi.extender="umbrello">
+      <diagrams>
+       <diagram showopsig="1" linecolor="#ff0000" snapx="10" showattribassocs="1" snapy="10" linewidth="0" showattsig="1" isopen="1" showpackage="1" showpubliconly="1" showstereotype="1" name="MEDOP_datamodel" font="Ubuntu,10,-1,5,50,0,0,0,0,0" canvasheight="644" canvaswidth="1201" localid="" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#000000" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffff00" zoom="100" xmi.id="yesp3EjZ9T3u" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+        <widgets>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="261" showattsigs="601" showstereotype="1" y="101" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="193" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="KO9M6BTsmDX3" showscope="1" height="67" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="273" showattsigs="601" showstereotype="1" y="220" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="155" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="mpuQQtzqbsfV" showscope="1" height="67" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="268" showattsigs="601" showstereotype="1" y="371" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="150" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="Z3sQfH0YJ5g6" showscope="1" height="97" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="574" showattsigs="601" showstereotype="1" y="218" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="190" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tFFeytJRMARL" showscope="1" height="82" showopsigs="601"/>
+         <notewidget width="170" showstereotype="1" x="703" noteType="0" usesdiagramusefillcolor="1" y="278" usesdiagramfillcolor="1" isinstance="0" fillcolor="none" height="79" linecolor="none" xmi.id="IxOvY2fRkpkU" usefillcolor="1" linewidth="none" font="Ubuntu,10,-1,5,50,0,0,0,0,0" text="A Fieldseries is a data structure gathering a sequence of fields of same type."/>
+        </widgets>
+        <messages/>
+        <associations>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="mpuQQtzqbsfV" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="SJsPpluxXW2y" widgetbid="KO9M6BTsmDX3" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="323" starty="220"/>
+           <endpoint endx="323" endy="168"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="325" showstereotype="1" y="199" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="fLhlJM6afAET" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="325" showstereotype="1" y="170" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="TQYswJeO30Ac" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="260" showstereotype="1" y="170" text="sourceid" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="67" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RkMoYLWfIJyZ" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="Z3sQfH0YJ5g6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="ld0pX3I6kldh" widgetbid="mpuQQtzqbsfV" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="318" starty="371"/>
+           <endpoint endx="318" endy="287"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="320" showstereotype="1" y="350" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="BQQrafI23qu0" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="320" showstereotype="1" y="289" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="AWMBUWnoA3P5" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="264" showstereotype="1" y="289" text="meshId" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="59" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="KeHcxEAaZpMs" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="Z3sQfH0YJ5g6" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="oCVhQ0u5qFB3" widgetbid="tFFeytJRMARL" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="418" starty="371"/>
+           <endpoint endx="574" endy="300"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="408" showstereotype="1" y="349" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="kd1mStmcP6lr" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="570" showstereotype="1" y="303" text="0" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="aZgic3nraRfw" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="487" showstereotype="1" y="282" text="fieldseriesId" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="+" role="710" width="90" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="HZgqM0hYQ5Nz" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="1" widgetaid="tFFeytJRMARL" usesdiagramfillcolor="1" fillcolor="none" linecolor="none" totalcounta="2" xmi.id="ONJtNJsd01tV" widgetbid="mpuQQtzqbsfV" totalcountb="2" type="512" usefillcolor="1" linewidth="none">
+          <linepath>
+           <startpoint startx="574" starty="246"/>
+           <endpoint endx="428" endy="246"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="556" showstereotype="1" y="225" text="n" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RKSqQnp8Rout" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="430" showstereotype="1" y="225" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="heT4kEtIlZ0L" height="19"/>
+         </assocwidget>
+        </associations>
+       </diagram>
+       <diagram showopsig="1" linecolor="#ff0000" snapx="10" showattribassocs="1" snapy="10" linewidth="0" showattsig="1" isopen="1" showpackage="1" showpubliconly="1" showstereotype="1" name="MEDOP_componentmodel" font="Ubuntu,10,-1,5,50,0,0,0,0,0" canvasheight="644" canvaswidth="1201" localid="-1" snapcsgrid="0" showgrid="0" showops="1" griddotcolor="#808080" backgroundcolor="#ffffff" usefillcolor="1" fillcolor="#ffffc0" zoom="100" xmi.id="e3MA5ySQiAqG" documentation="" showscope="1" snapgrid="0" showatts="1" type="1">
+        <widgets>
+         <classwidget linecolor="#ff0000" usesdiagramfillcolor="0" linewidth="none" showoperations="1" usesdiagramusefillcolor="0" showpubliconly="1" showpackage="1" x="330" showattsigs="601" showstereotype="1" y="184" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="227" isinstance="0" usefillcolor="1" fillcolor="#ffffc0" xmi.id="kG3S8XATRqib" showscope="1" height="52" showopsigs="601"/>
+         <interfacewidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="342" showstereotype="1" y="87" font="Ubuntu,10,-1,5,75,1,0,0,0,0" drawascircle="0" width="184" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="BYw7PBW7PaZW" showscope="1" height="44" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="459" showattsigs="601" showstereotype="1" y="300" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="133" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="UsXTM49RP2EE" showscope="1" height="29" showopsigs="601"/>
+         <classwidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="254" showattsigs="601" showstereotype="1" y="300" showattributes="1" font="Ubuntu,10,-1,5,75,0,0,0,0,0" width="153" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="nSHVdoPkDYFK" showscope="1" height="29" showopsigs="601"/>
+         <interfacewidget linecolor="none" usesdiagramfillcolor="1" linewidth="none" showoperations="1" usesdiagramusefillcolor="1" showpubliconly="1" showpackage="1" x="367" showstereotype="1" y="388" font="Ubuntu,10,-1,5,75,1,0,0,0,0" drawascircle="0" width="160" isinstance="0" usefillcolor="1" fillcolor="none" xmi.id="tDJT9A2gh9I3" showscope="1" height="44" showopsigs="601"/>
+        </widgets>
+        <messages/>
+        <associations>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="OOxclE0ol1ww" widgetbid="BYw7PBW7PaZW" totalcountb="2" type="511" usefillcolor="0" linewidth="none">
+          <linepath>
+           <startpoint startx="432" starty="184"/>
+           <endpoint endx="432" endy="131"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="255" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="255" fillcolor="none" linecolor="none" totalcounta="3" xmi.id="fUBIKo7DA4LI" widgetbid="nSHVdoPkDYFK" totalcountb="2" type="512" usefillcolor="255" linewidth="none">
+          <linepath>
+           <startpoint startx="362" starty="236"/>
+           <endpoint endx="362" endy="300"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="362" showstereotype="1" y="268" text="instancie" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="703" width="62" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="We8Eh3gTpzBZ" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="364" showstereotype="1" y="238" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="RukaNOvu336i" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="364" showstereotype="1" y="279" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="GwYUBCNb75BU" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="2" indexb="1" usesdiagramusefillcolor="0" widgetaid="kG3S8XATRqib" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="3" xmi.id="DweL0xdEpAae" widgetbid="UsXTM49RP2EE" totalcountb="2" type="512" usefillcolor="0" linewidth="none">
+          <linepath>
+           <startpoint startx="508" starty="236"/>
+           <endpoint endx="508" endy="300"/>
+          </linepath>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="508" showstereotype="1" y="269" text="instancie" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="703" width="62" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="s8Nl0cfW6qjS" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="510" showstereotype="1" y="238" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="701" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="wJt1HUa9cvsa" height="19"/>
+          <floatingtext linecolor="none" usesdiagramfillcolor="1" linewidth="none" usesdiagramusefillcolor="1" x="510" showstereotype="1" y="279" text="1" font="Ubuntu,10,-1,5,50,0,0,0,0,0" pretext="" role="702" width="16" isinstance="0" posttext="" usefillcolor="1" fillcolor="none" xmi.id="XyVvibXetPfA" height="19"/>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="1" usesdiagramusefillcolor="0" widgetaid="nSHVdoPkDYFK" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="WqUPF7X6LpZS" widgetbid="tDJT9A2gh9I3" totalcountb="3" type="511" usefillcolor="0" linewidth="none">
+          <linepath>
+           <startpoint startx="398" starty="329"/>
+           <endpoint endx="398" endy="388"/>
+          </linepath>
+         </assocwidget>
+         <assocwidget indexa="1" indexb="2" usesdiagramusefillcolor="0" widgetaid="UsXTM49RP2EE" usesdiagramfillcolor="0" fillcolor="#000000" linecolor="none" totalcounta="2" xmi.id="AwSTl1vib2NJ" widgetbid="tDJT9A2gh9I3" totalcountb="3" type="511" usefillcolor="58" linewidth="none">
+          <linepath>
+           <startpoint startx="510" starty="329"/>
+           <endpoint endx="510" endy="388"/>
+          </linepath>
+         </assocwidget>
+        </associations>
+       </diagram>
+      </diagrams>
+     </XMI.extension>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Use Case View" name="Use Case View">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Component View" name="Component View">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Deployment View" name="Deployment View">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+    <UML:Model stereotype="folder" visibility="public" isSpecification="false" namespace="m1" isAbstract="false" isLeaf="false" isRoot="false" xmi.id="Entity Relationship Model" name="Entity Relationship Model">
+     <UML:Namespace.ownedElement/>
+    </UML:Model>
+   </UML:Namespace.ownedElement>
+  </UML:Model>
+ </XMI.content>
+ <XMI.extensions xmi.extender="umbrello">
+  <docsettings viewid="e3MA5ySQiAqG" uniqueid="1YG8dfUmZuFJ" documentation=""/>
+  <listview>
+   <listitem open="1" type="800" id="Views">
+    <listitem open="1" type="836" id="Entity Relationship Model"/>
+    <listitem open="1" type="802" id="Use Case View"/>
+    <listitem open="1" type="821" id="Component View"/>
+    <listitem open="1" type="827" id="Deployment View"/>
+    <listitem open="1" type="801" id="Logical View">
+     <listitem open="1" type="818" id="NBqMfPwp0LlT">
+      <listitem open="1" type="813" id="UsXTM49RP2EE"/>
+      <listitem open="1" type="813" id="nSHVdoPkDYFK"/>
+      <listitem open="0" type="813" id="KO9M6BTsmDX3">
+       <listitem open="0" type="814" id="eazbSktruFv5"/>
+       <listitem open="1" type="814" id="IDqrnmQNZzdi"/>
+       <listitem open="0" type="814" id="Js2a6sRrdpCC"/>
+      </listitem>
+      <listitem open="1" type="813" id="kG3S8XATRqib">
+       <listitem open="0" type="815" id="52BLkz1CzFrG"/>
+       <listitem open="0" type="815" id="CS8eIf5ejE39"/>
+      </listitem>
+      <listitem open="0" type="813" id="Z3sQfH0YJ5g6">
+       <listitem open="0" type="814" id="o3IdSrqOde12"/>
+       <listitem open="0" type="814" id="kwipcobg6E6w"/>
+       <listitem open="0" type="814" id="RuFbeb0OViC7"/>
+       <listitem open="0" type="814" id="5UZhTZzlr9YW"/>
+       <listitem open="0" type="814" id="HICpfJOiAmOR"/>
+      </listitem>
+      <listitem open="0" type="813" id="tFFeytJRMARL">
+       <listitem open="0" type="814" id="OKYFoL4febk2"/>
+       <listitem open="0" type="814" id="41qibbiE8sRX"/>
+       <listitem open="0" type="814" id="VEhrN6DlOlzB"/>
+       <listitem open="0" type="814" id="dZ9FP4RHHevG"/>
+      </listitem>
+      <listitem open="0" type="813" id="mpuQQtzqbsfV">
+       <listitem open="0" type="814" id="6bYmLOgeEiEK"/>
+       <listitem open="0" type="814" id="MMCAGaa7ZOiQ"/>
+       <listitem open="0" type="814" id="4CWdiGy6waJd"/>
+      </listitem>
+     </listitem>
+     <listitem open="0" type="807" id="e3MA5ySQiAqG" label="MEDOP_componentmodel"/>
+     <listitem open="0" type="807" id="yesp3EjZ9T3u" label="MEDOP_datamodel"/>
+     <listitem open="1" type="818" id="rEjTH3dMz3kh">
+      <listitem open="1" type="817" id="BYw7PBW7PaZW"/>
+      <listitem open="1" type="817" id="tDJT9A2gh9I3"/>
+     </listitem>
+     <listitem open="0" type="830" id="Datatypes">
+      <listitem open="1" type="829" id="dHU5JP7qmxEj"/>
+      <listitem open="1" type="829" id="WVv63G5f9uiL"/>
+      <listitem open="1" type="829" id="7F8E7oZk44nN"/>
+      <listitem open="1" type="829" id="CIGkZvv5QqCT"/>
+      <listitem open="1" type="829" id="ZPqOwG3ZaJgC"/>
+      <listitem open="1" type="829" id="6hIUWSwdh4po"/>
+      <listitem open="1" type="829" id="RuDDqPu2fBmF"/>
+      <listitem open="1" type="829" id="ndz0601vw4R2"/>
+      <listitem open="1" type="829" id="rMXvQKIpDT33"/>
+      <listitem open="1" type="829" id="Ubc9dPySlTNA"/>
+      <listitem open="1" type="829" id="qx3W6plAV1f1"/>
+     </listitem>
+    </listitem>
+   </listitem>
+  </listview>
+  <codegeneration>
+   <codegenerator language="C++"/>
+  </codegeneration>
+ </XMI.extensions>
+</XMI>
diff --git a/src/MEDOP/doc/sphinx/CMakeLists.txt b/src/MEDOP/doc/sphinx/CMakeLists.txt
new file mode 100644 (file)
index 0000000..54da688
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(SPHINX_STATUS)
+  SET(srcdir ${CMAKE_CURRENT_SOURCE_DIR})
+  CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf.py.in ${CMAKE_CURRENT_BINARY_DIR}/conf.py @ONLY)
+  #FILE(GLOB MEDOP_DOC_RST "${CMAKE_CURRENT_SOURCE_DIR}/*.rst")
+  
+  #FOREACH(SRCFNAME ${MEDOP_DOC_RST})
+  #  GET_FILENAME_COMPONENT(FNAME ${SRCFNAME} NAME)
+  #  CONFIGURE_FILE(${SRCFNAME} ${CMAKE_CURRENT_BINARY_DIR}/${FNAME} COPY_ONLY)
+  #ENDFOREACH(FNAME ${MEDOP_DOC_RST})
+  
+  #FILE(MAKE_DIRECTORY _static)
+  #CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/_static/xmed.css ${CMAKE_CURRENT_BINARY_DIR}/_static/xmed.css COPY_ONLY)
+
+  #FILE(GLOB MEDOP_DOC_PNG_RST "${CMAKE_CURRENT_SOURCE_DIR}/images/*.png")
+  #FOREACH(SRCFNAME ${MEDOP_DOC_PNG_RST})
+  #  GET_FILENAME_COMPONENT(FNAME ${SRCFNAME} NAME)
+  #  CONFIGURE_FILE(${SRCFNAME} ${CMAKE_CURRENT_BINARY_DIR}/images/${FNAME} COPY_ONLY)
+  #ENDFOREACH(FNAME ${MEDOP_DOC_RST})
+
+  INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${SPHINX_EXECUTABLE_TO_FIND} -c ${CMAKE_CURRENT_BINARY_DIR} -b html -d doctrees -D latex_paper_size=a4 ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/html)")
+
+  INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/ DESTINATION share/doc/salome/dev/MED)
+
+ENDIF(SPHINX_STATUS)
diff --git a/src/MEDOP/doc/sphinx/Makefile.am b/src/MEDOP/doc/sphinx/Makefile.am
new file mode 100644 (file)
index 0000000..523111e
--- /dev/null
@@ -0,0 +1,123 @@
+# Copyright (C) 2007-2012  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
+#
+
+# author: Guillaume Boulant (EDF/R&D, 2012)
+
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+tuidocdir = $(docdir)/tui/MED
+devdocdir = $(docdir)/dev/MED
+medopdocdir=$(devdocdir)
+
+.PHONY : latex
+
+if SPHINX_IS_OK
+
+medopdoc_DATA=html/index.html
+html/index.html:$(RSTFILES)
+       make htm
+
+endif
+
+EXTRA_DIST += html
+
+SPHINXOPTS      =
+SOURCEDIR       = $(srcdir)
+SPHINXBUILD     = sphinx-build
+PAPEROPT_a4     = -D latex_paper_size=a4
+ALLSPHINXOPTS   = -d doctrees $(PAPEROPT_a4) $(SPHINXOPTS) $(SOURCEDIR)
+SPHINX_PYTHONPATH = $(prefix)/lib/python$(PYTHON_VERSION)/site-packages/salome:$(KERNEL_ROOT_DIR)/lib/python$(PYTHON_VERSION)/site-packages/salome:$(KERNEL_ROOT_DIR)/bin/salome:$(OMNIORB_ROOT)/lib/python$(PYTHON_VERSION)/site-packages
+
+CONF_PATH = $(top_builddir)/src/MEDOP/doc/sphinx
+
+SPHINX_LD_LIBRARY_PATH = $(OMNIORB_ROOT)/lib
+
+htm:
+       mkdir -p html doctrees
+       PYTHONPATH=$(SPHINX_PYTHONPATH):${PYTHONPATH}; \
+       LD_LIBRARY_PATH=$(SPHINX_LD_LIBRARY_PATH):${LD_LIBRARY_PATH}; \
+       $(SPHINXBUILD) -c $(CONF_PATH) -b html $(ALLSPHINXOPTS) html
+       @echo
+       @echo "Build finished. The HTML pages are in html."
+
+latex:
+       mkdir -p latex doctrees
+       PYTHONPATH=$(SPHINX_PYTHONPATH):${PYTHONPATH}; \
+       LD_LIBRARY_PATH=$(SPHINX_LD_LIBRARY_PATH):${LD_LIBRARY_PATH}; \
+       $(SPHINXBUILD) -c $(CONF_PATH) -b latex $(ALLSPHINXOPTS) latex
+       @echo
+       @echo "Build finished; the LaTeX files are in latex."
+       @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+             "run these through (pdf)latex."
+
+html:
+       mkdir -p $@
+
+RSTFILES= \
+       index.rst               \
+       xmed-specifications.rst \
+       xmed-develguide.rst     \
+       xmed-userguide.rst
+
+# Files on the development of the prototype (version 2010)
+RSTFILES+=\
+       xmed-prototype-overview.rst     \
+       xmed-prototype-develguide.rst   \
+       xmed-prototype-medmem.rst
+
+# Files containing definitions and references
+RSTFILES+=\
+       xmed-definitions.rst \
+       xmed-references.rst  \
+       xmed-workingnotes-2010.rst \
+       xmed-workingnotes-2011.rst \
+       xmed-workingnotes-2012.rst
+
+# Files on annexe topics
+RSTFILES+=\
+       salomedoc.rst
+
+EXTRA_DIST+= $(RSTFILES)
+
+EXTRA_DIST+= \
+       conf.py 
+
+install-data-local:
+       $(INSTALL) -d $(DESTDIR)$(medopdocdir)
+       if test -d "html"; then b=; else b="$(srcdir)/"; fi; \
+       cp -rf $$b"html"/* $(DESTDIR)$(medopdocdir) ; \
+       if test -f $$b"latex"/medopdoc.pdf; then cp -f $$b"latex"/medopdoc.pdf $(DESTDIR)$(medopdocdir) ; fi;
+
+uninstall-local:
+       chmod -R +w $(DESTDIR)$(medopdocdir)
+       rm -rf $(DESTDIR)$(medopdocdir)/*
+
+clean-local:
+       -rm -rf html latex doctrees
+       if test -d "html"; then rm -rf html ; fi
+
+pdf: latex
+       cd latex; make all-pdf
+       cp latex/*.pdf html/_static/documents/.
+
+WIKIRELATIVEPATH="pub/userdata/gboulant/data/salome/smodules/xmed/doc"
+WIKIREMOTEPATH="nepal@nepal:/nepal/$(WIKIRELATIVEPATH)"
+deploy: htm pdf
+       rsync -avz html/ $(WIKIREMOTEPATH)
+       @echo "The documentation can be read at URL : http://nepal.der.edf.fr/$(WIKIRELATIVEPATH)/index.html"
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf b/src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf
new file mode 100755 (executable)
index 0000000..405a2cc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf b/src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf
new file mode 100755 (executable)
index 0000000..2357da0
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20091211_CEA_AGEAY_09-017-RT-A_Normalisation_des_champs_et_des_maillages_pour_le_couplage_de_codes.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf b/src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf
new file mode 100755 (executable)
index 0000000..25a151e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf b/src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf
new file mode 100755 (executable)
index 0000000..8048e0b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf b/src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf
new file mode 100755 (executable)
index 0000000..f5f9123
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20101027_MAN_revueEDF-CEA.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf
new file mode 100644 (file)
index 0000000..aee46bf
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_notes.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf
new file mode 100644 (file)
index 0000000..dce10d9
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf b/src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf
new file mode 100755 (executable)
index 0000000..2ea4918
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf
new file mode 100644 (file)
index 0000000..9a12930
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv
new file mode 100644 (file)
index 0000000..8339d63
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv
new file mode 100644 (file)
index 0000000..ec7c90a
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv differ
diff --git a/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv
new file mode 100644 (file)
index 0000000..7398d19
Binary files /dev/null and b/src/MEDOP/doc/sphinx/_static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv differ
diff --git a/src/MEDOP/doc/sphinx/_static/xmed.css b/src/MEDOP/doc/sphinx/_static/xmed.css
new file mode 100644 (file)
index 0000000..150d019
--- /dev/null
@@ -0,0 +1,115 @@
+@import url("default.css");
+
+body {
+  font-family: {{ 'Liberation', sans-serif }};
+  font-size: 82%;
+  color: #000;
+  background-color: #fff;
+  margin-left: 28px;
+}
+
+ul {
+  margin: 0 0 0 0;
+}
+
+div.related {
+  background-color: #444;
+}
+
+a,
+div.sphinxsidebar h3 a,
+div.sphinxsidebar a,
+div.footer a {
+  color: #444;
+}
+
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+  color: #000;
+}
+
+div.sphinxsidebar ul {
+  font-size: 94%;
+  color: #000;
+}
+
+div.sphinxsidebar input {
+  border-color: #444;
+}
+
+div.document {
+  background-color: #f5f8e4;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+  color: #000;
+  background-color: transparent;
+  border-bottom: 1px solid #444;
+}
+
+div.footer {
+  color: #000;
+}
+
+li.toctree-l2 {
+  font-size: 100%;
+}
+
+li.toctree-l3 {
+  font-size: 100%;
+}
+
+div.sphinxsidebarwrapper ul {
+  list-style-type: disc;
+  margin-top: 1px;
+  padding-left: 6px;
+}
+
+div.sphinxsidebarwrapper h3 {
+  font-size: 100%;
+  font-weight: bold;
+}
+
+div.body h1 {
+  font-size: 200%;
+}
+div.body h2 {
+  font-size: 160%;
+}
+div.body h3, div.body h4 {
+  font-size: 125%;
+}
+
+div.body p.topic-title {
+  margin-bottom: 2px;
+  font-size: 100%;
+}
+
+div.sphinxsidebar p {
+  color: #444;
+}
+
+#introduction p > em {
+  text-align: right;
+  float: right;
+}
+
+#introduction p {
+  font-size: 90%;
+  margin-bottom: 3px;
+}
+
+#introduction #id2.docutils.footnote {
+  font-size: 70%;
+  margin-top: 25px;
+}
+
+#introduction table.docutils.footnote {
+  font-size: 70%;
+  margin-top: 5px;
+}
diff --git a/src/MEDOP/doc/sphinx/conf.py.in b/src/MEDOP/doc/sphinx/conf.py.in
new file mode 100644 (file)
index 0000000..1127d1b
--- /dev/null
@@ -0,0 +1,209 @@
+# -*- coding: iso-8859-1 -*-
+#
+# yacs documentation build configuration file, created by
+# sphinx-quickstart on Fri Aug 29 09:57:25 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+
+# Uncomment the following line to build the links with Python documentation
+# (you might need to set http_proxy environment variable for this to work)
+#extensions += ['sphinx.ext.intersphinx']
+
+# Intersphinx mapping to add links to modules and objects in the Python
+# standard library documentation
+intersphinx_mapping = {'http://docs.python.org': None}
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = [os.path.join('@srcdir@','_templates')]
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = 'MED, Manipulation de champs dans SALOME'
+copyright = '2010 CEA/DEN, EDF R&D, OPEN CASCADE, G. Boulant, A. Geay'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '@SHORT_VERSION@'
+# The full version, including alpha/beta/rc tags.
+release = '@VERSION@'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+language = 'fr'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['.build','ref','images','CVS','.svn']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+#html_theme = 'omadoc'
+html_theme_options = {
+    "stickysidebar": "false",
+    "rightsidebar": "false",
+}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = ['themes']
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+
+# The stylecheet file will be searched within the static path, while
+# the layout.html file will be searched within the template path
+# (Note that this parameter can't be used together with html_theme. Exclusive)
+html_style = 'xmed.css'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = [os.path.join('@srcdir@','_static')]
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_use_modindex = False
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'xmeddoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+latex_paper_size = 'a4'
+
+# The font size ('10pt', '11pt' or '12pt').
+latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'xmed-alldoc.tex', 'Documentation du module XMED', 'G. Boulant', 'manual'),
+  ('xmed-specifications', 'xmed-specifications.tex', 'Module XMED - Specifications', 'G. Boulant', 'manual'),
+  ('xmed-develguide', 'xmed-develguide.tex', 'Module XMED - Guide de developpement', 'G. Boulant', 'manual'),
+  ('xmed-userguide', 'xmed-userguide.tex', 'Module XMED - Guide d\'utilisation', 'G. Boulant', 'manual')
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+latex_use_modindex = False
diff --git a/src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png b/src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png
new file mode 100644 (file)
index 0000000..0fbf2ba
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/champ_altitude_MAP.png differ
diff --git a/src/MEDOP/doc/sphinx/images/convert.sh b/src/MEDOP/doc/sphinx/images/convert.sh
new file mode 100755 (executable)
index 0000000..289e7c3
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+factor="50%"
+listfiles="\
+    medop-gui-aliasfield.png \
+    medop-gui-result.png \
+    medop-gui-selectfield.png \
+    medop-gui-visufield.png"
+
+for file in $listfiles; do
+    echo "Processing file $file ..."
+    bn=$(basename $file .png)
+    outfile=$bn"_scale.png"
+    convert -scale $factor $file $outfile
+done
+
+
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_add.png b/src/MEDOP/doc/sphinx/images/ico_datasource_add.png
new file mode 100644 (file)
index 0000000..bcec3d6
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_add.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png b/src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png
new file mode 100644 (file)
index 0000000..fe6c8b6
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_changeUnderlyingMesh.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png b/src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png
new file mode 100644 (file)
index 0000000..07c8b0b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_expandfield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_use.png b/src/MEDOP/doc/sphinx/images/ico_datasource_use.png
new file mode 100644 (file)
index 0000000..0d1ab63
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_use.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_datasource_view.png b/src/MEDOP/doc/sphinx/images/ico_datasource_view.png
new file mode 100644 (file)
index 0000000..4189144
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_datasource_view.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_imagesource.png b/src/MEDOP/doc/sphinx/images/ico_imagesource.png
new file mode 100644 (file)
index 0000000..465b156
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_imagesource.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_workspace_save.png b/src/MEDOP/doc/sphinx/images/ico_workspace_save.png
new file mode 100644 (file)
index 0000000..268c8fb
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_workspace_save.png differ
diff --git a/src/MEDOP/doc/sphinx/images/ico_xmed.png b/src/MEDOP/doc/sphinx/images/ico_xmed.png
new file mode 100644 (file)
index 0000000..4f09fe0
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/ico_xmed.png differ
diff --git a/src/MEDOP/doc/sphinx/images/med-uml-main.png b/src/MEDOP/doc/sphinx/images/med-uml-main.png
new file mode 100755 (executable)
index 0000000..1e7d458
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/med-uml-main.png differ
diff --git a/src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png b/src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png
new file mode 100644 (file)
index 0000000..f8f06cb
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/med-uml-main_60pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medlayers.png b/src/MEDOP/doc/sphinx/images/medlayers.png
new file mode 100644 (file)
index 0000000..179ae0b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medlayers.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medmem-corba-layers.png b/src/MEDOP/doc/sphinx/images/medmem-corba-layers.png
new file mode 100755 (executable)
index 0000000..de355e9
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medmem-corba-layers.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medmem-layers.png b/src/MEDOP/doc/sphinx/images/medmem-layers.png
new file mode 100644 (file)
index 0000000..d781003
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medmem-layers.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png
new file mode 100755 (executable)
index 0000000..ad266f8
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png
new file mode 100644 (file)
index 0000000..33a5cae
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-aliasfield_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-result.png b/src/MEDOP/doc/sphinx/images/medop-gui-result.png
new file mode 100755 (executable)
index 0000000..54a41bf
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png
new file mode 100644 (file)
index 0000000..a53187b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-result_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png
new file mode 100755 (executable)
index 0000000..47d5d61
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png
new file mode 100644 (file)
index 0000000..e311926
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-selectfield_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-visufield.png b/src/MEDOP/doc/sphinx/images/medop-gui-visufield.png
new file mode 100755 (executable)
index 0000000..fc42627
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-visufield.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png b/src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png
new file mode 100644 (file)
index 0000000..6cbe393
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop-gui-visufield_scale.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_exportparavis.png b/src/MEDOP/doc/sphinx/images/medop_exportparavis.png
new file mode 100644 (file)
index 0000000..4205c6b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_exportparavis.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png b/src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png
new file mode 100644 (file)
index 0000000..56abc6e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_exportparavis_result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png b/src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png
new file mode 100644 (file)
index 0000000..35cf57b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_image2med_dialog.png differ
diff --git a/src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png b/src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png
new file mode 100644 (file)
index 0000000..9f67fbc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/medop_image2med_tomographie.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-architecture.png b/src/MEDOP/doc/sphinx/images/xmed-architecture.png
new file mode 100755 (executable)
index 0000000..143b674
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-architecture.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-exploremed.png b/src/MEDOP/doc/sphinx/images/xmed-exploremed.png
new file mode 100644 (file)
index 0000000..c9e0283
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-exploremed.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-functions.png b/src/MEDOP/doc/sphinx/images/xmed-functions.png
new file mode 100644 (file)
index 0000000..b0e67b8
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-functions.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png
new file mode 100644 (file)
index 0000000..c62da6a
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png
new file mode 100644 (file)
index 0000000..bccd8c2
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png
new file mode 100644 (file)
index 0000000..a8df311
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png
new file mode 100644 (file)
index 0000000..5492fa1
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_60pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png
new file mode 100644 (file)
index 0000000..5db5a11
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png
new file mode 100644 (file)
index 0000000..48ed011
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-contextmenu_80pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png
new file mode 100644 (file)
index 0000000..b4891fd
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-expand-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png
new file mode 100644 (file)
index 0000000..2de39c7
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png
new file mode 100644 (file)
index 0000000..8bb9bbd
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-explore.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png
new file mode 100644 (file)
index 0000000..85ea5d5
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-menucontextuel-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png
new file mode 100644 (file)
index 0000000..39da533
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-selectfile.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png
new file mode 100644 (file)
index 0000000..f6eca45
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-alias.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png
new file mode 100644 (file)
index 0000000..505e3d6
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png
new file mode 100644 (file)
index 0000000..f942cd8
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace-result_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png
new file mode 100644 (file)
index 0000000..1f7109f
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png
new file mode 100644 (file)
index 0000000..98e1f32
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-useinworkspace_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png
new file mode 100644 (file)
index 0000000..b0f4243
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png
new file mode 100644 (file)
index 0000000..f86b7b0
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_50pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png
new file mode 100644 (file)
index 0000000..6bf6817
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-result_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png
new file mode 100644 (file)
index 0000000..e556b10
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize-zoom.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png
new file mode 100644 (file)
index 0000000..94fa549
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png
new file mode 100644 (file)
index 0000000..a96aefc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_50pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png
new file mode 100644 (file)
index 0000000..1f0599e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-datasource-visualize_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-start.png b/src/MEDOP/doc/sphinx/images/xmed-gui-start.png
new file mode 100644 (file)
index 0000000..8a0a593
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-start.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png b/src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png
new file mode 100644 (file)
index 0000000..532c285
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-withframe.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png
new file mode 100644 (file)
index 0000000..f501f6c
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace-view.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png
new file mode 100644 (file)
index 0000000..081b833
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui-workspace.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui.png b/src/MEDOP/doc/sphinx/images/xmed-gui.png
new file mode 100644 (file)
index 0000000..0c91683
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png b/src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png
new file mode 100644 (file)
index 0000000..6d1845c
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-gui_70pc.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-implantation.png b/src/MEDOP/doc/sphinx/images/xmed-implantation.png
new file mode 100644 (file)
index 0000000..0f17dcc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-implantation.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-irm-diff.png b/src/MEDOP/doc/sphinx/images/xmed-irm-diff.png
new file mode 100644 (file)
index 0000000..44d5578
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-irm-diff.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-irm-field.png b/src/MEDOP/doc/sphinx/images/xmed-irm-field.png
new file mode 100644 (file)
index 0000000..1012ab1
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-irm-field.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-irm.png b/src/MEDOP/doc/sphinx/images/xmed-irm.png
new file mode 100644 (file)
index 0000000..5d20c7e
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-irm.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png
new file mode 100644 (file)
index 0000000..4e67ab1
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-datasource.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png
new file mode 100644 (file)
index 0000000..9d10513
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace-save.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png
new file mode 100644 (file)
index 0000000..3138f7a
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-userguide-example2-workspace.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png b/src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png
new file mode 100644 (file)
index 0000000..b685ecc
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-visu-importtimestamps.png differ
diff --git a/src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png b/src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png
new file mode 100644 (file)
index 0000000..1cda69b
Binary files /dev/null and b/src/MEDOP/doc/sphinx/images/xmed-visu-scalarmaptimestamps.png differ
diff --git a/src/MEDOP/doc/sphinx/index.rst b/src/MEDOP/doc/sphinx/index.rst
new file mode 100644 (file)
index 0000000..90fdc6b
--- /dev/null
@@ -0,0 +1,44 @@
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ Documentation du module XMED
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module SALOME nommé XMED (pour eXtension MED) est l'espace de
+développement des fonctions de manipulation de champs dans SALOME. Le
+contenu de ce module est amené à intégrer le module MED pour former la
+future version en préparation pour la version SALOME 7 de 2012.
+
+Documentation principale
+========================
+
+.. toctree::
+   :maxdepth: 1
+
+   xmed-specifications.rst
+   xmed-develguide.rst
+   xmed-userguide.rst
+
+Documentation du prototype 2010
+===============================
+
+Cette section décrit le prototype mis au point en 2010 pour les
+analyses de conception (maquette 2010 sur base MEDMEM)
+
+.. toctree::
+   :maxdepth: 1
+
+   xmed-prototype-overview.rst
+   xmed-prototype-develguide.rst
+   xmed-prototype-medmem.rst
+
+Documentation annexe
+====================
+
+.. toctree::
+   :maxdepth: 1
+
+   xmed-references.rst
+   xmed-workingnotes-2010.rst
+   xmed-workingnotes-2011.rst
+   xmed-workingnotes-2012.rst
+   salomedoc.rst
diff --git a/src/MEDOP/doc/sphinx/salomedoc.rst b/src/MEDOP/doc/sphinx/salomedoc.rst
new file mode 100644 (file)
index 0000000..fc2f1fd
--- /dev/null
@@ -0,0 +1,231 @@
+.. meta::
+   :keywords: SALOME, development
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Annexe : Règles de développement SALOME
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Cette annexe est un recueil de techniques de développement spécifiques
+à l'environnement SALOME et utilisées pour la mise au point du module
+XMED. Elles sont a priori utilisables pour d'autres contexte de
+développement dans SALOME.
+
+.. TODO: récupérer les fonctions génériques de VisuGUI_Tools.cxx
+.. TODO: récupérer les fonctions génériques de SMESGGUI_utils.cxx
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Récupérer la sélection dans l'arbre d'étude
+===========================================
+
+Dans une classe dérivée de ``SalomeApp_Module``, on peut utiliser un
+code de la forme suivante:
+
+.. code-block:: cpp
+ #include <SALOME_ListIO.hxx>
+ #include <LightApp_SelectionMgr.h>
+ #include <SALOME_ListIteratorOfListIO.hxx>
+ #include <SALOME_InteractiveObject.hxx>
+ // ...
+
+ // Get the selected object in the study (SObject)
+ LightApp_SelectionMgr* aSelectionMgr = this->getApp()->selectionMgr();
+ SALOME_ListIO aListIO;
+ aSelectionMgr->selectedObjects(aListIO);
+
+ // Analyse the selection. There can be more than one item.
+ SALOME_ListIteratorOfListIO It (aListIO);
+ for (; It.More(); It.Next()) {
+   Handle(SALOME_InteractiveObject) anIO = It.Value();
+   SALOMEDS::SObject_var aSObject = aStudy->FindObjectID(anIO->getEntry());
+
+   // Check if the selected object is relevant for the operation
+   // ...
+
+   // Process the SObject if it's relevant
+   // ...
+   
+ }
+
+On peut noter qu'une variable ``aStudy`` est requise. Elle représente
+l'étude SALOME sur laquelle s'oppère la sélection. L'étude active
+(impliquée dans la sélection) peut être obtenue au moyen du
+gestionnaire d'étude (voir :ref:`ci-dessous <salomedoc_getActiveStudy>`).
+
+Réglage du curseur graphique
+============================
+
+Dans le cas où le traitement est long, il peut être intéressant
+d'encadrer l'opération par un vérouillage du curseur de sélection:
+
+.. code-block:: cpp
+
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+
+ // Do the job
+ // ...
+
+ QApplication::restoreOverrideCursor();
+
+
+Les variables pour la gestion de l'étude
+========================================
+
+Les variables CORBA
+-------------------
+
+Les variables CORBA comme le serveur de noms (naming service) et le
+gestionnaire de cycle de vie des objets (LifeCycleCRORBA) sont
+fréquement utilisés. Dans le contexte d'une application (classe de
+type ``SalomeApp_Module``), il est possible de récupérer simplement
+des instances de ces variables par les commandes suivantes:
+
+.. code-block:: cpp
+
+   #include <SalomeApp_Application.h>
+   #include <SALOME_NamingService.hxx>
+
+   CORBA::ORB_var               orb           = SalomeApp_Application::orb();
+   SALOMEDSClient_StudyManager* studyMgr      = SalomeApp_Application::studyMgr();
+   SALOME_NamingService*        namingService = SalomeApp_Application::namingService();
+   SALOME_LifeCycleCORBA*       lcc           = SalomeApp_Application::lcc();
+
+Pour un usage en dehors de l'application graphique (par exemple au
+niveau du container), l'orb peut être obtenu par les mécanismes
+standard d'omniORB:
+
+.. code-block:: cpp
+
+   CORBA::ORB_var orb = CORBA::ORB_init(0,0);
+
+L'orb est par exemple utile à récupérer pour la sérialisation des
+objets CORBA et la manipulation des références sous forme de chaîne de
+caractères:
+
+.. code-block:: cpp
+
+   // We suppose here that we have a CORBA object reference (object of
+   // type *_ptr or *_var), for example a SALOME_MED::MED object.
+   SALOME_MED::MED_ptr medObj = ... // anything to get this object  
+   QString medIOR = orb->object_to_string(medObj);
+
+   SALOME_MED::MED_ptr anOtherRefToMedObj = orb->string_to_object(medIOR)
+
+.. note: this serialization can be used to communicate between a GUI
+   and a component in a container, or between the C++ context and the
+   python context.
+
+.. _salomedoc_getActiveStudy:
+
+Récupérer l'étude active
+------------------------
+
+Le concept d'étude active est un concept GUI. Il désigne l'étude en
+cours d'usage au niveau de l'interface graphique. 
+
+.. note: Pour rappel, l'étude est un objet CORBA de type
+   ``SALOMEDS::Study`` qui héberge physiquement les ``SObject``
+   pointant vers les données. L'arbre d'étude ("Object browser") est
+   une représentation graphique de cet objet.
+
+L'étude active peut être obtenue au moyen du gestionnaire
+d'étude. Dans le corps d'une classe de type ``SalomeApp_Module``, ceci
+peut se faire par un code de la forme suivante:
+
+.. code-block:: cpp
+
+  #include "SALOMEconfig.h"
+  #include CORBA_SERVER_HEADER(SALOMEDS)
+  #include <SalomeApp_Application.h>
+  #include <SALOME_NamingService.hxx>
+
+  // ...
+
+  // Get the study id of the active study
+  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*> (this->getApp()->activeStudy());
+  _PTR(Study) aCStudy = appStudy->studyDS();
+  int aStudyID = aCStudy->StudyId();
+
+  // Then get the study manager
+  SALOME_NamingService *aNamingService = SalomeApp_Application::namingService();
+  CORBA::Object_var anObject = aNamingService->Resolve("/myStudyManager");
+  SALOMEDS::StudyManager_var aStudyManager = SALOMEDS::StudyManager::_narrow(anObject);
+
+  // Finally, request the study manager for the study (SALOMEDS::Study)
+  SALOMEDS::Study_var aStudy = aStudyManager->GetStudyByID(aStudyID);
+
+
+Communiquer avec la console python
+==================================
+
+La console python désigne l'interpréteur embarqué dans l'interface
+graphique de SALOME (GUI). Elle est également désignée comme
+l'interface textuelle de SALOME (TUI) car elle permet de piloter
+SALOME au moyen de commandes en syntaxe python.
+
+Le paragraphe montre comment communiquer avec cette interface texte
+depuis le contexte C++ de l'interface graphique, en particulier pour
+déclencher l'exécution de commandes.
+
+Le code se situe donc au sein d'une classe de type
+``SalomeApp_Module`` (de laquelle hérite la partie graphique d'un
+module SALOME, de nom ``<MODULE_NAME>GUI``). Cette classe possède une
+méthode ``getApp()`` par laquelle on peut récupérer une instance de la
+console python embarquée (this->getApp()->pythonConsole()).
+
+Le code suivant illustre l'envoie d'une commande python par ce
+mécanisme. Dans cette exemple, on défini une variable ``id`` dans la
+console python comme l'identifiant de l'étude active:
+
+.. code-block:: cpp
+
+   #include <PyConsole_Console.h>
+   #include <QString>
+   #include <QStringList>
+
+   PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+   QStringList commands;
+   commands+="import salome";
+   commands+="id=salome.myStudyId";
+      
+   QStringListIterator it(commands);
+   while (it.hasNext()) {
+       pyConsole->exec(it.next());
+   }
+
+Dans ce deuxième exemple, on cherche à reconstituer dans le contexte
+de la console python un pointer vers un objet med instancié dans le
+contexte C++ de l'application graphique. Pour cela, on communique la
+référence de l'objet sous la forme sérialisé (IOR pour un objet
+CORBA):
+
+.. code-block:: cpp
+
+   #include <PyConsole_Console.h>
+   #include <QString>
+   #include <QStringList>
+   #include <SalomeApp_Application.h>
+
+   // We suppose here that we have a CORBA object reference (object of
+   // type *_ptr or *_var), for example a SALOME_MED::MED object.
+   SALOME_MED::MED_ptr medObj = ... // anything to get this object  
+
+   // Get the IOR of this object
+   QString medIOR = SalomeApp_Application::orb()->object_to_string(medObj);
+
+   PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+   QStringList commands;
+   commands+="import salome";
+   commands+=QString("med=salome.orb.string_to_object(\"%1\")").arg(medIOR);
+      
+   QStringListIterator it(commands);
+   while (it.hasNext()) {
+       pyConsole->exec(it.next());
+   }
diff --git a/src/MEDOP/doc/sphinx/xmed-definitions.rst b/src/MEDOP/doc/sphinx/xmed-definitions.rst
new file mode 100644 (file)
index 0000000..cfd0bc1
--- /dev/null
@@ -0,0 +1,88 @@
+.. AVERTISSEMENT:
+.. Ce fichier contient les définitions globales à la documentation. Il
+.. peut être inclu au moyen de la directive rst "include" pour
+.. disposer des définitions dans le fichier qui fait l'inclusion.
+.. Pour éviter de polluer les textes dans lequel ce fichier est inclu,
+.. il est interdit de faire afficher du texte par ce document de
+.. définition.
+
+.. REFERENCES DOCUMENTAIRES:
+.. (les documents sont fournis dans le répertoire _static/documents)
+
+.. You can refer to this reference using the keyword: |REF_EDF_VCA_H-I2C-2009-03595-FR|_
+.. |REF_EDF_VCA_H-I2C-2009-03595-FR| replace:: H-I2C-2009-03595-FR: Manipulation de champs dans SALOME - Orientations générales
+.. _REF_EDF_VCA_H-I2C-2009-03595-FR: _static/documents/20091218_EDF_VCANO_H-I2C-2009-03595-FR.pdf
+
+.. You can refer to this reference using the keyword: |REF_CEA_VBE_MEDMEM|_
+.. |REF_CEA_VBE_MEDMEM| replace:: Guide utilisateur de MED mémoire
+.. _REF_CEA_VBE_MEDMEM: _static/documents/20070105_CEA_VBERGEAUD_GuideutilisateurMEDMEMOIRE.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_GBO_WORKNOTE|_
+.. |REF_EDF_GBO_WORKNOTE| replace:: XMED: Notes de travail
+.. _REF_EDF_GBO_WORKNOTE: _static/documents/20110309_XMED_scan_notes.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_ELO_REM|_
+.. |REF_EDF_ELO_REM| replace:: XMED: Remarques E. Lorentz
+.. _REF_EDF_ELO_REM: _static/documents/20110309_XMED_scan_remarques_ELORENTZ.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP01|_
+.. |REF_EDF_PRESMANIPCHP01| replace:: Séminaire EDF-CEA de janvier 2010: manipulation de champs
+.. _REF_EDF_PRESMANIPCHP01: _static/documents/20100129_MAN_seminaireEDF-CEA_all.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP02|_
+.. |REF_EDF_PRESMANIPCHP02| replace:: Révue EDF-CEA: maquette de manipulation de champs
+.. _REF_EDF_PRESMANIPCHP02: _static/documents/20101027_MAN_revueEDF-CEA.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_PRESMANIPCHP03|_
+.. |REF_EDF_PRESMANIPCHP03| replace:: Séminaire EDF-CEA de mars 2011: manipulation de champs, maquette 2010
+.. _REF_EDF_PRESMANIPCHP03: _static/documents/20110310_seminaireEDF-CEA_maquetteXMED.pdf
+
+.. PRESENTATIONS:
+
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_PDF|_
+.. |REF_EDF_JUS2011_PDF| replace:: JUS2011: outils de manipulation de champs
+.. _REF_EDF_JUS2011_PDF: _static/presentations/20111115_JUS-2011/20111115_JUS2011_manipulation_de_champs.pdf
+
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV1|_
+.. |REF_EDF_JUS2011_OGV1| replace:: JUS2011: outils de manipulation de champs - Exemple 1
+.. _REF_EDF_JUS2011_OGV1: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_1.ogv
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV3|_
+.. |REF_EDF_JUS2011_OGV3| replace:: JUS2011: outils de manipulation de champs - Exemple 3
+.. _REF_EDF_JUS2011_OGV3: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_3.ogv
+.. You can refer to this reference using the keyword: |REF_EDF_JUS2011_OGV4|_
+.. |REF_EDF_JUS2011_OGV4| replace:: JUS2011: outils de manipulation de champs - Exemple 4
+.. _REF_EDF_JUS2011_OGV4: _static/presentations/20111115_JUS-2011/20111115_JUS2011_medop_exemple_4.ogv
+
+
+
+.. LIENS EXTERNES:
+.. (l'accès nécessite le réseau intranet EDF et internet)
+
+.. You can refer to this reference using the keyword: |LINK_EDF_MEDDOC|_
+.. |LINK_EDF_MEDDOC| replace:: Modèle MED
+.. _LINK_EDF_MEDDOC: http://med.der.edf.fr/logiciels/med-2.3.6/doc/html/modele_de_donnees.html
+
+.. You can refer to this reference using the keyword: |LINK_EDF_MEDFICHIERDOC|_
+.. |LINK_EDF_MEDFICHIERDOC| replace:: Documentation de MED fichier
+.. _LINK_EDF_MEDFICHIERDOC: http://med.der.edf.fr/logiciels/med-2.3.6/doc
+
+.. You can refer to this reference using the keyword: |LINK_EDF_SALOME_MED__MED|_
+.. |LINK_EDF_SALOME_MED__MED| replace:: SALOME_MED::MED
+.. _LINK_EDF_SALOME_MED__MED: http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/interfaceSALOME__MED_1_1MED.html
+
+.. RENVOIES:
+
+.. You can refer to this reference using the keyword: |SEE_MEDMEM_CORBA|
+.. |SEE_MEDMEM_CORBA| replace:: :ref:`L'interface CORBA SALOME_MED<xmed-medmem_corbainterface>`
+
+
+.. SNAPSHOTS:
+
+.. |XMED_SPECIFICATIONS_PDF| replace:: version pdf
+.. _XMED_SPECIFICATIONS_PDF: _static/documents/xmed-specifications.pdf
+
+.. |XMED_DEVELGUIDE_PDF| replace:: version pdf
+.. _XMED_DEVELGUIDE_PDF: _static/documents/xmed-develguide.pdf
+
+.. |XMED_USERGUIDE_PDF| replace:: version pdf
+.. _XMED_USERGUIDE_PDF: _static/documents/xmed-userguide.pdf
diff --git a/src/MEDOP/doc/sphinx/xmed-develguide.rst b/src/MEDOP/doc/sphinx/xmed-develguide.rst
new file mode 100644 (file)
index 0000000..be5d72b
--- /dev/null
@@ -0,0 +1,239 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, med, développement
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Guide de développement
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_DEVELGUIDE_PDF|_)
+
+Ce document est la documentation technique du module XMED. Il fournit
+les instructions à suivre pour installer le module en vue d'un travail
+de développement, puis décrit les éléments de conception qui
+structurent le module.
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+.. warning:: Ce document est en travaux. Tant que cet avis n'aura pas
+   disparu, veuillez en considérer le plan et le contenu encore
+   incomplets, temporaires et sujets à caution.
+
+Mise en place d'un espace de développement
+==========================================
+
+Gestion de configuration du module XMED
+---------------------------------------
+
+Les sources du module (répertoire ``xmed``) sont archivés en dépôt de
+configuration dans une base git du projet NEPAL. Ils peuvent être
+récupérés au moyen de la commande::
+
+ $ git clone git@cli70rw.der.edf.fr:xom/xmed.git
+
+Cette commande installe un répertoire ``xmed`` contenant l'ensemble
+des sources du module XMED.
+
+Le module XMED a pour pré-requis logiciel la plateforme SALOME:
+
+* SALOME version 6.1.3 (au moins) à télécharger à l'URL
+  http://pal.der.edf.fr/pal/projets/pal/releases/V6_1_3
+* On peut également utiliser une version dérivée comme SALOME-MECA 2010.1
+* Installer la plate-forme choisie selon les instructions fournies.
+
+Le module XMED utilise également une bibliothèque interne au projet
+NEPAL, appelée XSALOME, et qui fournit une extension aux fonctions de
+SALOME pour un usage de développement (XSALOME signifie eXtension
+SALOME). Les sources de cette bibliothèque doivent être récupérés au
+moyen de la commande::
+
+ $ git clone git@cli70rw.der.edf.fr:xom/xsalome.git
+
+Cette commande installe un répertoire ``xsalome`` contenant l'ensemble
+des sources de la bibliothèque XSALOME.
+.. note:: La bibliothèque XSALOME n'est pas un module SALOME mais une
+   simple bibliothèque de fonctions qui complète ou rend plus facile
+   d'utilisation les fonctions de SALOME. Elle NE DOIT EN AUCUN CAS
+   être intégrée à d'autres projets que les projets internes NEPAL ou
+   MAILLAGE. Il s'agit en effet d'une bibliothèque de transition qui
+   héberge des développements destinés à être reversés dans la
+   plate-forme SALOME. Le contenu et les interfaces de XSALOME ne peut
+   donc être garanti sur le long terme.
+
+Installation et lancement de l'application
+------------------------------------------
+
+L'installation suppose qu'une version 6.1.3 de SALOME (ou plus) est
+disponible et que le shell de travail est étendu avec l'environnement
+de SALOME. En général, par des commandes de la forme::
+
+ $ . /where/is/salome/prerequis.sh
+ $ . /where/is/salome/envSalome.sh
+
+La compilation des modules xsalome et xmed suit le standard SALOME. La
+bibliothèque xsalome est un prérequis à la compilation de xmed. Pour
+cela, la variable d'environnement XSALOME_DIR doit être spécifiée pour
+la configuration de la procédure de reconstruction de xmed::
+
+ $ export XSALOME_DIR=<xsalome_installdir>
+
+Aprés l'installation de xmed, il est possible de générer
+automatiquement une application SALOME prête à l'emploi pour la
+manipulation de champs::
+
+ $ <xmed_installdir>/bin/salome/xmed/appligen/appligen.sh
+
+Cette commande génére un répertoire ``appli`` à l'emplacement où elle
+est exécutée. Il reste à lancer l'application SALOME au moyen de la
+commande::
+ $ ./appli/runAppli -k
+
+Exécution des tests unitaires
+-----------------------------
+
+Les tests unitaires peuvent être exécutés au moyen de scripts python
+lancés depuis une session shell SALOME. Dans un nouveau shell, taper::
+
+ $ ./appli/runSession
+ [NS=mars:2810]$ python appli/lib/python2.6/site-packages/salome/xmed/test_medoperation.py
+
+L'exécution imprime un rapport détaillant le résultat pour chaque
+fonction de test::
+
+ test_addition (__main__.MyTestSuite) ... ok
+ test_arithmetics (__main__.MyTestSuite) ... ok
+ test_composition (__main__.MyTestSuite) ... FAIL
+ test_litteral_equation (__main__.MyTestSuite) ... ok
+ test_modification_of_attributes (__main__.MyTestSuite) ... ok
+ test_unary_operations (__main__.MyTestSuite) ... ok
+ test_update_metadata (__main__.MyTestSuite) ... ok
+
+Les scripts de test sont:
+
+* ``test_medoperation.py``: tests des operations de champs telles
+  qu'elles sont mises en oeuvre depuis l'interface textuelle.
+* ``test_xmed.py``: tests des composants CORBA mis en oeuvre
+  (``MEDDataManager`` et ``MEDCalculator``)
+
+Architecture du module XMED
+===========================
+
+Le module MED pour la manipulation de champs est composé de:
+
+* une bibliothèque de fonctions pour le traitement de données sur des
+  maillages et des champs conformes au modèle MED (package
+  MEDCoupling, MEDLoader et REMAPPER);
+* une interface graphique pour la mise en oeuvre des cas standard de
+  manipulation de champs;
+* une ensemble d'outils pour intervenir sur des fichiers au format
+  MED.
+
+Une bibliothèque de fonctions pour le traitement de données
+-----------------------------------------------------------
+
+La figure ci-dessous montre la structure des paquets logiciels qui
+constituent la bibliothèque:
+
+.. image:: images/medlayers.png
+   :align: center
+
+Elle comprend en particulier les paquets suivants:
+
+* MEDCoupling: qui décrit les structures de données pour porter les
+  maillages et les champs
+* MEDLoader: qui fournit les fonctions de persistence sous forme de
+  fichiers au format MED (lecture et écriture).
+* REMAPPER:
+
+Il est important de noter que MEDCoupling n'a aucune dépendance
+logicielle autre que la bibliothèque C++ standard. Ceci permet
+d'envisager son implantation dans un code de calcul ou un outil de
+traitement sans tirer l'ensemble pré-requis de SALOME.
+
+Une interface graphique pour l'exécution des cas standard
+---------------------------------------------------------
+
+
+Un ensemble d'outils pour le traitement de fichiers
+---------------------------------------------------
+
+
+Description des composants
+==========================
+
+MEDDataManager - Le gestionnaire des données de session
+-------------------------------------------------------
+
+Le composant MEDDataManager s'occupe de fournir les données MED sur
+demande des interfaces clientes, en particulier pour module de
+pilotage fieldproxy.py. Ces données peuvent avoir plusieurs sources,
+en général elle proviennent d'un fichier au format med contenant des
+champs définis sur des maillages. Les données sont identifiées à la
+lecture des métadonnées de description dans le fichiers med, puis les
+valeurs des champs et les maillages support sont chargés au besoin.
+
+Le chargement des métadonnées de description se fait par la méthode::
+
+  addDatasource(const char \*filepath)
+
+
+
+Eléments d'implémentation
+=========================
+
+Ecrire un service CORBA qui retourne une sequence de FieldHandler:
+
+.. code-block:: cpp
+
+  MEDOP::FieldHandlerList * MyFunction(...) {
+    vector<MEDOP::FieldHandler*> fieldHandlerList;
+    ...
+  
+    fieldHandlerList.push_back(fieldHandler);
+  
+    // Map the resulting list to a CORBA sequence for return:
+    MEDOP::FieldHandlerList_var fieldHandlerSeq = new MEDOP::FieldHandlerList();
+    int nbFieldHandler = fieldHandlerList.size();
+    fieldHandlerSeq->length(nbFieldHandler);
+    for (int i=0; i<nbFieldHandler; i++) {
+      fieldHandlerSeq[i] = *fieldHandlerList[i];
+    } 
+    return fieldHandlerSeq._retn();
+  }
+
+Ecrire un service CORBA qui retourne une structure CORBA:
+
+.. code-block:: cpp
+
+    MEDOP::FieldHandler * fieldHandler = new ...
+    _fieldHandlerMap[fieldHandler->id] = fieldHandler;
+
+    // >>> WARNING: CORBA struct specification indicates that the
+    // assignement acts as a desctructor for the structure that is
+    // pointed to. The values of the fields are copy first in the new
+    // structure that receives the assignement and finally the initial
+    // structure is destroyed. In the present case, WE WANT to keep
+    // the initial fieldHandler in the map. We must then make a deep
+    // copy of the structure found in the map and return the copy. The
+    // CORBA struct specification indicates that a deep copy can be
+    // done using the copy constructor.  <<<
+    return new MEDOP::FieldHandler(*fieldHandler);
+
+
+
+ANNEXE: Bug en cours
+====================
+
+TO FIX:
+
+* la composition d'opérations n'est pas possible (ex: 2*f1+f2) car
+  2*f1 est indiqué comme non compatible (il semble qu'il n'ai pas la
+  reference correcte vers le maillage).
+* le script de test test_medoperation.py plante si le module xmed n'a
+  pas été chargé avec des données chargées.
diff --git a/src/MEDOP/doc/sphinx/xmed-prototype-develguide.rst b/src/MEDOP/doc/sphinx/xmed-prototype-develguide.rst
new file mode 100644 (file)
index 0000000..de2387b
--- /dev/null
@@ -0,0 +1,731 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, XMED
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Démonstrateur XMED, documentation technique
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Cette note fait la synthèse des développements effectués pour le
+maquettage des fonctions de manipulation de champs dans SALOME. Elle
+présente les principes retenus en matière de conception, c'est-à-dire
+concernant les mécanismes techniques sous-jacents, et en matière
+d'ergonomie, c'est-à-dire concernant les modalités d'utilisation dans
+l'environnement SALOME.
+
+Ces principes sont illustrés par des développements implantés dans le
+module XMED, développé pour les besoins de l'analyse, et dans le
+module MED distribué avec la plateforme SALOME.
+
+.. note:: la lecture de ce chapitre demande une connaissance de la
+   structure de classes du module MED, en particulier la distinction
+   entre les classes ``MEDMEM::*`` et les servants CORBA associés
+   (classe ``SALOME_MED::*``).
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Principes directeurs
+====================
+
+Objectif et motivation
+----------------------
+
+L'objectif de maquettage est de trouver une architecture technique qui
+permet d'exécuter le cas d'utilisation suivant:
+
+* Chargement d'un fichier med dans SALOME (a priori dans le module MED)
+* Sélection graphique des champs de l'étude à mettre à disposition
+  dans la console utilisateur ("calculette" en mode texte qui
+  concraitement correspond à l'interface python de SALOME).
+* Dans la calculette, exécution d'opérations algébriques (+,-,*,/)
+  entre champs avec possibilité d'utiliser des scalaires dans des
+  opérations de type transformation linéaire (y=ax+b ou y et x sont
+  des champs et a et b des scalaires). Opérations pow, sqrt.
+* Possibilité de visualiser les champs produits avec VISU pour
+  contrôle des résultats.
+* Possibilité d'exporter des champs produits dans un fichier med.
+
+Eléments de contexte
+--------------------
+
+Les opérations de manipulation de champs sont en grande partie
+implémentées dans la bibliothèque MEDMEM. Pour illustration, le
+fragment de code ci-dessous montre comment une addition de champ peut
+être opérée en python:
+
+.. code-block:: python
+
+    from libMEDMEM_Swig import MedDataManager
+    from xmed.helper import readMed, writeMed
+
+    # Load the medmem data structure from a med file
+    med = readMed("/tmp/input.med")
+    # Then create a med data manager to deal with the fields data
+    dm  = MedDataManager(med)
+    # Get the timestamps (dt,it)=(-1,-1) of the fields "testfield1" and "testfield2"
+    f1 = dm.getFieldDouble("testfield1",-1,-1)
+    f2 = dm.getFieldDouble("testfield2",-1,-1)
+
+    # Create a new field as the sum of f1 and f2
+    r  = f1 + f2
+    # And add this new field to the med data structure
+    med.addField(r)
+
+    # Finally, write the whole data in an output med file
+    writeMed(med,"/tmp/output.med")
+
+Ceci montre que les champs peuvent être manipulés avec une interface
+relativement ergonomique (une addition de deux champs f1 et f2 s'écrit
+f1+f2) tant que l'on manoeuvre des objets MEDMEM purs (classes C++ du
+package MEDMEM et wrapping python du package MEDMEM_SWIG).
+
+Par ailleurs, le fonctionnement actuel des modules SALOME qui
+manoeuvrent des données MED est d'instancier les structures de données
+MEDMEM au niveau de la partie serveur, c'est-à-dire au niveau des
+servants CORBA hébergés dans le processus ``SALOME_Container``, et de
+donner accés à ces données depuis l'étude SALOME au travers de
+pointeurs CORBA. Ce choix d'architecture présente l'avantage de
+centraliser au niveau serveur la gestion du cycle de vie des données
+informatiques et de pouvoir distribuer des "poignées" pour manipuler
+ces données depuis chaque point de l'application qui sait accéder au
+bus CORBA, l'interface graphique en particulier.
+
+
+Hypothèse de travail
+--------------------
+
+Compte-tenu de l'objectif de maquettage et des éléments de contexte
+existant, on cherche une solution dans le cadre des hypothèses
+de travail suivantes:
+
+* La manipulation des champs se fait dans l'environement graphique de
+  SALOME.
+* Dans cet environnement, on souhaite pouvoir sélectionner
+  graphiquement les champs à considérer, puis manipuler ces champs
+  dans l'interface texte au moyen de variables python avec une syntaxe
+  aussi simple que celle définie dans le wrapping python de MEDMEM,
+  c'est-à-dire que pour faire l'addition de 2 champs f1 et f2, on veut
+  pouvoir écrire f1+f2.
+* Les données MED sont physiquement dans la partie serveur de SALOME
+  et accessibles via des pointeurs CORBA (interface spécifiée dans
+  MED.idl). On exclu la recopie de données au niveau du client
+  graphique.
+
+Dans le cadre de ces hypothèses, la difficulté technique réside dans
+la mise au point d'une interface de communication entre des variables
+manipulées par l'utilisateur dans l'interface graphique (c'est-à-dire
+dans le processus ``SALOME_SessionServer``) et des objets MEDMEM
+instanciés dans le containeur des servants CORBA (c'est-à-dire dans le
+processus ``SALOME_Container``).
+
+
+Eléments de conception
+======================
+
+
+Implantation technique
+----------------------
+
+Le diagramme ci-dessous représente l'organisation des principaux
+paquets logiciels du module MED:
+
+.. image:: images/medmem-layers.png
+   :align: center
+
+Les cadres bleus représentent le lieu d'implantation des
+développements effectués dans le module MED pour les besoins du
+maquettage. On notera en particulier les interventions aux niveaux
+suivants:
+
+* interfaces idl: ajout de l'interface MEDOP.idl
+* package MEDMEM_I: ajout du servant SALOME_MED::MEDOP qui implémente
+  l'interface MEDOP.idl
+
+Architecture technique
+----------------------
+
+Les schéma ci-dessous représente les objets informatiques qui sont à
+l'oeuvre pour la réalisation des opérations sur les champs:
+
+.. image:: /images/xmed-architecture.png
+   :align: center
+   :alt: Objets mis en oeuvre dans l'interface de manipulation de champs
+
+On distingue les objets suivants:
+
+* Une instance de ``MEDMEM::MED``, correspondant à la structure de donnée
+  MED chargée en mémoire.
+* Des instances de ``MEDMEM::FIELD`` qui représentent les champs med
+  chargés en mémoire.
+* Une instances de ``SALOME_MED::MED`` et des instances de
+  ``SALOME_MED::FIELD`` qui sont les servants CORBA respectivement de la
+  structure med et des champs qui lui sont associés et chargés en
+  mémoire.
+* Une instance de ``SALOME_MED::MEDOP`` qui est le servant CORBA qui
+  centralise la mise en oeuvre des opérations de champs sur le serveur
+  ``SALOME_Container``. Le servant MEDOP détient en attribut une référence
+  sur la structure ``MEDMEM::MED``, ce qui lui permet d'accéder
+  directement aux champs ``MEDMEM::FIELD`` à partir de leur nom et du pas
+  de temps.
+* Des instances de ``FieldProxy`` qui correspondent aux variables
+  manipulées au niveau de l'interface graphique et qui représentent
+  les champs. Une instance de FieldProxy possède détient les
+  références des servants ``SALOME_MED::MEDOP`` et
+  ``SALOME_MED::FIELD`` sous la forme de pointeurs CORBA de noms
+  ``medop_ptr`` et ``field_ptr`` respectivement.
+* Il existe également une instance de ``MedProxy`` non représentée
+  dans ce diagramme. Cette instance correspond à une variable qui
+  permet de manipuler la structure med.
+
+.. note:: Les éléments apportés par la maquette sont les classes
+   ``SALOME_MED::MEDOP``, ``MedProxy`` et ``FieldProxy``. Les autres
+   éléments ont pu être modifiés légèrement pour les besoins de
+   l'intégration ou pour la correction de quelques bugs.
+
+Le cycle de vie de ces objets est le suivant.
+
+Pour ce qui concerne les instances de la structure ``MEDMEM::MED`` et
+des champs ``MEDMEM::FIELD``, la création est faite au moment du
+chargement du fichier med dans SALOME au moyen du module MED. A cette
+occasion, les servants CORBA associés ``SALOME_MED::MED`` et
+``SALOME_MED::FIELD`` sont créés et des références vers ces servants
+sont publiés dans l'étude. Ils peuvent donc être sélectionnés par
+l'utilisateur dans l'interface graphique. L'ensemble de ces données
+préexiste à la manipulation de champs.
+
+Les objets ``SALOME_MED::MEDOP`` sont instanciés au sein du servant
+``SALOME_MED::MED`` auquel ils sont associées. Le servant
+``SALOME_MED::MED`` possède une référence sur la structure
+``MEDMEM::MED`` et il la transmet à l'instance du servant
+``SALOME_MED::MEDOP`` qu'il construit. L'opérateur MEDOP est donc
+autonome par la suite pour manipuler les données MED, et les champs en
+particulier. Le code python ci-dessous montre comment un opérateur med
+``SALOME_MED::MEDOP`` peut être créé puis utilisé pour réaliser
+l'addition de deux champs:
+
+.. code-block:: python
+
+   import salome
+   salome.salome_init()
+   import SALOME_MED
+   
+   medComp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+   medObj  = medComp.readStructFile("myfile.med",salome.myStudyName)
+   medOp   = medObj.createMedOperator()
+   
+   f1 = medObj.getField("testfield1",-1,-1)
+   f2 = medObj.getField("testfield2",-1,-1)
+   
+   somme = medOp.add(f1,f2)
+
+Il est à noter qu'une instance de ``SALOME_MED::MEDOP`` est associé à
+une instance unique de ``SALOME_MED::MED`` (et donc indirectement de
+``MEDMED::MED``) pour toute la durée de son cycle de vie. Par contre,
+un servant ``SALOME_MED::MED`` peut être associé à plusieurs servants
+``SALOME_MED::MEDOP`` différents. Un servant ``SALOME_MED::MEDOP`` a
+une référence directe sur la structure ``MEDMEM::MED`` et peut la
+manoeuvrer pour demander des champs, faire des opérations avec ces
+champs, ajouter le champs résultat à la structure et enfin retourner
+un servant ``SALOME_MED::FIELD`` qui encapsule le champ résultat.
+
+Enfin, quelques éléments concernant la classe ``FieldProxy``. Une
+instance de ``FieldProxy`` est un objet python qui peut être
+manoeuvrée dans l'interpréteur SALOME et qui référence un champ MED
+localisé sur le serveur ``SALOME_Container`` (par le mécanisme décrit
+ci-dessus). C'est à ce niveau qu'on règle les détails d'ergonomie
+d'usage (cf. paragraphe ci-après). La création d'un objet
+``FieldProxy`` déclenche la création d'un opérateur med (instance de
+``SALOME_MED::MEDOP``) qui lui est associé et dont il conserve la
+référence CORBA en attribut (noté ``medop_ptr`` sur le diagramme). Cet
+opérateur ``medop_ptr`` peut être requêter pour exécuter toutes les
+opérations possibles sur ce champ, comme illustrer sur l'exemple
+ci-dessus.
+
+
+Rôle des objets proxy
+---------------------
+
+Dans le modèle d'architecture présenté ci-dessus, on introduit deux
+types d'objets proxy:
+
+* Les objets de classe ``FieldProxy`` qui représentent des poignées de
+  manipulation des champs ``MEDMEM::FIELD`` physiquement instanciés
+  dans le container SALOME.
+* Les objets de classe ``MedProxy`` qui représentent des poignées de
+  manipulation des structures ``MEDMEM::MED`` physiquement instanciées
+  dans le container SALOME.
+
+Elles sont instanciées dans l'interpréteur python SALOME pour
+manipulation dans l'interface textuelle à partir de la donnée du
+pointeur vers le servant ``SALOME_MED::MED`` et de l'identifiant du
+champ (le nom du champ et le pas de temps défini par le numéro d'ordre
+et le numéro d'iteration:
+
+.. code-block:: python
+
+   import salome
+   salome.salome_init()
+   import SALOME_MED
+
+   medComp = salome.lcc.FindOrLoadComponent("FactoryServer", "MED")   
+   medObj  = medComp.readStructFile("myfile.med",salome.myStudyName)
+
+   from xmed import fieldproxy
+   from xmed import medproxy
+
+   f1 = fieldproxy.getFieldFromMed(medObj, "testfield1", -1, -1)
+   f2 = fieldproxy.getFieldFromMed(medObj, "testfield2", -1, -1)
+
+   field_somme  = f1 + f2
+   field_offset = f1 + 5.3
+
+Dans cet exemple, les variables ``f1``, ``f2``, ``field_somme`` et
+``field_offset`` sont des objets de classe ``FieldProxy``. Ils
+correspondent aux variables physiquement manipulées par
+l'utilisateur pour désigner les champs dans les opérations.
+
+Ces classes proxy sont conçues pour être le lieu d'implémentation de
+l'interprétation des commandes utilisateur et donc de l'ergonomie
+de manipulation des champs au niveau l'interface textuelle. Ce point
+est développé :ref:`plus bas <develguide_execFieldOperation>`.
+
+Programmation de l'interface textuelle
+--------------------------------------
+
+Dans le cadre de la maquette, l'interface de manipulation des champs
+est l'interface textuelle python intégrée à SALOME. Dans la pratique,
+l'utilisateur manipule des variables python qui correspondent à des
+objets de classe ``FieldProxy`` équipées des fonctions requises et de
+l'ergonomie nécessaire à la mise en oeuvre des opérations (voir
+ci-dessus).
+
+Or, l'hypothèse de travail est que les données MED sont chargées dans
+SALOME et publiées dans l'étude pour point d'accés depuis l'interface
+graphique. L'utilisateur choisi un champs directement dans l'arbre
+d'étude (ou dans une interface graphique dédiée) puis demande qu'il
+soit mis à disposition dans l'interface python sous un nom de variable
+à choisir. Les captures d'écran ci-dessous montre la séquence
+graphique en images:
+
+.. |IMG_SELECT| image:: images/medop-gui-selectfield_scale.png
+.. |IMG_ALIAS| image:: images/medop-gui-aliasfield_scale.png
+
++---------------+---------------+ 
+| |IMG_SELECT|  | |IMG_ALIAS|   |
++---------------+---------------+ 
+
+L'image de gauche montre la sélection du pas de temps, l'image de
+droite la boîte de dialogue qui permet la saisie de l'alias avec
+lequel le champs sera manipulé dans l'interface textuelle. La
+validation de cette fenêtre doit mettre automatiquement le champ à
+disposition dans l'interface python SALOME et sous le nom de variable
+spécifié par l'alias saisi.
+
+Pour cela, il y a un couplage technique à programmer entre l'interface
+graphique et l'interface textuelle python, avec en particulier la
+transmission des pointeurs vers les servants CORBA mis en jeu dans la
+sélection.
+
+Ce couplage est implanté au niveau de la classe MEDGUI.cxx du module
+MED (où de la classe XMEDGUI.cxx du module XMED pour la maquette) qui
+implémente l'interface graphique du module. Pour rappel, l'interface
+graphique d'un module SALOME se présente sous la forme d'une classe
+centrale de nom ``<MODULE_NAME>GUI`` et qui spécialise la classe
+``SalomeApp_Module``. Cette classe possède une méthode ``getApp()``
+par laquelle on peut récupérer une instance de la console python
+embarquée (this->getApp()->pythonConsole()).
+
+Le code suivant illustre l'envoie d'une commande python par ce
+mécanisme. Dans cet example, on cherche à reconstituer dans le
+contexte de la console python un pointer vers un objet med instancié
+dans le contexte C++ de l'application graphique. Pour cela, on
+communique la référence de l'objet sous la forme sérialisé (IOR pour
+un objet CORBA):
+
+.. code-block:: cpp
+
+   #include <PyConsole_Console.h>
+   #include <QString>
+   #include <QStringList>
+   #include <SalomeApp_Application.h>
+
+   // We suppose here that we have a CORBA object reference (object of
+   // type *_ptr or *_var), for example a SALOME_MED::MED object.
+   SALOME_MED::MED_ptr medObj = ... // anything to get this object  
+
+   // Get the IOR of this object
+   QString medIOR = SalomeApp_Application::orb()->object_to_string(medObj);
+
+   PyConsole_Console * pyConsole = getApp()->pythonConsole();
+
+   QStringList commands;
+   commands+="import salome";
+   commands+=QString("med=salome.orb.string_to_object(\"%1\")").arg(medIOR);
+      
+   QStringListIterator it(commands);
+   while (it.hasNext()) {
+       pyConsole->exec(it.next());
+   }
+
+Le code réel de la maquette est basé sur ce principe et transmet à la
+console python des lignes de commandes qui permettent de reconstruire:
+
+* un pointeur CORBA vers le servant ``SALOME_MED::MED`` associé au
+  champ sélectionné;
+* une instance de ``FieldProxy`` qui correspond au champ sélectionné
+  et avec pour nom de variable la valeur de l'alias saisi dans
+  l'interface graphique.
+
+Au niveau du code C++ de la classe ``XMEDGUI.cxx``, cela se traduit
+par la fabrication de la liste de commandes suivante pour envoie à la
+console python par le mécanisme illustré plus haut:
+
+.. code-block:: cpp
+
+   QStringList commands;
+   commands+="from xmed.fieldproxy import getFieldFromMed";
+   commands+="from xmed.medproxy import getMedProxy";
+   commands+=QString("if not dir().__contains__('med'): med = getMedProxy(\"%1\")").arg(medIOR);
+   commands+=QString("%1=getFieldFromMed(med,\"%3\",%4,%5)").arg(*alias).arg(fieldName).arg(orderIndex).arg(iterationIndex);
+
+Les variables ``medIOR``, ``fieldName``, ``orderIndex`` et
+``iterationIndex`` sont construites à partir du champ sélectionné par
+des techniques de programmation standard dans SALOME qu'on peut
+examiner en détail dans la classe ``XMEDGUI`` (voir méthode
+``XMEDGUI::LoadIntoPythonConsole()``). La variable ``alias`` est la
+chaîne saisie par l'utilisateur dans la fenêtre de dialogue.
+
+Le point important à noter ici est que les données à transmettre
+doivent être fournies sous forme de chaînes de caractères ou de types
+simples. C'est pourquoi la référence au servant CORBA
+``SALOME_MED::MED`` est transmise ici sous la forme de son IOR,
+c'est-à-dire une chaîne de caractères qui permet l'identification de
+l'objet au niveau du bus CORBA.
+
+Au niveau de la console python cela correspond à l'exécution des
+commandes suivantes:
+
+.. code-block:: python
+
+   from xmed.fieldproxy import getFieldFromMed
+   from xmed.medproxy import getMedProxy
+   
+   med = getMedProxy("IOR:010000001700000049444c3a53414c4f4d455f4d45442f4d45443a312e300000010000000000000064000000010102000e0000003133302e39382e37372e313733009e0a0e000000feadc4ca4c00003169000000001100000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100")
+   
+   f1=getFieldFromMed(med,"testfield1",-1,-1)
+
+Ce jeu d'instructions reconstitue un pointeur vers le servant CORBA
+``SALOME_MED::MED`` à partir de son identifiant IOR (voir la fonction
+``getMedProxy(...)``, puis crée une instance de ``FieldProxy``
+associée à ce servant (en fait associée au servant
+``SALOME_MED::MEDOP`` créé sur demande par le servant
+``SALOME_MED::MED``, voir la fonction ``getFieldFromMed(...)``).
+
+.. _develguide_execFieldOperation:
+
+Exécution des opérations sur le champs
+--------------------------------------
+
+Les variables définies dans l'interface textuelle pour désigner les
+champs à manipuler sont des objets de classe ``FieldProxy``.
+
+Cette classe a une propriété remarquable, elle est construite sur un
+design pattern de type "Proxy" qui pointe vers un servant
+``SALOME_MED::FIELD``. Cela signifie que l'on ne peut pas accéder
+directement au servant vers lequel il pointe, mais que l'on passe
+systématiquement par une procédure de l'objet proxy qui fait "boîte
+aux lettres":
+
+.. code-block:: python
+
+   class FieldProxy:
+
+     def __getattr__( self, name ):
+        """
+        This method realizes the proxy pattern toward the servant
+        SALOME_MED::FIELD.
+        """
+        return getattr( self.__field_ptr, name )
+
+Ce pattern permet l'implémentation de pré-traitement et/ou de
+post-traitement suivant le type d'accés que l'on cherche à faire.
+
+Il permet aussi et surtout de fournir un objet python qui présente
+l'interface de ``SALOME_MED::FIELD`` dotée d'extentions adhoc pour les
+operations de champs. Ici, python est ton ami, car il s'agit pour cela
+d'équiper la classe ``FieldProxy`` des automatismes prévus nativement
+par python pour les operations entre objets. En particulier, la
+re-définition des fonctions internes ``__add__`` (opérateur addition),
+``__sub__`` (opérateur soustraction), ``__mul__`` (opérateur
+multiplication) et ``__div__`` (opérateur division) au sein de la
+classe ``FieldProxy``, permet de prendre la main sur le comportement
+des opérations algébriques et de définir une ergonomie sur mesure. Par
+exemple, la méthode ``__add__`` peut gérer les variantes "f1+f2"
+(ajout de deux variables de type FieldProxy) et "f1+5.3" (ajout d'un
+réel à une variable de type FieldProxy):
+
+.. code-block:: python
+
+   class FieldProxy:
+
+     def __add__(self, operande):
+        """
+        This can process the addition of two fields or the addition of
+        a scalar to a field. It depends weither the operande is a
+        FieldProxy or a simple scalar numerical value.
+        """
+        if isinstance(operande, FieldProxy):
+            # The operande is an other field
+            otherField_ptr = operande.__field_ptr
+            rfield_ptr = self.__medOp_ptr.add(self.__field_ptr, otherField_ptr)
+        else:
+            # The operande is a scalar numerical value that must be
+            # considered as an offset in a linear transformation
+            factor = 1
+            offset = operande
+            rfield_ptr = self.__medOp_ptr.lin(self.__field_ptr, factor, offset)
+        return FieldProxy(self.__med_ptr, rfield_ptr)
+
+Il est à noter que dans les deux cas de figure (opérande=champ ou
+opérande=scalaire), la fonction délègue la réalisation concrète de
+l'opération au servant ``SALOME_MED::MEDOP`` (identifié ici par
+l'attribut ``self.__medOp_ptr`` et que l'on appelera l'*opérateur
+MEDOP* dans la suite pour simplifier), mais n'appelle pas le même
+service de calcul (l'addition entre champs dans le premier cas,
+l'application d'une transformation linéaire de type y=factor*x+offset
+dans le deuxième cas).
+
+Pour couvrir le cas des opérations algébriques, l'opérateur MEDOP
+présentre l'interface suivante (cf. fichier ``MEDOP.idl`` qui définie
+l'interface du servant ``SALOME_MED_MEDOP``):
+
+.. code-block:: cpp
+
+    /*! Addition of the fields f1 and f2 ( f1+f2) */
+    FIELD add(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Substraction of the fields f1 and f2 (f1-f2) */
+    FIELD sub(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Multiplication of the fields f1 by f2 (f1*f2) */
+    FIELD mul(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Division of the fields f1 by f2 (f1/f2) */
+    FIELD div(in FIELD f1, in FIELD f2) raises (SALOME::SALOME_Exception);
+    /*! Power of the field f (f^power) */
+    FIELD pow(in FIELD f, in long power) raises (SALOME::SALOME_Exception);
+    /*! Linear transformation of the field f (factor*f+offset) */
+    FIELD lin(in FIELD f, in double factor, in double offset) raises (SALOME::SALOME_Exception);
+    /*! Dublication of the field f */
+    FIELD dup(in FIELD f) raises (SALOME::SALOME_Exception);
+
+Cette interface est implémentée dans la classe C++ ``MEDOP_i`` du
+module MED (voir fichier ``MEDMEM_MedOp_i.hxx`` du package
+``MEDMEM_I``). C'est au sein des instances de cette classe que sont
+réalisées les opérations et que sont produites physiquement les
+données. Typiquement, les opérations présentées ici produisent un
+champ ``MEDMEM::FIELD`` sur la base duquel elle fabrique un servant
+``SALOME_MED::FIELD`` pour finalement retourner un pointeur CORBA sur
+ce servant.
+
+Ce mécanisme global peut être étendu sans limitation à tout les types
+d'opération qui sont envisagés dans les spécifications de manipulation
+des champs dans SALOME.
+
+
+Contrôle visuel des champs
+--------------------------
+
+Les illustrations ci-dessous montrent qu'une fonction de visalisation
+est implémentée dans la maquette pour permettre le contrôle visuel
+d'un champ au moyen d'une représentation 3D (une carte spatiale du
+module du champ dans l'exemple implémenté par défaut):
+
+.. |IMG_VISU| image:: images/medop-gui-visufield_scale.png
+.. |IMG_RESULT| image:: images/medop-gui-result_scale.png
+
++---------------+---------------+ 
+| |IMG_VISU|    | |IMG_RESULT|  |
++---------------+---------------+ 
+
+Cette fonction répond au besoin de contrôle interactif des résultats
+produits par les opérations de manipulation de champs.
+
+Il s'agit là d'un usage classique de SALOME, dans lequel on demande au
+module VISU de faire une représentation 3D d'un champ spécifié par la
+donnée du servant ``SALOME_MED::FIELD`` qui lui est associé
+(représenté par la variable ``field_ptr`` dans l'exemple ci-dessous):
+
+.. code-block:: python
+   
+   import salome
+   import VISU
+
+   visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+   visuComp.SetCurrentStudy(salome.myStudy)
+
+   # Then we can import the specified field in the VISU module. This
+   # creates an study entry in the VISU folder.
+   result = visuComp.ImportMedField(field_ptr)
+
+   meshName   = field_ptr.getSupport().getMesh().getName()
+   fieldName  = field_ptr.getName()
+   iterNumber = field_ptr.getIterationNumber()
+   scalarmap = visuComp.ScalarMapOnField(result,
+                                         meshName,
+                                         visuEntityType,
+                                         fieldName,
+                                         iterNumber)
+
+Dans ce jeu d'instructions donné pour exemple (non fonctionnel, en
+particulier à cause de la non définition de la variable
+``visuEntityType``, voir remarque plus bas), le composant VISU
+désigné ici par la variable ``visuComp`` va chercher les données du
+champ en interrogeant le servant ``SALOME_MED::FIELD`` transmis en
+argument de la fonction ``ImportMedField``, puis produit une
+représentation de type "scalarmap".
+
+.. note:: Compte-tenu des propriétés de la classe FieldProxy décrites
+   plus haut conférées par le pattern "Proxy", on peut transmettre ici
+   aussi bien le servant CORBA que l'instance du proxy (la fonction
+   ``ImportMedField`` n'y verra que du feu).
+
+Le code complet et fonctionnel de la fonction d'affichage est dans le
+corps du module python ``fieldproxy.py`` sous la forme d'une fonction
+de nom ``visuField``. Il convient de noter que cette fonction doit
+établir une correspondance entre le type des entités tel que défini
+dans MED et dans VISU:
+
+.. code-block:: python
+
+    medEntityType = field_ptr.getSupport().getEntity()
+    if (medEntityType == SALOME_MED.MED_CELL):
+        visuEntityType = VISU.CELL
+    elif (medEntityType == SALOME_MED.MED_NODE):
+        visuEntityType = VISU.NODE
+
+
+Export des résultats de calcul
+------------------------------
+
+Tous les champs produits à l'occasion des opérations entre objets
+``FieldProxy`` sont automatiquement ajoutés à la structure med à
+laquelle is sont associés. Une convention d'attribution des noms est
+implémentée de sorte que par défaut aucune précision n'est demandée à
+l'utilisateur.
+
+La structure med peut être manipulée au moyen de la variable ``med``
+créée dans l'interface textuelle comme une instance de la classe
+``MedProxy``. La classe ``MedProxy`` fournit un objet qui présente
+l'interface du servant ``SALOME_MED::MED`` étendue de quelques
+fonctions utilitaires pour la gestion et le contrôle des données.
+
+En particulier, la sauvegarde de la structure dans un fichier est
+automatisée par la méthode ``save(medfilename)``:
+
+.. code-block:: python
+
+   med = medproxy.MedProxy(medObj)
+   med.save("/tmp/output.med")
+
+Cette méthode s'occupe de définir un driver d'écriture et de procéder
+à l'enregistrement des données de la structure med (les maillages, les
+champs présents au départ et tous les champs produits depuis la
+lecture initiale).
+
+Limitations
+===========
+
+L'implémentation de la maquette limite l'usage des opérations aux cas
+de figure suivants:
+
+* Seules les operations entre champs qui partagent le même support med
+  sont possibles. Ceci est une contrainte imposé par la conception
+  actuelle de MEDMEM.
+* Le résultat d'une opérations est calculé sur toutes les composantes
+  et tout le domaine de définition des champs en opérande. Cette
+  deuxième contrainte est juste parce que les usages plus fin,
+  notemment avec la notion de domaine de définition, n'a pas encore
+  été exéminée à ce jour.
+* Le nom d'un champ produit par une opération ne correspond pas au nom
+  de la variable python par laquelle on le réceptionne et on le
+  manipule. Le nom est attribué par une convention (ceci n'est pas
+  vraiment une limitation mais une caractéristique à connaître).
+
+On note également les restriction techniques suivantes:
+
+* Les données MEDMEM sont supposées être chargées par le composant MED
+  puis référencées dans l'étude SALOME (comme c'est fait aujourd'hui
+  par le module MED).
+* Dans certain cas, python n'est pas ton ami. Pour que les opérateur
+  de la classe ``FieldProxy`` soient pris en considération dans les
+  opérations sur les champs, il est indispensable que le premier
+  opérande d'une opération unitaire soit un champ (objet de classe
+  ``FieldProxy``). Par exemple: "field_offset = field + 5.3"
+  fonctionne alors que "field_offset = 5.3 + field" ne fonctionne pas
+  car python tente de traiter la situation au moyen de la fonction
+  ``__add__`` de la classe ``float`` (qui n'est pas modifiable).
+
+
+Notice informatique
+===================
+
+Gestion de configuration
+------------------------
+
+Les développements décrits dans ce chapitre sont répartis entre les
+modules MED et XMED (développé pour l'occasion). Cette séparation est
+faite par soucis de clarté et d'efficacité de développement, mais les
+éléménts du module XMED ont vocation à intégrer le module MED dans la
+mesure où les propositions techniques sont retenues pour le
+développement à venir.
+
+Le code source du module XMED peut être récupérés par la commande
+suivante::
+
+ $ svn co svn://nepal.der.edf.fr/FIELD/XMED_SRC/trunk XMED_SRC
+
+Le pré-requis est la plate-forme SALOME version 5.1.4 (ou plus)
+équipée au minimum des modules KERNEL, GUI, MED (branche BR_medop) et
+VISU. Pour récupérer la branche BR_medop du module MED, taper la
+commande::
+
+ $ cvs -d :pserver:anonymous@cvs.opencascade.com:2401/home/server/cvs/MED co -r BR_medop MED_SRC
+
+La configuration de référence est:
+
+* XMED: révision svn 41
+* MED: tag cvs BR_medop_20101025
+
+Moyens de tests
+---------------
+
+Plusieurs types de tests unitaires sont définis (reste à les
+automatiser proprement):
+
+* Test des servants et utilitaires de manipulation python:
+
+  - Dans XMED, package xmed/tests, utiliser le script
+    ``test_medoperation.py`` dans un interpréteur python lancé dans
+    une session shell SALOME. Ce script prépare des variables de test
+    et fournit des fonctions de test unitaire (à exécuter ou pour s'en
+    inspirer). Après avoir lancé SALOME via une application virtuelle,
+    on peut taper::
+      $ <APPLI_ROOT>/runSession
+      [NS=venus:2810] $ python -i test_medoperation.py
+      >>> 
+   
+  - Ceci permet de tester en particulier l'interface ``MedOp`` et son
+    utilisation dans le module python ``fieldproxy.py``.
+
+* Test des classes MEDMEM:
+
+  - Test de MEDMEM::MedDataManager dans ``MEDMEM_MedDataManager_test.cxx``
+
+Un fichier de test basique (mais néanmoins suffisant) de nom
+``tesfield.med`` est fourni avec les sources dans le répertoire
+``<XMED_SRC>/resources/datafiles`` et dans l'installation au niveau du
+répertoire ``<INSTALLDIR>/share/salome/resources/xmed/datadir``. Il
+contient deux champs ``testfield1`` et ``testfield2`` définis sur un
+pas de temps unique (dt,it=-1,-1). Ces champs définissent des valeurs
+par éléments (MED_CELL).
diff --git a/src/MEDOP/doc/sphinx/xmed-prototype-medmem.rst b/src/MEDOP/doc/sphinx/xmed-prototype-medmem.rst
new file mode 100644 (file)
index 0000000..da331c0
--- /dev/null
@@ -0,0 +1,513 @@
+.. meta::
+   :keywords: maillage, champ, MED, MEDMEM
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Note de travail concernant l'utilisation de MEDMEM
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module MED de SALOME comporte plusieurs composants d'intérêt pour
+la manipulation de champs:
+
+* la bibliothèque MEDMEM qui fournit une interface de programmation
+  pour manoeuvrer une structure MED
+* le module CORBA SALOME_MED qui matérialise le composant SALOME
+  (serveur corba) du module MED
+* l'interopérabilité avec le module VISU qui permet la visualisation
+  des champs manipulés dans MED
+
+Les sections ci-après donnent quelques éclairages techniques sur ces
+différents aspects. Les sources de démonstration peuvent être
+récupérés depuis le dépôt svn::
+
+ $ svn export svn://nepal.der.edf.fr/OM/manifield/trunk manifield
+ $ svn export svn://nepal.der.edf.fr/FIELD/demofield/trunk demofield
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Présentation synthétique de MED
+===============================
+
+MED désigne un modèle conceptuel pour décrire des données de type
+éléments finis (éléments finis, volumes finis et éléments
+discrets). Dans l'usage courant, il permet la description et l'échange
+des données de calcul de type maillages et champs. La documentation
+complète peut être trouvée à l'URL suivantes:
+
+* |LINK_EDF_MEDDOC|_ (version 2.3).
+
+On distingue deux implémentations informatiques de ce modèle:
+
+* MED fichier: qui permet la lecture et l'écriture de données depuis
+  un fichier au format med. Les opérations de lecture/écriture sont
+  atomiques (pas de chargement de la structure de données globale).
+* MED mémoire (noté MEDMEM): qui permet le chargement en mémoire d'une
+  image de la structure de données MED contenue dans un fichier au
+  format med. Les opérations peuvent être atomiques ou
+  globales.
+
+On notera simplement ici que MEDMEM utilise MED fichier pour les
+opérations de lecture/écriture et que MED fichier est indépendant de
+MED mémoire. La documentation complète de MED fichier peut être
+trouvée à l'URL suivante:
+
+* |LINK_EDF_MEDFICHIERDOC|_
+
+La bibliothèque MEDMEM
+======================
+
+Le modèle de classes MEDMEM est structuré autour des notions de MESH
+(les maillages), de SUPPORT (le profil des entités) et de FIELD (les
+champs). Ces notions reprennent en partie des concepts du modèle
+MED. Le diagramme ci-dessous présente les classes principales:
+
+.. image:: images/med-uml-main_60pc.png
+   :align: center
+
+Le conteneur de plus haut niveau dans MEDMEM est la classe MED. La
+figure ci-dessous indique qu'une instance MED peut être associée à
+plusieurs maillage et plusieurs champs. Par contre un champ donné ne
+peut être associé qu'à un seul maillage (par l'intermédiaire du
+support). Plusieurs champs peuvent être associés au même maillage. La
+forme la plus courante est d'ailleurs une instance composé d'un
+maillage unique sur lequel sont définis plusieurs champs.
+
+On peut avoir également des configurations plus complexes, comme par
+exemple un maillage unique, plusieurs champs définis sur ce maillage
+mais avec des supports différents, par exemple parce que les valeurs
+sont définies sur des entités de maillage différentes (les éléments
+pour un champ, les noeuds pour un autre, ...)::
+
+  field1->support1->mesh
+  field2->support2->mesh
+  field3->support3->mesh
+
+On observe:
+
+* 2 champs U et V doivent avoir le même support (au sens informatique
+  du terme) pour pouvoir être en argument d'une opération (sinon
+  exception). Il faudrait accepter qu'il soit informatiquement
+  différent et vérifier la conformité conceptuelle.
+* Cette contrainte peut se comprendre car physiquement les données
+  sont stockées dans un vecteur qui couvre toutes les mailles. Le
+  support est le seul masque de lecture pour établir la correspondance
+  avec les positions dans le maillage et il est donc important qu'une
+  cohérence soit assurée.
+
+Les objets champs (FIELD) et maillage (MESH)
+--------------------------------------------
+
+Un objet MED permet d'accéder aux différentes informations concernant
+les objets MESH, SUPPORT et FIELD, mais il ne permet pas d'accéder aux
+données physiques associées à ces objets (les valeurs des composantes
+pour les champs, les mailles et leur connectivité pour les
+maillages). L'accès aux données physiques est du ressort des objets
+spécifiques MESH, SUPPORT et FIELD.
+
+Un objet MED peut être créé intégralement en mémoire. L'usage plus
+fréquent est de l'initialiser à partir de la donnée d'un fichier
+med. Pour cela, l'objet MED doit être associé à un driver
+d'entrée/sortie branché sur le fichier (``testfilename`` dans
+l'exemple):
+
+.. code-block:: cpp
+   
+   MED *myMed = new MED;
+   MED_MED_RDONLY_DRIVER *driverIn = new MED_MED_RDONLY_DRIVER(testfilename, myMed);
+   driverIn->open();
+   driverIn->readFileStruct();
+   driverIn->close();
+
+A l'occasion de la fonction readFileStruct, la structure interne de
+l'objet MED est enrichie des informations concernant les objets MESH,
+SUPPORT et FIELD contenu dans le fichier. En particulier un
+dictionnaire des champs (variable map interne) est initialisé est
+contient l'ensemble des objets ``FIELD_`` préchargés (i.e. avec les
+méta-données uniquement). Chaque objet ``FIELD_`` ainsi préchargé est
+autonome pour être chargé sur demande. On peut alors requêter l'objet
+MED pour obtenir un champ particulier (spécifié par son nom
+``fieldname`` dans l'exemple):
+
+.. code-block:: cpp
+
+   FIELD<double> *field = (FIELD<double> *)myMed->getField(fieldname, dt, it);
+
+Puis le champ qui lui est associé doit être physiquement chargé pour
+permettre la mise à jour du support:
+
+.. code-block:: cpp
+   
+   MESH * mesh = myMed->getMesh(field);
+   mesh->read();
+   myMed->updateSupport();
+
+Pour enfin charger les valeurs des composantes du champ:
+
+.. code-block:: cpp
+   
+   field->read();
+
+La numérotation des éléments de maillage
+----------------------------------------
+
+Les éléments qui composent un maillage sont caractérisés par:
+
+* Le type d'entité de l'élément, à choisir dans la liste
+  ``MED_EN::medEntityMesh``, qui contient en particulier ``MED_NODE``,
+  ``MED_FACE``, ``MED_CELL``.
+* Le type de géométrie de l'élément, à choisir dans la liste
+  ``MED_EN::medGeometryElement``, qui contient en particulier
+  ``MED_NONE``, ``MED_TRIA3``, ..., ``MED_ALL_ELEMENTS``.
+
+Les éléments sont numérotés par un indice relatif à la catégorie
+géométrique à laquelle ils appartiennent. Ainsi, si le modèle est
+composé de Na arrêtes et Nf faces de type géométrique MED_QUAD4, alors
+ces faces sont numérotées de 1 à Nf dans le modèle MED (et de manière
+persistente dans le fichier med). De même, les arrêtes sont numérotées
+de 1 à Na. Une numérotion globale implicite existe sur les éléments,
+elle consiste à parcourir l'ensemble des types géométriques dans
+l'ordre de définition du modèle de données. Ainsi, si le modèle
+contient uniquement les Na arrêtes et les Nf faces, alors l'indice
+global de la première face est Na+1.
+
+.. note:: Des exemples de code sont disponibles dans le package ``demofield``, fichier ``python/pybasicfields/MEDMEM_tester.py``.
+
+
+Binding python de MEDMEM
+------------------------
+
+Les classes du package ``MEDMEM`` (package du module ``MED`` qui
+implémentent les structures de données C++ de MED mémoire) produisent
+la bibliothèque ``libmedmem.so``. Cette ensemble de classes est en
+partie mis à disposition de l'interface python grace à une couche de
+liaison (binding Python-C++) générée par le logiciel SWIG à partir
+d'un fichier de description d'interface ``libMEDMEM_Swig.i`` (dans le
+package source ``MEDMEM_SWIG``).
+
+Ce fichier d'interface doit être mis à jour dés lors qu'une évolution
+des interfaces publiques des classes C++ MEDMEM est faite ou qu'une
+nouvelle classe est créée (du moins si l'on souhaite profiter de ces
+évolutions dans l'interface python).
+
+Cette mise à jour nécessite de prendre soin au transfert des
+structures de données entre les espaces python et C++. En particulier,
+l'utilisation des template de classe pour décrire les champs typés en
+C++ appelle une précaution de codage particulière de l'interface
+SWIG.
+
+Pour exemple, le fragment de code ci-dessous, extrait du fichier
+``libMEDMEM_Swig.i``, montre comment déclarer la nouvelle classe
+``MedDataManager`` dans l'interface:
+
+.. code-block:: cpp
+   
+   #include "MEDMEM_MedDataManager.hxx"
+
+   class MedDataManager
+   {
+     public:
+      ~MedDataManager();
+      void printFieldDouble(FIELD<double,FullInterlace> * field);
+   
+      %extend {
+        MedDataManager(char * fileName)
+        {
+         return new MedDataManager(string(fileName));
+        }
+        MedDataManager(MED * med)
+        {
+          return new MedDataManager(med);
+        }
+    
+        %newobject getFieldDouble(const char * fieldName, const int dt, const int it);
+        FIELD<double, FullInterlace> * getFieldDouble(const char * fieldName, const int dt, const int it)
+        {
+         return (FIELD<double, FullInterlace> *) self->getFieldDouble(string(fieldName), dt, it);
+        }
+      }
+  
+   };
+
+
+Utilisation de MEDMEM pour la manipulation de champs
+----------------------------------------------------
+
+Des opérations de manipulation de champs sont disponibles dans la
+bibliothèque MEDMEM standard est peuvent être utilisées dans
+l'interface python. Les quelques lignes suivantes illustrent l'usage
+qu'on peut en faire pour exécuter l'addition de deux champs sur tout
+leur espace de définition et pour un pas de temps donné:
+
+.. code-block:: python
+
+    from libMEDMEM_Swig import MedDataManager
+    from xmed.helper import readMed, writeMed
+
+    # Load the medmem data structure from a med file
+    med = readMed("/tmp/input.med")
+    # Then create a med data manager to deal with the fields data
+    dm  = MedDataManager(med)
+    # Get the timestamps (dt,it)=(-1,-1) of the fields "testfield1" and "testfield2"
+    f1 = dm.getFieldDouble("testfield1",-1,-1)
+    f2 = dm.getFieldDouble("testfield2",-1,-1)
+
+    # Create a new field as the sum of f1 and f2
+    r  = f1 + f2
+    # And add this new field to the med data structure
+    med.addField(r)
+
+    # Finally, write the whole data in an output med file
+    writeMed(med,"/tmp/output.med")
+
+.. note:: Cet exemple de code requiert les évolutions de MEDMEM
+   opérées dans la branche BR_medop (pour disposer de la classe
+   MedDataManager en particulier) et le package python ``xmed`` qui
+   fournit quelques fonctions utilitaires pour manoeuvrer les données
+   med (ce package est dans le module XMED et sera probablement à
+   terme intégré au module MED).
+
+Des limitations existent aujourd'hui pour ce type de manipulations:
+
+* les champs doivent partager le même support MED, c'est-à-dire être
+  décrit sur le même maillage et sur les mêmes entités de ce
+  maillage.
+* ...
+
+
+Remarque sur l'implémentation C++
+---------------------------------
+
+A noter l'usage de plusieurs formes d'arguments pour les fonctions:
+
+* passage des arguments par valeur ``myfunction(A a);``
+* passage des arguments par référence ``myfunction(A& a);``
+* passage des arguments par pointeur ``myfunction(A* a);``
+
+Le passage des arguments par référence est une facilité d'écriture
+pour éviter de passer un pointeur tout en évitant la récopie des
+données de la variable.
+
+.. _xmed-medmem_corbainterface:
+
+L'interface CORBA SALOME_MED
+============================
+
+Implémentation du composant MED et des servants SALOME_MED::\*
+--------------------------------------------------------------
+
+Le composant MED est un servant CORBA qui permet la manipulation de
+données MEDMEM dans l'environnement SALOME. Le composant peut fournir
+des pointeurs vers des instances de l'interface SALOME_MED (objets
+SALOMEMED::MED, SALOME_MED_FIELD, ...). Ces instances sont des
+servants CORBA qui résident dans le container et qui encapsulent les
+données MEDMEM.
+
+Le schéma ci-dessous représente les éléments informatiques qui
+composent l'architecture CORBA du module MED:
+
+.. image:: images/medmem-corba-layers.png
+   :align: center
+
+Les structures MEDMEM (données physiques) et SALOME_MED (wrapping
+CORBA) fonctionnent différement en ce qui concerne le chargement des
+données:
+
+* Dans MEDMEM, les données sont chargées à la demande (fonctions read
+  des objets) et aucune gestion n'est assurée. En particulier l'appel
+  à read alors que la donnée est déjà chargée conduit à une levée
+  d'exception. C'est à l'utilisateur de MEDMEM de prendre en charge ce
+  type de gestion.
+* Dans SALOME_MED, les données sont chargées à la création de
+  l'instance SALOME_MED::MED. Les maillages ainsi que les champs et
+  leurs données sont chargés à ce moment là et gérés dans une table de
+  type HashMap au niveau de la structure SALOME_MED::MED. Cette
+  structure remplie dés lors des fonction de gestion. L'appel à
+  SALOME_MED::MED.getField(...) ne charge pas les données mais renvoie
+  un pointeur SALOME_MED::FIELD_ptr sur les données chargées à
+  l'initialisation (ATTENTION, cette fonction est bugguée dans la
+  branche principale -> Fix dans la branche BR_medop).
+
+Une gestion intermédiaire peut être envisagée: le chargement à la
+demande géré dans une ou plusieurs tables de champs (une pour chaque
+type de valeur numérique). Une implémentation de ce type de gestion
+est illustré dans la classe ``MedDataManager`` du package MEDMEM qui prend
+en charge ce comportement pour les structures de données MED (en
+particulier les champs).
+
+Utilisation du composant MED
+----------------------------
+Le module SALOME MED fournit un module CORBA appelé SALOME_MED. Les
+interfaces de ce module CORBA sont spécifiées par les fichiers idl
+suivants:
+
+* le fichier
+  [http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/MED_8idl.html
+  ``MED.idl``] qui décrit les interfaces des objets manipulés par le
+  module SALOME_MED. On trouve en particulier les objets MESH, SUPPORT
+  et FIELD.
+* le fichier
+  [http://nepal.der.edf.fr/pub/SALOME_userguide/MED5/doc/salome/tui/MED/MED__Gen_8idl.html
+  ``MED_Gen.idl``] qui décrit les interfaces du composant SALOME
+  (c'est-à-dire le composant chargé par la commande
+  ``FindOrLoadComponent("FactoryServer", "MED")`` du
+  lyfeCycleCorba). On trouve:
+
+  - l'interface ``MED_Gen_Driver`` qui hérite de SALOMEDS::Driver
+    pour l'implémentation des services généraux des composants SALOME
+    (persistance hdf, dump)
+  - l'interface ``MED_Gen`` qui hérite des interfaces
+    ``Engines::Component`` et ``MED_Gen_Driver`` pour
+    l'implémentation des services spécifiques du composant MED.
+
+L'implémentation de ces interfaces est faites au niveau de différents
+packages des sources du module MED:
+
+* Le package ``MEDMEM_I`` qui fournit l'implémentation C++ des
+  interfaces décrites par le fichier ``MED.idl``;
+* Le package ``MED`` qui fournit l'implémentation C++ des interfaces
+  décrites par le fichier ``MED_Gen.idl``, et qui correspond à la
+  partie composant classique d'un module SALOME.
+* Le package ``MedCorba_Swig`` qui fournit une interface swig
+  générée à partir de l'implémentation C++ de ``MEDMEM_I`` et
+  ``MED``
+
+L'utilisation peut être illustrée au moyen d'exemples python (i.e. qui
+utilise l'interface swig fournie par MedCorba_Swig). Après l'import
+d'amorce systématique:
+
+.. code-block:: python
+   
+   import salome
+   salome.salome_init()
+   
+   import SALOME_MED
+   from libSALOME_Swig import *
+
+On peut charger le composant SALOME MED:
+
+.. code-block:: python
+   
+   medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+
+grâce auquel les services de chargement de la structure MED peuvent
+être invoqués. Par exemple, les commandes suivantes chargent toute la
+structure MED dans l'étude salome passée en argument:
+
+.. code-block:: python
+   
+   filePathName = "myfile.med"
+   medComp.readStructFileWithFieldType(filePathName,salome.myStudyName)
+
+Ce deuxième exemple charge la structure MED mais ne place pas le résultat dans l'étude:
+
+.. code-block:: python
+   
+   filePathName = "myfile.med"
+   medObj = medComp.readStructFile(filePathName,salome.myStudyName)
+
+On récupère à la place un objet de classe |LINK_EDF_SALOME_MED__MED|_
+qui permet une utilisation assez semblable (mais différente on le
+verra plus bas) à MEDMEM:
+
+.. code-block:: python
+
+   fieldIdx     = 1 # WRN maybe there is no field of idx=1
+   iterationIdx = 0
+   fieldName = medObj.getFieldNames()[fieldIdx]
+   dtitfield = medObj.getFieldIteration(fieldName,iterationIdx)        
+   it = dtitfield[0]
+   dt = dtitfield[1]
+   fieldObj = medObj.getField(fieldName,it,dt)
+   nbOfFields = medObj.getNumberOfFields()
+   fieldNames = medObj.getFieldNames()
+    
+   mesh = fieldObj.getSupport().getMesh()
+
+.. note::
+   Observations en vrac:
+
+   * Un FIELD_i possède un champ de type ``MEDMEM::FIELD_`` qui représente
+     le champ informatique réel (objet MEDMEM).
+   * FIELD_i::fieldMap variable static de type map qui semble gérer
+     les différentes instances de FIELD_i (~pattern factory). Cette
+     map peut être requétée au moyen d'un indice de type long  appelé
+     corbaIndex.
+   * Quand on crée un FIELD_i par le constructeur d'argument
+     ``MEDMEM::FIELD_``, le ``MEDMEM::FIELD_`` est ajouté dans la map avec
+     incrément du corbaIndex
+   * La fonction FIELD_i::read(i) redirige vers la fonction read(i) du
+     ``MEDMEM::FIELD_`` associé
+   * A CONFIRMER: Il semble que les fonctions de chargement
+     ``readStructFile*()`` charge toutes les données du fichier med,
+     alors qu'en MEDMEM seules les meta-données sont chargées.
+   * A CONFIRMER: il semble que le chargement d'une structure MED
+     CORBA peut se faire sans passer par le composant (cf. l'interface
+     de MED)
+
+Interface avec le module VISU
+=============================
+
+Des interactions sont possibles entre MED et VISU à partir du moment
+où les données med sont gérées dans l'étude, c'est-à-dire sous la
+forme d'objets SALOME_MED (voir ci-dessus) publiés dans l'étude. Les
+deux conditions sont aujourd'hui nécessaires (objet corba + publié
+dans l'étude) mais il semble que ce ne soit lié qu'à un choix
+d'interface VISU (la fonction ``ImportMed`` en particulier) qui peut
+a priori être modifié. A CONFIRMER.
+
+L'exemple de code ci-dessous (en python, mais il peut être transposé à
+une implémentation C++) montre par exemple comment envoyer au module
+VISU  une requête de visualisation d'un champs hébergé par le module
+MED (en fait, les données sont gérées au travers d'un objet corba
+SALOME_MED "délocalisé" et qui a été référencé dans l'étude dans la
+catégorie du composant MED). Les importations standard (salome,
+SALOME_MED, ...) sont supposées avoir été faites au préalable (voir
+les exemples précédents):
+
+.. code-block:: python
+   
+   # Load the med structure using MED
+   medComp=salome.lcc.FindOrLoadComponent("FactoryServer", "MED")
+   filePathName = "myfile.med"
+   medComp.readStructFileWithFieldType(filePathName,salome.myStudyName)
+    
+   # Get the VISU component
+   import VISU
+   visuComp = salome.lcc.FindOrLoadComponent("FactoryServer", "VISU")
+   visuComp.SetCurrentStudy(salome.myStudy)
+    
+   # Get the sobject associated to the med object named "Med"
+   aSObject = salome.myStudy.FindObject("Med")
+   isPresent, medSObj = aSObject.FindSubObject(1)
+    
+   # Finally, import the med sobject in VISU 
+   result = visuComp.ImportMed(medSObj)
+
+Il est possible de d'aller plus loin et par exemple de déclencher
+l'affichage d'une scalarmap d'un champ spécifique pour une itération
+particulière (voir la fonction
+``TEST_SALOMEMED_requestToVisu_scalarmap`` du fichier
+``SALOMEMED_tester.py`` fourni dans les sources d'exemple).
+
+Liens complémentaires:
+
+* http://nepal.der.edf.fr/pub/SALOME_userguide/VISU_V5_1_3/doc/salome/gui/VISU La documentation utilisateur en ligne du module VISU
+
+
+Notes en vrac
+=============
+
+Questions:
+
+* Comment obtenir le nom du fichier med à partir d'une structure med? 
+* Peut-on imaginer un moyen de fournir l'objet MEDMEM::MED à partir de
+  la donnée de l'objet CORBA SALOME_MED::MED?
+
+Remarques:
+
+* A part, les opérations arithmétiques (+,-,*,/), aucune opération
+  n'est définie.
diff --git a/src/MEDOP/doc/sphinx/xmed-prototype-overview.rst b/src/MEDOP/doc/sphinx/xmed-prototype-overview.rst
new file mode 100644 (file)
index 0000000..c571c6e
--- /dev/null
@@ -0,0 +1,95 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, XMED
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Démonstrateur XMED, vue d'ensemble
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Le module XMED est un espace d'expérimentation pour le développement
+des opérations de manipulation de champs. Il complète des
+développements intégrés directement dans le module MED et gérés dans
+la branche CVS BR_medop.
+
+Une maquette est au point pour illustrer les propositions en matière
+d'ergonomie d'utilisation et en matière d'architecture technique. La
+maquette permet de réaliser des cas d'utilisation de la forme:
+
+* Chargement d'un fichier med dans le module MED (ou publication par
+  un code de calcul).
+* Sélection graphique des champs de l'étude à mettre à disposition
+  dans la console utilisateur ("calculette" en mode texte qui
+  concraitement correspond à l'interface python de SALOME).
+* Dans la calculette, exécution d'opérations algébriques (+,-,*,/)
+  entre champs avec possibilité d'utiliser des scalaires dans des
+  opérations de type transformation linéaire (y=ax+b ou y et x sont
+  des champs et a et b des scalaires). Egalement quelques fonctions
+  mathématiques standard applicables sur des champs (pow, sqrt).
+* Possibilité de visualiser les champs produits avec VISU
+* Possibilité d'exporter des champs produits dans un fichier med
+
+La figure ci-dessous montre le résultat d'une séquence d'utilisation
+dans laquelle les champs "testfield1" et "testfield2" ont été
+sélectionnés dans l'arbre d'étude pour être utilisés dans la console
+textuelle sous les noms de variables f1 et f2. L'image montre le
+contrôle visuel du résultat de l'opération f1+f2-(f1-f2)^2 tapée en
+ligne de commande:
+
+.. image:: images/medop-gui-result.png
+   :align: center
+
+La séquence ci-après montre le cas d'utilisation complet en
+images:
+
+1. Sélection d'un champs sur un pas de temps dans l'arbre d'étude
+2. Saisie d'un nom de variable (alias) pour manipuler ce champ. Par
+   défaut, le nom du champ est proposé (``testfield1`` ici). Dans
+   l'exemple, l'utilisateur remplace par l'alias ``f1``.
+3. Contrôle visuel du champ ``testfield1`` manipulé par sa variable
+   ``f1`` au moyen de la commande ``f1.visu()``
+4. Chargement du champ ``testfield2`` sous le nom ``f2``, exécution de
+   l'opération ``f1+f2-(f1-f2)^2`` et contrôle visuel du résultat,
+   récupéré ici dans une variable de nom ``result``.
+
+.. |IMG_SELECT| image:: images/medop-gui-selectfield_scale.png
+.. |IMG_ALIAS| image:: images/medop-gui-aliasfield_scale.png
+.. |IMG_VISU| image:: images/medop-gui-visufield_scale.png
+.. |IMG_RESULT| image:: images/medop-gui-result_scale.png
+
++---------------+---------------+ 
+| |IMG_SELECT|  | |IMG_ALIAS|   |
++---------------+---------------+ 
+| |IMG_VISU|    | |IMG_RESULT|  |
++---------------+---------------+ 
+
+La solution technique est construite sur les principes suivants:
+
+* Les données MEDMEM sont physiquement chargées par le composant MED,
+  c'est-à-dire dans le processus ``Container`` de SALOME, et sont
+  référencées dans l'étude SALOME.
+* Les opérations sont physiquement des opérations entre objets MEDMEM
+  purs qui ont lieu dans le composant MED.
+* Les opérations sont pilotées par des objets proxy python instanciés
+  dans la console TUI puis manipulés par l'utilisateur. Ces objets
+  proxy savent accéder aux objets MEDMEM au travers de leur interface
+  CORBA.
+
+Ainsi, l'architecture technique est construite pour pouvoir travailler
+sur des données MEDMEM pur en partant de pointeurs CORBA manoeuvrés
+depuis des objets python dans l'interface textuelle de
+SALOME. L'effort principal a donc porté sur la mise au point de
+l'interface technique qui permet de lier des variables représentant
+les champs au niveau du GUI (techniquement, la calculette est
+l'interpréteur python embarqué dans le GUI, étendu de quelques
+fonctions pour la manipulation de champs), alors que les données
+MEDMEM sont physiquement disponibles uniquement au niveau des
+composants CORBA (et les opérations implémentées dans MEDMEM
+uniquement).
+
+Pour le moment, la maquette est limitée à des operations entre champs
+qui partagent le même support med (contrainte de MEDMEM) et le
+résultat est calculé sur toutes les composantes et tout le domaine de
+définition du champs (cette deuxième contrainte est juste parce que
+les extentions n'ont pas encore été examinées). Enfin, le support de
+gestion des données est supposé être l'étude SALOME et la structure
+MED qui y est publiée.
diff --git a/src/MEDOP/doc/sphinx/xmed-references.rst b/src/MEDOP/doc/sphinx/xmed-references.rst
new file mode 100644 (file)
index 0000000..30d66ec
--- /dev/null
@@ -0,0 +1,28 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Références documentaires
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. include:: xmed-definitions.rst
+
+Documents de référence:
+
+* |REF_EDF_VCA_H-I2C-2009-03595-FR|_ - Valérie Cano - décembre 2009
+* |REF_CEA_VBE_MEDMEM|_ - Vincent Bergeaud - janvier 2007
+* |LINK_EDF_MEDDOC|_ - documentation en ligne (EDF)
+
+Présentations:
+
+* |REF_EDF_PRESMANIPCHP01|_ - Valérie Cano, Guillaume Boulant - janvier 2010
+* |REF_EDF_PRESMANIPCHP02|_ - Guillaume Boulant - octobre 2010
+* |REF_EDF_PRESMANIPCHP03|_ - Guillaume Boulant - mars 2011
+* Présentation à la Journée des Utilisateurs de SALOME de 2011 (JUS2011):
+
+  - |REF_EDF_JUS2011_PDF|_ - Anthony Geay (CEA), Guillaume Boulant - novembre 2011
+  - |REF_EDF_JUS2011_OGV1|_
+  - |REF_EDF_JUS2011_OGV3|_
+  - |REF_EDF_JUS2011_OGV4|_
+
+Notes de travail:
+
+* |REF_EDF_GBO_WORKNOTE|_ - Guillaume Boulant - novembre 2010
+* |REF_EDF_ELO_REM|_ - Eric Lorentz - novembre 2010
diff --git a/src/MEDOP/doc/sphinx/xmed-specifications.rst b/src/MEDOP/doc/sphinx/xmed-specifications.rst
new file mode 100644 (file)
index 0000000..1f8cdab
--- /dev/null
@@ -0,0 +1,918 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, med
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Spécifications fonctionnelles et techniques
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_SPECIFICATIONS_PDF|_)
+
+Ce texte présente les spécifications informatiques pour le
+développement d'un module de manipulation de champs qui répond à
+l'expression de besoins formulée dans le cahier des charges
+|REF_EDF_VCA_H-I2C-2009-03595-FR|_.
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Description des cas d'application de référence
+==============================================
+
+Plusieurs cas d'applications métier sont identifiés pour piloter le
+développement du module de manipulation de champs:
+
+* **Analyser et post-traiter le résultat d'un calcul**. C'est l'usage
+  principal qui consiste typiquement à créer des champs comme le
+  résultat d'*opérations mathématiques* dont les opérandes sont des
+  champs et des scalaires. On compte également dans cette catégorie
+  les *opérations de restriction* qui permettent d'extraire puis
+  utiliser une partie d'un champs, c'est-à-dire de créer un champ
+  comme la restriction d'un autre champ à une partie de son domaine de
+  définition (certaines composantes, certains pas de temps, limitation
+  à un groupe de mailles).
+* **Comparer des champs issus d'un calcul paramétrique**. Il s'agit
+  d'une variante du cas précédent qui consiste à mesurer et visualiser
+  les variations entre des champs issues de sources de données
+  différentes (différents fichiers med).
+* **Préparer les conditions aux limites d'une calcul**. Il s'agit de
+  pouvoir initialiser un champ sur un maillage ou un groupe de
+  mailles, c'est-à-dire créer un champ de toute pièce sur un
+  support spatial donné, par exemple par la donnée d'une fonction
+  mathématique qui donne les valeurs des composantes en fonction des
+  coordonnées spatiales.
+* **Gérer des données de calcul**. Il s'agit typiquement de pouvoir
+  rassembler au sein d'un même fichier med des champs et des maillages
+  issues de différentes sources de données, et/ou créés au travers des
+  cas d'application présentés ci-dessus.
+
+Modèle conceptuel des données
+=============================
+
+On rappelle ici les concepts utilisés dans le module et les modalités
+d'utilisation de ces concepts. Le point de vue est celui de
+l'utilisateur du module de manipulation de champs. Il s'agit
+essentiellement pour le moment d'éclaircir l'ergonomie d'usage sur le
+plan conceptuel, avant d'aborder la déclinaison en spécifications
+techniques pour lesquelles les particularités du modèle MED devront
+être intégrées à la réflexion.
+
+Concept de champ
+----------------
+
+Le concept central est celui de *champ*, c'est-à-dire une grandeur
+physique exprimée sur un domaine spatial D. La grandeur peut être de
+type scalaire (une température), de type vectorielle (une vitesse) ou
+de type tensorielle (les contraintes). En un point de l'espace, elle
+se définie donc par la donnée d'une ou plusieurs valeurs numériques
+appelées les *composantes* (1 pour un champ scalaire, 3 pour un champ
+vectoriel 3D, 6 pour un champ tensoriel symétrique 3D).
+
+.. note:: Une pratique courante au niveau des codes est de stocker
+   plusieurs grandeurs physiques différentes dans un même champs med
+   (au sens informatique du terme). Par exemple, le champ
+   électromagnétique à 6 composantes, plus le champ de température
+   scalaire peuvent techniquement être stockés dans un même champs med
+   à 7 composantes. C'est pourquoi, le module de manipulation de
+   champs doit fournir des fonctions de restrictions qui permettent
+   d'extraire certaines composantes pour former la grandeur physique à
+   étudier. Dans la suite du document, on part du principe que l'on
+   peut se ramener dans tous les cas au cas d'un champ homogène tel
+   que défini plus haut.
+
+Dans le cadre d'un modèle numérique discret, les valeurs du champ sont
+exprimées pour un nombre fini de positions, qui correspondent à des
+lieux particuliers du maillage. Suivant la nature des modèles de
+calcul, les valeurs peuvent être données par cellule, par face, par
+noeud, aux points de gauss, ...
+
+Ainsi, un champ discret est un objet dont les valeurs peuvent être
+lues selon les dimensions suivantes:
+
+* *La position p dans l'espace*, caractérisée par le type de l'élément
+  de maillage support et son numéro identifiant
+* *La composante c*, caractérisée par son indice (jusqu'à 6
+  composantes dans les modèles physiques envisagés)
+
+L'évolution d'un champ dans le temps peut être exprimée sous la forme
+d'une série temporelle, c'est-à-dire une séquence de champs donnés
+pour des instants discrets. Aussi, si l'on manipule un champ qui varie
+dans le temps, l'accès aux valeurs introduit une dimension
+supplémentaire:
+
+* *Le temps t*, caractérisé par un numéro de pas de temps
+  (correspondant en général à une étape du calcul qui a produit le champ).
+
+.. note:: Il s'agit là d'une représentation conceptuelle standard dont
+   le |LINK_EDF_MEDDOC|_ fait une expression détaillée. En
+   particulier, la position p est déterminée par la donnée du type
+   d'élément support (valeurs aux noeuds, aux mailles, aux noeuds par
+   éléments, aux points de gauss) et de l'indice de cet élément. En
+   général, le type d'éléments support est résolu à l'initialisation
+   et l'indice peut suffire au repérage dans les algorithmes. Le temps
+   t est déterminé par un numéro d'itération, qui peut éventuellement
+   être complété par un numéro d'ordre. Le cas des points de gauss
+   ajoute un cran de complexité dans la mesure où il faut repérer
+   l'entité géométrique (maille, face, arrête) puis le point de gauss
+   de cette entité. A noter que dans le modèle MED, le concept de
+   série temporelle de champ n'est pas explicitement définie et
+   l'accès à des valeurs à différents instants t1 et t2 nécessite le
+   chargement des champs ``F1=F(t1)`` et ``F2=F(t2)``.
+
+Par convention, on utilisera par la suite les notations:
+
+* **U(t,p,c)** pour désigner la valeur de la composante c d'un champ U
+  à la position p et prise à l'instant t; 
+* **U(t,p,:)** pour signifier que l'on manipule l'ensemble de toutes
+  les composantes;
+* **U(t,:,c)** pour signifier que l'on manipule le domaine de
+  définition spatial complet. 
+
+Dans une grande majorité des cas d'usage on travaille à temps t fixé
+et sur un domaine spatiale prédéfini. Aussi on utilisera également la
+notation à deux arguments ``U(:,:)`` ou tout simplement ``U`` (dès
+lors qu'il n'y a pas ambiguïté) pour désigner un champ complet et Uc
+pour désigner la composante c du champ avec c=1..6.
+
+Concept d'opération
+-------------------
+Le deuxième concept à préciser est la notion d'*opération*. Une
+opération dans le présent contexte est l'application d'un opérateur
+sur un ou plusieurs champs pour produire une grandeur de type champ ou
+de type valeur numérique.
+
+Par exemple, la formule ``W=OP(U,V)`` indique que le champ W est formé
+à partir des champs U et V en arguments d'une fonction OP. Dans le cas
+d'une opération algébrique comme l'addition (cf. :ref:`Spécification
+des opérations<xmed-specifications>`, le résultat attendu par défaut
+est que pour chaque instant t, chaque position p et chaque composante
+c, on a ``W(t,p,c)=U(t,p,c)+V(t,p,c)`` (que l'on peut noter également
+``W(:,:,:)=U(:,:,:)+V(:,:,:)`` compte-tenu de la convention présentée
+plus haut). Ce n'est cependant pas une règle et l'utilisateur peut
+très bien manoeuvrer les champs en détaillant et mixant les
+composantes (par exemple ``W(:,:,3)=5+U(:,:,1)*V(:,:,2)``), ou encore
+ne travailler que sur un domaine spatial et/ou temporel particulier
+(cf. |REF_EDF_VCA_H-I2C-2009-03595-FR|_ §5.4.1).
+
+On formalise donc le concept d'opération par les propriétés suivantes:
+
+* L'opérateur peut produire un champ (par exemple la somme de deux
+  champs W=sum(U,V)=U+V), une valeur numérique (par exemple la moyenne
+  spatiale d'un champ m=smoy(U)) ou une valeur logique (par exemple le
+  test d'égalité de deux champs b=isequal(U,V));
+* L'opérateur peut être paramétré par la donnée de valeurs numériques
+  (par exemple, le changement d'unité peut être défini comme une
+  multiplication par un scalaire V=multiply(U,1000)=1000*U);
+* L'opérateur est caractérisé par un domaine d'application qui
+  spécifie la portée de l'opération. Ce domaine comporte plusieurs
+  dimensions:
+  - Un domaine temporel T qui spécifie les pas de temps sur lesquels
+    l'opération est appliquée;
+  - Un domaine spatial D qui spécifie la limite de portée de
+    l'opérateur et donc le domaine de définition du champ produit (qui
+    correspond dans ce cas à une restriction du domaine de définition
+    des champs en argument);
+  - Un domaine de composantes C qui spécifie les composantes sur
+    lesquelles l'opération est appliquée;
+
+.. note::
+   Sur le plan informatique, l'opérateur aura également un paramètre
+   appelé *option* qui pourra indiquer par exemple dans une
+   opération unaire V=F(U) si le résultat V est une nouvelle instance
+   de champ ou la valeur modifiée du champ de départ U. Il pourra
+   également être amené à manoeuvrer des paramètres de type chaîne de
+   caractères, par exemple pour les opérations de changement de nom
+   des champs.
+
+De manière générale, on utilisera la notation
+**(W|y)=OP[D,C,T](P,U,V,...)** pour désigner une opération OP:
+
+* **(V|y)**: V ou y désignent respectivement un résultat de type
+  champ ou de type valeur numérique ou logique;
+* **[T,D,C]**: le domaine d'application de l'opérateur avec T le
+  domaine temporel, D le domaine spatial et C le domaine des
+  composantes;
+* **P,U,V,...**: les paramètres numériques P (liste de valeurs
+  numériques) et les champs U,V,... en arguments de l'opérateur;
+
+On note également les particularités suivantes pour certaines
+opérations:
+
+* Le domaine de définition du champ produit par une opération peut
+  être différent du domaine de définition des champs en argument. Par
+  exemple, dans le cas d'une opération de projection de champ, le
+  domaine spatial résultat peut être modifié par rapport au domaine de
+  définition initial, soit par la modification de la zone géométrique,
+  soit par modification des entités de maillage support.
+* En dehors des opérations de type dérivée et intégrale, les valeurs
+  résultats sont déterminées de manière locale en chaque point du
+  domaine d'application. Par exemple, l'addition W=U+V consiste à
+  produire un champ W dont les valeurs en chaque point p sont la somme
+  des valeurs des composantes de U et V en ce point p: ``W=U+V <=>
+  W(:,p,:)=U(:,p,:)+V(:,p,:)`` pour tout point p du domaine
+  d'application D.
+
+Concept de domaine d'application
+--------------------------------
+
+Un domaine d'application est associé à une opération (et non pas à un
+champ). Il a pour objectif de restreindre la portée de l'opération en
+terme spatial, temporel, jeu des composantes.
+
+Pour ce qui concerne le domaine spatial D, plusieurs modalités de
+définition sont envisagées:
+
+* la donnée d'un maillage ou d'un groupe d'éléments du maillage;
+* un système de filtres qui peut combiner:
+
+  - une zone géométrique définie indépendamment du maillage (boîte
+    limite par exemple),
+  - des critères conditionnant le calcul (par exemple U(t,p,c)=1 si
+    V(t,p,c)<seuil).
+
+.. warning:: Version 2010: D pourra correspondre au maillage complet
+   et dans la mesure du possible à un groupe d'éléments du maillage
+
+Ce domaine d'application peut être différent du domaine de définition
+des champs mais il doit être compatible (recouvrement spatial partiel
+au moins et même support d'entité de maillage). Ainsi, sans précision
+particulière, une opération s'applique à l'ensemble du domaine de
+définition des champs en argument (qui dans la pratique MED est
+spécifié par le support et correspond en général au maillage
+complet).
+
+Limites d'utilisation
+---------------------
+
+Plusieurs situations doivent être examinées pour poser les limites
+d'utilisation:
+
+* Les champs en argument n'ont pas tous le même domaine de définition,
+  par exemple parcequ'il ne sont pas définis sur les mêmes zones
+  géométriques ou parcequ'ils ne sont pas donnés sur le même type
+  d'entité de maillage. On peut imaginer dans ce cas produire le
+  résultat sur les zones de recouvrement uniquement.
+* Le domaine de définition des champs et le domaine d'application de
+  l'opérateur ne sont pas compatibles, par exemple parcequ'on demande
+  une restriction sur une zone géométrique qui ne fait pas partie de
+  la zone de définition du champ d'entrée. A priori, ce type
+  d'opération est déclaré en échec.
+* Les champs en argument ne sont pas définis sur les mêmes pas de
+  temps. Si l'opération est tolérée (techniquement MEDCoupling permet
+  de le faire), le pas de temps résultat est indéfini.
+
+.. warning:: **A faire**: spécifier les modalités de prise en compte de
+   ces différentes situations (au moins sur le plan conceptuel).
+
+Au delà de ces limites conceptuelles, il faut avoir en tête les
+limites techniques liées à l'usage de MED mémoire (paquet
+MEDCoupling). Par exemple, MEDCoupling impose que les champs opérandes
+soient définis sur le même maillage support (on parle ici de l'objet
+informatique correspondant au maillage). Deux champs construits sur le
+même maillage (du point de vue conceptuel) mais issus de deux fichiers
+med différents sont considérés comme des champs définis sur des
+maillages support différents, c'est-à-dire que les objects
+informatiques correspondant aux maillages sont différents (chargés de
+deux fichiers différents). En l'état, il est donc impossible par
+exemple de faire la comparaison de champs résultats d'une étude
+paramétriques. MEDCoupling fournit une solution qu'il faudra mettre en
+oeuvre de manière ergonomique au niveau du module MED. Il est possible
+de changer le maillage support M1 d'un champs par un maillage M2 à
+partir du moment où les maillages M1 et M2 sont identiques
+géométriquement à une erreur près qu'il est possible de spécifier.
+
+.. note:: 
+   D'autres situations limites peuvent être évoquées sous l'angle
+   informatique. Ce sont des situations qui a priori n'ont pas de
+   raison d'exister sur le plan conceptuel mais qui peuvent très bien
+   survenir au niveau du module informatique compte-tenu des
+   particularités du modèle MED. Par exemple:
+   
+   * Le nombre et la nature des composantes ne sont pas identiques
+     pour tous les champs d'entrée. Par exemple, U défini ses
+     composantes comme U(:,:,1)=Ux, U(:,:,2)=Uy, U(:,:,3)=Uz et V les
+     défini comme U(:,:,1)=Uz, U(:,:,2)=Ux, U(:,:,3)=Uy. Cette
+     situation peut être gérée techniquement par exemple au moyen
+     d'une carte de correspondance qui accompagnerai chacun des champs
+     pour exprimer le sens physique de chaque composants (histoire de
+     ne pas ajouter des choux et des carottes).
+
+Spécifications générales
+========================
+
+Le diagramme ci-dessous représente un découpage fonctionnel qui rend
+compte de l'expression des besoins:
+
+.. image:: images/xmed-functions.png
+   :align: center
+
+On peut identifier les fonctionnalités suivantes:
+
+* **Opérations**: fonctions de manipulation de champs proprement
+  dites;
+* **Persistance**: fonctions d'enregistrement persistant et de
+  chargement des données (au format med fichier)
+* **Visualisation**: fonctions de contrôle visuel des champs
+  manipulés
+* **Export des données**: fonction de transposition des données de
+  champs dans un format textuel directement exploitable et de manière
+  autoportante dans une autre application, par exemple en python au
+  moyen des structures de données Numpy.
+
+Ces fonctions s'articulent autour d'un conteneur qui héberge les
+champs manipulés et les supports de ces champs (représenté par le
+cylindre central).
+
+Un scénario d'utilisation type est:
+
+* Préparation des champs à manipuler, par deux moyens complémentaires:
+
+  - Utilisation des fonctions de persistance: chargement depuis un
+    fichier med d'un ensemble de champs qui partagent le même espace
+    de définition;
+  - Utilisation des opérations de champs: chargement d'un maillage
+    depuis un fichier med, puis création ab initio de champs au moyen
+    des opérations de champs;
+
+* Manipulation des champs par application des opérations à
+  disposition, puis contrôle visuel des résultats produits au moyen
+  des fonctions de visualisation mises à disposition par SALOME;
+* Restitution des résultats produits, par deux moyens complémentaires:
+
+  - Restitution des champs produits et/ou modifiés sous une forme
+    persistante (fichier med);
+  - Restitution d'une partie seulement des résultats sous forme de
+    tableaux de valeurs sauvegardés dans un fichier texte ou exporté
+    sous forme de tableau numpy
+
+.. _xmed-specifications:
+
+Spécification des opérations
+============================
+
+Le cahier des charges définit trois catégories d'opérations
+mathématiques:
+
+* **Les opérations arithmétiques**, dans lesquelles le résultat à la
+  position p et à l'instant t ne dépend que des données à la position
+  p et à l'instant t;
+* **Les opérations d'interpolations**, dans lesquelles le résultat
+  est exprimé sur des entités de maillages différentes ou est projeté
+  sur une zone géométrique différente du domaine de définition
+  initial;
+* **Les opérations globales**, dans lesquelles le résultat peut
+  demander l'agrégation des valeurs sur plusieurs position p ou
+  plusieurs pas de temps t (calcul d'extremum, d'intégrale);
+
+Auxquelles, on peut ajouter à des fins de gestion des données:
+
+* **Les opérations de génération**, qui permettent de créer un champ
+  sur un maillage vierge ou d'étendre le domaine spatial de définition
+  d'un champ;
+* **Les opérations d'ordre sémantique**, qui permettent de modifier
+  les méta-données associées aux champs (nom, unité, ...)
+* **Les opérations de diagnostic**, qui permettent d'effectuer une
+  analyse particulière d'un champ et/ou des éléments de maillage
+  associés et de fournir un compte-rendu, sous la forme d'une
+  structure de données ou d'un texte formaté affichable dans
+  l'interface utilisateur.
+
+La suite de la section décrit les spécifications prévues pour chaque
+type d'opération unitaire. Un dernier paragraphe concerne les
+modalités de combinaison des opérations et spécifie la définition d'un
+domaine d'application sur une opération, qui permet de restreindre la
+portée de l'opération en terme spatial, temporelle ou nature des
+composantes impliquées.
+
+Les opérations arithmétiques
+----------------------------
+
+Les opérations arithmétiques regroupent:
+
+* les **opérations algébriques** (+, -, x, /);
+* les **opérations vectorielles** (produit scalaire, produit
+  vectoriel, produit tensoriel);
+* l'**application d'une fonction mathématique** à variable scalaire
+  (exponentielle, logarithme, fonctions trigonométriques, valeur
+  absolue, partie entière) ou à variable de type champ (les fonctions
+  de norme par exemple).
+
+Pour les besoins des spécifications informatiques, il est plus commode
+de classer ces opérations en deux catégories:
+
+* les **opérations unaires**, qui prennent un opérande unique en
+  argument. C'est le cas de la plupart des fonctions mathématiques
+  envisagées;
+* les **opérations binaires**, qui prennent deux opérandes en
+  argument. C'est le cas des opérations algébriques et des opérations
+  vectorielles.
+A partir de cette classification, il convient de distinguer trois
+formes d'usage selon la nature des opérandes:
+
+* les opérandes sont exclusivement des scalaires (typiquement des
+  valeurs de composantes des champs et des paramètres numériques). Par
+  exemple::
+    W(:,:4) = 1+2xU(:,:,2)+V(:,:,3)
+
+* les opérandes sont exclusivement des champs. Par exemple::
+
+    W = U + V       (addition)
+    W = U ^ V       (produit vectoriel)
+
+* les opérandes sont des champs et des paramètres numériques. Par exemple::
+
+    W = 3xU - 2xV
+    W = U + 2
+
+Le premier cas de figure (opérandes scalaires) est trivial car les
+règles mathématiques conventionnelles s'appliquent et sont
+implémentées dans tous les langages (Python et C++ en
+particulier). Les cas 2 et 3 par contre doivent être précisés car (i)
+les règles de comportement ne peuvent pas être simplement déduites des
+règles mathématiques (quel est le résultat de ``W = U + 2`` ?) et
+(ii) certaines écritures ne peuvent avoir aucun sens (par exemple
+``W = 2 / U``). Il convient donc de  préciser les conventions et
+les limites sur ces deux cas de figure.
+
+Dans le cas des opérations unaires où l'opérande est un champ, on doit
+distinguer deux cas d'usage:
+
+* l'application d'une fonction mathématique à valeur de type champ. Ce
+  cas est trivial également et on applique la règle d'usage de la
+  fonction. C'est typiquement le cas des fonctions de calcul de
+  norme.
+* l'application d'une fonction mathématique à valeur scalaire. Dans ce
+  cas, on convient d'appliquer la fonction de manière unitaire sur
+  chacune des composantes c du champ: ``W(:,:,c) = OP( U(:,:,c)
+  )``
+
+Dans le cas des opérations binaires, on recense les combinaisons
+d'opérandes suivantes (les lettres capitales représentent des champs,
+et les lettres minuscules une valeur scalaire qui peut être un
+paramètre numérique ou la composante d'un champ):
+
+* U+V ajoute les composantes en regard: W(:,:,c)=U(:,:,c)+V(:,:,c)
+* U-V soustrait les composantes en regard: W(:,:,c)=U(:,:,c)-V(:,:,c)
+* U*V multiplie les composantes en regard: W(:,:,c)=U(:,:,c)*V(:,:,c)
+* U/V divise les composantes en regard: W(:,:,c)=U(:,:,c)/V(:,:,c)
+* U+x ajoute x à toute les composantes: W(:,:,c)=U(:,:,c)+x
+* U*x multiplie toutes les composantes par x: W(:,:,c)=U(:,:,c)*x
+* U.V produit scalaire des champs U et V: W(:,:c)=U(:,:,c)*V(:,:,c)
+* U^V produit vectoriel des champs U et V: W(:,:1)=U(:,:,2)*V(:,:,3)-U(:,:,3)*V(:,:,2), ...
+
+.. note::
+   Pour ce qui concerne les opérations vectorielles, un convention
+   implicite est appliquée par laquelle on suppose que les composantes
+   sont rangées dans l'ordre des dimensions spatiales U1=Ux, U2=Uy,
+   U3=Uz. Sur le plan informatique au niveau du modèle MEDMEM, ceci
+   n'est pas garanti et aucun élément du modèle ne permet de
+   contraindre l'application de cette convention. Il convient donc de
+   prévoir des fonctions techniques qui permettront de mettre en
+   correspondance les indices de composantes et les dimensions
+   spatiales (par exemple par la données d'une carte de correspondance
+   applicable à un ensemble de champs).
+
+.. warning::
+   A développer:
+   
+   * Analyse dimensionnelle du champ résultats pour adapter
+     l'unité. Par exemple, si on fait UxV où U et V sont exprimés en
+     [m] alors le résultat est en [m2].
+
+Les opérations d'interpolation
+------------------------------
+.. warning:: Non prévues au programme 2010.
+
+Les opérations mathématiques globales
+-------------------------------------
+.. warning:: Non prévues au programme 2010.
+
+Les opérations de génération
+----------------------------
+.. warning:: EN TRAVAUX
+
+Les opérations de génération sont des fonctions qui permettent de
+créer un champ sur un domaine du maillage où il n'est pas défini
+initialement. Deux cas de figure peuvent se présenter:
+
+* Le champ n'existe pas et il doit être créé sur un domaine à définir;
+* Le champ existe mais les valeurs ne sont pas définies sur l'ensemble
+  du maillage.
+
+On peut envisager plusieurs modalités de mise en oeuvre:
+
+* le prolongement par une valeur constante (ou plus généralement par
+  une fonction de l'espace?);
+* les valeurs du champs sont données par une fonction f(p,t) qui prend
+  la position p et le pas de temps t en argument;
+* on peut prédéfinir le champ position **r** qui porte les
+  coordonnées spatiales de l'élément de maillage support, puis faire
+  une opération arithmétique standard.
+
+Les opérations d'ordre sémantique
+---------------------------------
+.. warning:: EN TRAVAUX
+
+Concerne:
+
+* le changement de nom du champ
+* le changement d'unité du champ (il s'agit ici de conserver la
+  cohérence entre la valeur numérique et l'attribut "unité" d'un
+  champ.
+
+Les opérations de diagnostic
+----------------------------
+.. warning:: EN TRAVAUX. A faire en fonction des besoins des cas d'application
+
+On peut identifier plusieurs types d'opérations:
+
+* les opérations à diagnostic booléen, par exemple
+  b=isequal(U,V)=[U=V] (où [.] signifie évaluation de la condition
+  entre crochers)
+* les opérations à diagnostic textuel, par exemple afficher les
+  méta-données associées à un champs (unité, nom, maillage support,
+  type d'entité, pas de temps, ...)
+* les opérations à diagnostic structuré, qui donneraient une structure
+  de données exploitable au niveau d'un code logiciel.
+
+Combinaison des opérations
+--------------------------
+.. warning:: EN TRAVAUX. Indiquer les règles de combinaison (associativité, commutativité, ...)
+
+Définition d'un domaine d'application
+-------------------------------------
+Pour rappel, un domaine d'application peut être associé à une
+opération pour restreindre la portée de l'opération en terme spatial,
+temporelle ou nature des composantes impliquées.
+
+.. warning:: Todo: spécifier comment on le définit et les modalités d'applications.
+
+Spécification de l'ergonomie
+============================
+
+L'ergonomie générale d'utilisation du module de manipulation de champs
+est inspirée des logiciels comme octave ou scilab. Elle associe une
+interface graphique, pour sélectionner et préparer les données, avec
+une interface texte (la console python) pour le travail effectif sur
+les données:
+
+* L'**interface graphique** a pour fonction essentielle de sélectionner et
+  préparer les champs à manipuler dans l'interface texte, puis
+  fournit des fonctions pour la gestion générale des données
+  (chargement, sauvegarde, contrôle visuel, export).
+* L'**interface texte** offre un jeu de commandes pour manipuler les
+  champs (afficher les données, effectuer des opérations), piloter les
+  fonctions d'affichage (contrôle visuel au moyen des modules VISU
+  et/ou PARAVIS) et communiquer avec l'interface graphique (ajouter
+  des nouveaux champs dans l'espace de gestion, mettre à jour les
+  méta-données d'un champ).
+
+Sur le plan de l'ergonomie, cela se traduit par un processus de
+travail dans lequel on peut distinguer différentes phases:
+
+* Une phase de préparation des champs à manoeuvrer sous la forme de
+  variables nommées et simples à manipuler dans l'interface
+  textuelle. Lors de cette phase, l'utilisateur spécifie de manière
+  graphique tout ce qui peut être définis à l'avance et pour toute la
+  durée du processus de travail. Par exemple, en spécifiant le nom des
+  fichiers med source des données et les noms des champs à utiliser
+  dans ces fichiers, le pas de temps de travail, le jeu des
+  composantes à considérer, le domaine d'application des opérations;
+* Une phase de manipulation des champs proprement dite, qui a lieu
+  principalement dans l'interface textuelle, et qui peut s'accompagner
+  de contrôle visuel des résultats et/ou d'export à destination
+  d'outils complémentaires indépendants (gnuplot, python, ...);
+* Une phase de restitution des champs produits pour assurer la
+  persistance des données de travail. Tout les champs créés par les
+  manipulations au niveau de l'interface textuelle ne sont pas à
+  sauvegarder, et on on propose donc à l'utilisateur les moyens de
+  choisir les champs à conserver. Cette phase peut amener
+  l'utilisateur à préciser les informations manquantes, comme les noms
+  de fichiers, les noms de champs produits, les unités, ...
+
+Dans ce cadre, l'utilisation type des fonctions de manipulation de
+champs est un processus de la forme suivante:
+
+1. Chargement d'un fichier med dans SALOME et exploration du contenu,
+   composé de maillages, sur lesquels sont définis des champs, pouvant
+   contenir un ou plusieurs pas de temps.
+2. Sélection (graphique) des champs à manipuler, avec la possibilité
+   de préciser des restrictions d'utilisation (pas de temps,
+   composantes, groupe de maille).
+3. Création de nouveaux champs par l'exécution d'opérations
+   algébriques (+,-,*,/) entre champs, l'application de fonctions
+   mathématiques standard (pow, sqrt, abs), ou encore l'initialisation
+   "from scratch" à partir d'un maillage support.
+4. Contrôle visuel rapide des champs produits (avec les modules VISU
+   et/ou PARAVIS de SALOME, pilotés automatiquement depuis l'interface
+   utilisateur)
+5. Enregistrement d'une partie des champs produits dans un fichier med
+
+
+Les espaces de données utilisateur
+----------------------------------
+
+Sur le plan conceptuel, on est amené à définir deux espaces de données
+utilisateur:
+
+* **l'espace des données source** (*dataspace*), dans lequel
+  l'utilisateur définit les sources de données med (*datasource*),
+  c'est-à-dire les fichiers med dans lesquels sont lus les champs
+  et maillages. Cet espace est en lecture seule et permet
+  l'exploration des sources de données (aperçu des maillages et des
+  champs).
+* **l'espace des données de travail** (*workspace*), dans lequel
+  l'utilisateur dépose les champs et maillages à utiliser, puis range
+  les champs produits au travers des fonctions de manipulation de
+  champs.
+
+La figure ci-dessous en donne une représentation imagée avec le
+support de l'interface graphique du module (interface non définitive
+affichée ici pour illustration des spécifications):
+
+.. image:: images/xmed-gui-withframe.png
+   :align: center
+
+.. note:: Techniquement, les données sources sont rangées dans l'étude
+   SALOME et peuvent être explorées au moyen de l'object browser. Les
+   données de travail sont rangées dans un arbre complémentaire et
+   manipulable dans la console python.
+
+Le principe général est que **les données sources ne sont jamais
+modifiées**. Le dataspace est un espace de chargement qui permet
+d'explorer puis de sélectionner les données à manipuler. L'utilisateur
+travaille à partir de maillages et de champs chargés préalablement
+dans cet espace, mais ne peut en aucun cas les modifier
+directement. Pour cela, il doit d'abord les sélectionner pour
+utilisation dans l'espace de travail. Ce choix garantie l'intégrité
+des sources de données et permet de rejouer la séquence de travail à
+partir de zéro en cas de besoin (on efface le tableau noir et on
+recommence). Par ailleurs, il permet d'assister graphiquement la
+définition du champs à manipuler effectivement, en particulier pour
+affecter un nom de variable de manipulation.
+
+Les captures d'écrans suivantes montrent le principe d'utilisation sur
+le cas de la sélection d'un pas de temps à utiliser dans l'espace de
+travail. Les données à manoeuvrer (maillage et/ou champs) sont
+sélectionnées pour utilisation dans l'espace de travail, où elles
+peuvent être modifiées et/ou utilisées dans les opérations de
+champs. Ici, le champ est désigné par la varibale ``f4`` dans
+l'interface textuelle:
+
+* Sur cette première capture, on sélectionne le pas de temps n°4 du
+  champs ``Pulse`` définit sur le maillage ``Grid_80x80`` de la source
+  de données ``timeseries.med`` (concrètement le fichier
+  ``timeseries.med``) pour faire apparaître ensuite le menu contextuel
+  et choisir l'option "Use in workspace":
+
+.. image:: images/xmed-gui-datasource-contextmenu_70pc.png
+   :align: center
+
+* Cette capture montre une fenêtre de dialogue qui invite
+  l'utilisateur à spécifier un alias pour la variable python qui
+  va permettre la manipulation du champ dans l'interface textuelle de
+  l'espace de travail (par défaut, le nom complet du champ est
+  proposé). Ici, l'utilisateur spécifie ``f4``: 
+
+.. image:: images/xmed-gui-datasource-useinworkspace_70pc.png
+   :align: center
+
+* La validation de la fenêtre provoque l'ajout du champs dans l'espace
+  de travail (le champ est désormais disponible à la manipulation) et
+  définit une variable python de nom ``f4`` qui permet la manipulation
+  du champ:
+
+.. image:: images/xmed-gui-datasource-useinworkspace-result_70pc.png
+   :align: center
+
+Modalités d'utilisation
+-----------------------
+
+.. warning:: cette section est à nettoyer car elle contient des
+   informations redondantes avec d'autres sections précédentes ou pire
+   qui contredisent des sections précédentes.
+
+Dans le cadre défini ci-dessus, une session d'utilisation type est:
+
+* Sélectionner les sources de données puis définir le domaine
+  d'application (espace, temps, composantes), avec éventuellement
+  l'assistance d'une interface graphique;
+* Charger les champs en conséquence dans l'espace de travail. Cette
+  opération propose de définir une variable python pour manipulation
+  dans l'interface textuelle.
+* Effectuer les opérations dans l'espace de travail, c'est-à-dire en
+  ligne de commandes python (ce qui demandera sans doute un travail
+  conséquent de simplification et d'assistance en ligne). Par exemple,
+  si ``fa`` et ``fb`` désignent deux champs définis dans l'espace de
+  travail, alors on peut en faire la somme par la commande::
+  
+  >>> r=fa+fb
+
+* Effectuer les contrôles visuel et les diagnostics en ligne de
+  commandes python (cf. :ref:`Spécification des fonctions de
+  visualisation<specification_visualisation>`)::
+
+  >>> view(r)
+
+* Enregistrer les champs produits dans l'espace de travail sous forme
+  de fichier med.
+
+Sur cette base, on peut envisager une grande variété de cas d'utilisation:
+
+* La structure MED (champs, maillage et groupes de mailles) est
+  chargée dans le dataspace (l'étude SALOME techniquement) et peut
+  être explorée au niveau de l'arbre d'étude. L'arbre peut faire
+  apparaître:
+  - les maillages et les groupes (qui peuvent être utilisés
+    éventuellement pour restreindre le domaine d'application)
+  - les champs dont on peut explorer les composantes et les itérations
+
+* On sélectionne plusieurs champs, éventuellement en sélectionnant les
+  pas de temps, les composantes et les domaines d'application spatiaux
+* Menu contextuel --> Modifier un champ, Créer un champ, Prolonger un
+  champ, ....
+* On choisi pour la suite "Créer un champ", une fenêtre de dialogue
+  s'affiche avec les saisies préremplies avec les données
+  sélectionnées. Il est possible de rajouter des éléments ou préciser
+  le domaine d'application
+* Une partie de la boîte de dialogue est réservée à la saisie de la
+  ligne de commande python qui permet la création du nouveau champ. Le
+  nom dans l'étude pour le nouveau champ, ainsi que son nom python,
+  sont spécifié par l'utilisateur ({{H|un peu à la mode du module
+  system}}).
+* L'opération est exécutée dans l'espace utilisateur (l'interface
+  python), de sorte que les variables soient projetées dans cet espace
+  et manipulables après l'opération au besoin. Par ailleurs,
+  l'utilisateur peut visualiser les ligne de commandes nécessaires à
+  taper pour exécuter sa requête.
+
+.. _specification_visualisation:
+
+Spécification des fonctions de visualisation
+============================================
+
+Dans le cadre du module MED, on appelle *fonction de visualisation*
+une fonction qui permet d'avoir un aperçu graphique d'un champ, par
+exemple au moyen d'une carte de champ construite sur une de ses
+composante. Il s'agit là de vue de contrôle pour avoir une idée rapide
+de la forme du champs. Pour créer des représentations spécifiques, on
+préférera passer par les fonctions d'export vers le module PARAVIS.
+
+Les modules VISU et PARAVIS offre des interface de programmation C++
+et python qui permettent le pilotage depuis un module tiers comme le
+module MED. On peut donc envisager une fonction de visualisation
+intégrée au module de manipulation de champs, c'est-à-dire que l'on
+déclenche sans sortir du module MED, et qui exploite les fonctions de
+visualisation des modules VISU et/ou PARAVIS.
+
+Les captures d'écran ci-dessous illustrent la mise en oeuvre de la
+fonction de visualisation:
+
+* Sélection d'un champ pour faire apparaitre le menu contextuel et
+  choisir l'option "Visualize":
+
+.. image:: images/xmed-gui-datasource-visualize_70pc.png
+   :align: center   
+
+* Cette option déclenche l'affichage d'une carte de champ sur le cadre
+  d'affichage des viewers SALOME:
+
+.. image:: images/xmed-gui-datasource-visualize-result_70pc.png
+   :align: center
+
+Cette fonction est également disponible en ligne de commandes de
+l'interface textuelle. Par exemple si ``f4`` désigne un champ de
+l'espace de travail (importé des données source ou construit par les
+opérations de champs), alors, on obtient une carte de champ par la
+commande::
+
+ >>> view(f4)
+
+On peut remarquer d'ailleurs sur la capture d'écran de droite
+ci-dessus que la demande de visualisation déclenche l'exécution de la
+commande ``view`` dans la console de travail sur un champ identifié
+par son numéro (3 dans l'exemple).
+
+.. note:: Tous les champs, qu'ils soient des champs chargés d'une
+   source de données ou construits par des opérations de champs sont
+   identifiés par un numéro unique et invariant tout au long de la
+   session de travail.
+
+Spécification des fonctions de persistance
+==========================================
+
+On adopte le principe de fonctionnement suivant:
+
+* Le module n’assure pas la persistence au sens SALOME du terme,
+  c’est-à-dire qu’il ne permet pas la sauvegarde du travail dans une
+  étude au format hdf, ni le dump sous la forme de script python
+  SALOME. Le besoin n'est pas avéré et on peut même dire que ça n'a
+  pas de sens compte-tenu de l'usage envisagé pour le module MED.
+* Par contre, le module fournit des fonctions de sauvegarde du travail
+  sous forme de fichiers med, l’export vers les modules VISU et
+  PARAVIZ, ou même la sauvegarde de l’historique de l’interface de
+  commandes.
+
+Ainsi donc, l'utilisateur aura une fonction (probablement graphique)
+pour définir la sélection des champs de l'espace de travail à
+sauvegarder.
+
+Spécification des fonctions d'export
+====================================
+
+.. warning:: EN TRAVAUX.
+
+Plusieurs export peuvent être proposés:
+
+* Export des champs vers le module PARAVIZ, dans l'objectif par
+  exemple d'en faire une analyse visuelle plus poussée qu'avec les
+  cartes de champs disponibles par défaut dans le module MED
+* Export des données sous forme de tableau numpy, par exemple pour
+  permettre un travail algorithmique sur les valeurs des champs.
+
+Spécifications techniques
+=========================
+
+Il s'agit d'exprimer ici les contraintes techniques applicables à la
+conception et au développement du nouveau module MED.
+
+Implantation technique du module
+--------------------------------
+
+Il est convenu que le module MED existant dans la plate-forme SALOME
+incarne le module de manipulation de champ. Dans la pratique, il
+s'agit d'identifier clairement les parties à conserver, d'une part,
+puis les parties à re-écrire, d'autre part. On peut partir sur les
+hypothèses techniques suivantes:
+
+* Le noyau du module en charge des opérations de manipulation de
+  champs proprement dites est construit sur la base des paquets
+  logiciels MEDCoupling (lui-même basé sur le INTERP_KERNEL) et
+  MEDLoader.
+* L'interface graphique du module MED est complétement re-écrite et
+  remplacée par une interface adaptée spécialement à la manipulation
+  des champs et la gestion des données associées
+* Le contrôle visuel pourra être déclenché dans les visualisateurs
+  SALOME (servis par les modules VISU et/ou PARAVIZ);
+* Le module n'assure pas la persistence au sens SALOME du terme,
+  c'est-à-dire qu'il ne permet pas la sauvegarde du travail dans une
+  étude au format hdf, ni le dump sous la forme de script python
+  SALOME.
+* Par contre, il fournit des fonctions de sauvegarde du travail sous
+  forme de fichiers med, l'export vers les modules VISU et PARAVIZ, ou
+  même la sauvegarde de l'historique de l'interface de commandes.
+
+L'implantation technique des développements est représentée sur la
+figure ci-dessous:
+
+.. image:: images/xmed-implantation.png
+   :align: center
+
+Le schéma représente les packages logiciels qui composent le module
+MED (cf. |REF_CEA_VBE_MEDMEM|_):
+
+* La partie MEDMEM, représentées en blanc. Cette partie est conservée
+  pour compatibilité ascendante au niveau des applications métier qui
+  ont fait le choix historique de s'appuyer sur MEDMEM. Cette partie
+  du module MED aura tendance à disparaitre dans le futur au bénéfice
+  de MEDCoupling et MEDLoader.
+* La partie MEDCoupling, représentée en orange et qui founrnit le
+  modèle MED mémoire de référence (composé de maillage et de champs)
+  et l'interface de programmation pour manipuler le modèle. Le paquet
+  MEDLoader est une extention dédiée à la persistence au format med
+  fichier (lecture et écriture de champs et de maillage dans des
+  fichiers med).
+* La partie à développer pour la manipulation de champ, représentée en
+  bleu.
+
+.. note:: MEDCoupling peut être vu comme une structure de donnée
+   particulièrement adaptée à la manipulation des gros volumes de
+   données, en particulier par l'exploitation des possibilités de
+   parallélisation et la réduction de la tailles des structures de
+   données. En contrepartie, elle peut présenter un périmètre
+   fonctionnel moins large que MEDMEM. Pour cette raison, MEDMEM avait
+   été choisi comme socle de développement du prototype en 2010:
+
+   * MEDCoupling ne permet pas de gérer des maillages composés de
+     plusieurs type de mailles et il est exclus de le faire évoluer
+     dans ce sens (c'est un choix fait pour les objectifs de
+     performances évoqués plus haut);
+   * MEDCoupling ne permet pas de gérer les supports qui expriment les
+     champs aux noeuds par élément ni aux points de gauss. Cette
+     seconde limitation a disparu en 2011.
+
+   Aujourd'hui, on fait clairement le choix de MEDCoupling pour sa
+   qualité et sa robustesse, dans l'objectif d'une meilleure
+   maintenance à long terme. Par ailleurs, les différences
+   fonctionnelles avec MEDMEM, si elles existaient encore en 2012 pour
+   les besoins de la manipulation de champs, pourront être résorbées
+   dans un futur proche.
+
+
diff --git a/src/MEDOP/doc/sphinx/xmed-userguide.rst b/src/MEDOP/doc/sphinx/xmed-userguide.rst
new file mode 100644 (file)
index 0000000..f352660
--- /dev/null
@@ -0,0 +1,749 @@
+.. meta::
+   :keywords: maillage, champ, manipulation, guide utilisateur
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Module XMED: Guide d'utilisation
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+(|XMED_USERGUIDE_PDF|_)
+
+Ce document est un guide rapide pour l'utilisation du module MED. Il
+montre comment utiliser le module sur la base de quelques exemples de
+référence, inspirés des cas d'utilisation identifiés lors de l'analyse
+des besoins en matière de manipulation de champs.
+
+.. warning:: Le document est autonome, mais il est vivement conseillé
+   de parcourir au préalable (ou en parallèle) :doc:`le document de
+   spécifications<xmed-specifications>`, au moins pour fixer les
+   concepts et la terminologie.
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Présentation générale du module XMED
+====================================
+
+L'ergonomie générale d'utilisation du module de manipulation de champs
+est inspirée des logiciels comme octave ou scilab. Elle associe une
+interface graphique, pour sélectionner et préparer les données, avec
+une interface texte (la console python) pour le travail effectif sur
+les données.
+
+Pour cela, le module propose deux espaces utilisateurs qui sont
+symbolisés par les rectangles rouges et vert sur la capture d'écran
+ci-dessous:
+
+* **l'espace des données** (*dataspace*), dans lequel l'utilisateur
+  définit les sources de données med (*datasource*), c'est-à-dire les
+  fichiers med dans lesquels sont lus les champs et maillages. Cet
+  espace permet l'exploration des maillages et des champs fournis par
+  les différentes sources de données.
+* **l'espace de travail** (*workspace*), dans lequel l'utilisateur
+  peut déposer des champs sélectionnées dans l'espace source, pour
+  ensuite les travailler par exemple pour produire des nouveaux champs
+  au moyen des fonctions de manipulation fournies par l'interface
+  textuelle (console python TUI).
+
+.. image:: images/xmed-gui-withframe.png
+   :align: center
+
+L'utilisation type des fonctions de manipulation de champs suit un
+processus de la forme suivante:
+
+1. Chargement d'un fichier med dans l'espace de données (dataspace) et
+   exploration du contenu, composé de maillages et de champs définis
+   sur ces maillages et pouvant contenir un ou plusieurs pas de temps.
+2. Sélection (graphique) des champs à manipuler dans l'espace de
+   travail (workspace), avec la possibilité de préciser des
+   restrictions d'utilisation (pas de temps, composantes, groupe de
+   maille).
+3. Création de nouveaux champs par l'exécution d'opérations
+   algébriques (+,-,*,/) entre champs, l'application de fonctions
+   mathématiques standard (pow, sqrt, abs), ou encore l'initialisation
+   "from scratch" sur un maillage support.
+4. Contrôle visuel rapide des champs produits (avec les modules VISU
+   et/ou PARAVIS de SALOME, pilotés automatiquement depuis l'interface
+   utilisateur)
+5. Enregistrement d'une partie des champs produits dans un fichier med
+
+
+Tour rapide des fonctions du module XMED
+========================================
+
+Cette section présente des exemples d'utilisation du module XMED sous
+la forme de "storyboard", et illustre au passage les fonctions mises à
+disposition par le module.
+
+.. warning:: Cette section est en travaux. Tant que cet avis n'aura
+   pas disparu, veuillez en considérer le plan et le contenu encore
+   incomplets, temporaires et sujets à caution.
+
+Exemple 1: Explorer des sources de données
+------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * ajouter une source de données
+   * fonctions "Extends field series", "Visualize"
+
+.. |ICO_DATASOURCE_ADD| image:: images/ico_datasource_add.png
+                        :height: 16px
+
+.. |ICO_XMED| image:: images/ico_xmed.png
+              :height: 16px
+
+.. |ICO_DATASOURCE_EXPAND| image:: images/ico_datasource_expandfield.png
+                           :height: 16px
+
+.. |ICO_DATASOURCE_VIEW| image:: images/ico_datasource_view.png
+                         :height: 16px
+
+Au démarrage, le module de manipulation de champs, identifié par
+l'icône |ICO_XMED|, présente une interface vierge:
+
+.. image:: images/xmed-gui-start.png
+   :align: center
+   :width: 800px
+
+La première étape consiste à ajouter une ou plusieurs source de
+données med dans le "dataspace". Pour cela, on clique sur l'icône "Add
+datasource" |ICO_DATASOURCE_ADD| qui propose de sélectionner un
+fichier med:
+
+.. image:: images/xmed-gui-datasource-selectfile.png
+   :align: center
+   :width: 800px
+
+L'opération ajoute une nouvelle entrée (datasource) dans l'espace de
+données (dataspace). Le contenu peut être exploré en parcourant
+l'arborescence. La figure ci-dessous (image de gauche) montre le
+résultat du chargement du fichier ``timeseries.med`` contenant un
+maillage de nom ``Grid_80x80`` sur lequel est défini un champ au noeud
+de nom ``Pulse``. Par défaut, la composition du champs (en terme de
+pas de temps et de composantes) n'est pas affichée pour éviter
+l'encombrement visuel de l'arbre. On doit faire la demande explicite
+au moyen de la commande "Expand field timeseries"
+|ICO_DATASOURCE_EXPAND| disponible dans le menu contextuel associé aux
+champs. Le résultat est affiché sur l'image centrale. La liste des
+itérations du champ ``Pulse`` peut être consultée.
+
+.. |IMG_DATASOURCE_EXPLORE| image:: images/xmed-gui-datasource-explore-zoom.png
+                            :height: 340px
+.. |IMG_DATASOURCE_MENUCON| image:: images/xmed-gui-datasource-menucontextuel-zoom.png
+                            :height: 340px
+.. |IMG_DATASOURCE_EXPANDF| image:: images/xmed-gui-datasource-expand-zoom.png
+                            :height: 340px
+
++--------------------------+--------------------------+--------------------------+
+| |IMG_DATASOURCE_EXPLORE| | |IMG_DATASOURCE_MENUCON| | |IMG_DATASOURCE_EXPANDF| |
++--------------------------+--------------------------+--------------------------+
+
+.. note:: En toute rigueur, le concept de *champ* dans le modèle MED
+   désigne une itération donnée. Un ensemble d'itérations est désigné
+   par le terme *série temporelle de champs*. Par abus de langage, et
+   s'il n'y a pas ambiguité, on utilisera le nom du champ pour
+   désigner à la fois le champs proprement dit ou la série temporelle
+   à laquelle il appartient.
+
+Enfin, il est possible au niveau du dataspace de visualiser la forme
+générale du champ au moyen d'une carte scalaire affichée dans le
+viewer de SALOME. Pour cela, on sélectionne le pas de temps à
+visualiser et on utilise la commande "Visualize" |ICO_DATASOURCE_VIEW|
+disponible dans le menu contextuel associé:
+
+.. image:: images/xmed-gui-datasource-visualize-zoom.png
+   :align: center
+   :width: 800px
+
+.. note:: Cette représentation graphique a pour objectif le contrôle
+   visuel rapide. Aussi, les fonctions du module VISU sont employées
+   par défaut, mais il est possible de faire l'affichage des cartes
+   scalaires au moyen du module PARAVIS (choix de préférence non
+   implémenté pour le moment, mais techniquement réalisable).
+
+Exemple 2: Rassembler des champs issus de différentes sources
+-------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * fonction "Use in workspace"
+   * fonction "Save"
+
+.. |ICO_DATASOURCE_USE| image:: images/ico_datasource_use.png
+                        :height: 16px
+.. |ICO_WORKSPACE_SAVE| image:: images/ico_workspace_save.png
+                        :height: 16px
+
+L'objectif est de récupérer des données issues de différents fichiers
+med, puis de les rassembler dans un même fichier en sortie.
+
+On commence par ajouter les sources de données med dans l'espace de
+données (dataspace). Dans l'exemple ci-dessous, l'espace de données
+contient deux sources de nom ``parametric_01.med`` et
+``smallmesh_varfiled.med``. La première source contient le maillage
+``Grid_80x80_01`` sur lequel est défini le champ ``StiffExp_01``. La
+deuxième source contient le maillage ``My2DMesh`` sur lequel sont
+définis deux champs de noms respectifs ``testfield1`` et
+``testfield2``:
+
+.. image:: images/xmed-userguide-example2-datasource.png
+   :align: center
+   :width: 800px
+
+Pour l'exemple, on souhaite rassembler les champs ``StiffExp_01`` et
+``testfield2`` dans un fichier de nom ``result.med``. La procédure
+consiste à importer les deux champs dans l'espace de travail
+(workspace), puis à sauvegarder l'espace de travail. Pour cela, on
+sélectionne les champs et on utilise la commande "Use in workspace"
+|ICO_DATASOURCE_USE| disponible dans le menu contextuel. Les deux
+champs sélectionnés apparaissent dans l'arborescence de l'espace de
+travail:
+
+.. image:: images/xmed-userguide-example2-workspace.png
+   :align: center
+   :width: 800px
+
+La sauvegarde de l'espace de travail est faite au moyen de la commande
+"Save workspace" |ICO_WORKSPACE_SAVE| disponible dans la barre
+d'outils du module. Une fenêtre de dialogue invite l'utilisateur à
+spécifier le nom du fichier de sauvegarde:
+
+.. image:: images/xmed-userguide-example2-workspace-save.png
+   :align: center
+   :width: 800px
+
+Ce fichier ``result.med`` peut ensuite être rechargé dans le module
+XMED (ou les modules VISU ou PARAVIS) pour vérifier la présence des
+champs sauvegardés.
+
+.. BUG: plantage à l'utilsation dans XMED d'un fichier rechargé
+.. (invalid mesh on field)
+
+.. _xmed.userguide.exemple3:
+
+Exemple 3: Appliquer une opération mathématique sur des champs
+--------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * exécution d'opérations mathématiques dans la console TUI
+   * fonction "put" pour référencer un champ de travail dans la liste
+     des champs persistant.
+   * fonction "Visualize" depuis le TUI.
+
+L'usage le plus courant du module de manipulation de champs est
+d'exécuter des opérations mathématiques dont les opérandes sont des
+champs ou des composantes de ces champs.
+
+On se place dans une situation où les sources de données sont définies
+dans le "dataspace" (dans l'exemple ci-après, une série temporelle de
+nom ``Pulse``, contenant 10 pas de temps, définis sur un maillage de
+nom ``Grid_80x80``, le tout issu du datasource ``timeseries.med``).
+
+Comme vu précedemment, pour manoeuvrer un champ dans l'espace de
+travail, on sélectionne ce champ, puis on exécute la commande "Use in
+workspace" |ICO_DATASOURCE_USE| du menu contextuel. Dans le cas
+présent, un seul champ est sélectionné (contre deux dans l'exemple
+précédent) et la commande ouvre alors une fenêtre de dialogue qui
+permet de préciser les données sur lesquelles on souhaite
+effectivement travailler et comment on veut les manoeuvrer:
+
+.. image:: images/xmed-gui-datasource-useinworkspace-alias.png
+   :align: center
+   :width: 800px
+
+.. note:: En l'état actuel du développement, l'interface propose
+   uniquement de définir le nom de la variable sous laquelle doit être
+   manoeuvré le champ dans la console de travail (TUI). Dans une
+   version ultérieure, il est prévue de pouvoir préciser la ou les
+   composante du champs à utiliser et un groupe de maille pour définir
+   une restriction géométrique. Inversement, il sera également
+   possible de choisir une série temporelle complète pour faire des
+   opérations globales sur l'ensemble des pas de temps.
+
+Aprés validation, le champ est placé dans l'arborescence du
+"workspace" et une variable de nom ``<alias>`` est créée
+automatiquement dans la console de travail pour désigner le
+champ. Dans cet exemple, ``<alias>`` vaut ``f3``, positionné ainsi par
+l'utilisateur pour rappeler que la variable correspond au pas de temps
+n°3:
+
+.. image:: images/xmed-gui-workspace.png
+   :align: center
+   :width: 800px
+
+La manipulation peut commencer. Dans l'exemple ci-dessous, on crée le
+champ ``r`` comme le résultat d'une transformation afine du champ
+``f3`` (multiplication du champ par le facteur 2.7 auquel on ajoute
+l'offset 5.2)::
+
+ >>> r=2.7*f3+5.2
+
+On peut poursuivre la manipulation du champs avec une variété
+d'opérations qui sont détaillées dans les spécifications du module
+(cf. :ref:`Spécification des opérations<xmed-specifications>`):
+
+ >>> r=f3/1000     # les valeurs de r sont celles du champ f3 réduites d'un facteur 1000
+ >>> r=1/f3        # les valeurs de r sont les inverses des valeurs de f3
+ >>> r=f3*f3       # les valeurs de r sont celles du champ f3 élevées au carré
+ >>> r=pow(f3,2)   # même résultat
+ >>> r=abs(f3)     # valeur absolue du champ f3
+ >>> ...
+
+Les opérations peuvent utiliser plusieurs opérandes de type champs. Si
+``f4`` désigne le pas de temps n°4 du champ ``Pulse``, alors on peut
+calculer toute combinaison algébrique des deux champs::
+
+ >>> r=f3+f4
+ >>> r=f3-f4
+ >>> r=f3/f4
+ >>> r=f3*f4
+
+Avec au besoin l'utilisation de variables scalaires::
+
+ >>> r=4*f3-f4/1000
+ >>> ...
+
+Dans ces exemples, la variable ``r`` désigne un champ de travail qui
+contient le résultat de l'opération. Par défaut, ce champ de travail
+n'est pas référencé dans l'arborescence du workspace. Si on souhaite
+tout de même le référencer, par exemple pour qu'il soit pris en compte
+dans la sauvegarde, alors on tape la commande::
+
+ >>> put(r)
+
+La fonction ``put`` a pour but de marquer le champ en argument comme
+persistent, puis de le ranger dans l'arborescence du "workspace" afin
+qu'il soit visible et sélectionnable. En effet, parmi tous les champs
+qui pourront être créés dans la console pendant la session de travail,
+tous n'ont pas besoin d'être sauvegardés. Certains sont même des
+variables temporaires qui servent à la construction des champs
+résultats finaux. C'est pourquoi, seuls les champs rangés dans
+l'arborescence du workspace sont enregistrés lors de la demande de
+sauvegarde du workspace.
+
+Les variables définies dans la console ont d'autres utilités. Tout
+d'abord, elles permettent d'imprimer les informations concernant le
+champ manoeuvré. Pour cela, on tape simplement le nom de la variable
+puis retour::
+
+ >>> f3
+ field name (id)        = Pulse (3)
+ mesh name (id)         = Grid_80x80 (0)
+ discretization         = ON_NODES
+ (iter, order)          = (3,-1)
+ data source            = file:///home/gboulant/development/projets/salome/MEDOP/XMED/xmed/resources/datafiles/timeseries.med
+
+Elle peut également être utilisée comme argument des commandes de
+gestion disponibles dans l'interface textuelle (dont la liste
+détaillée est décrite à la section :ref:`Documentation de l'interface
+textuelle<xmed.userguide.tui>`). Par exemple, la fonction ``view``
+permet d'afficher la carte scalaire du champ dans le viewer::
+
+ >>> view(f3)
+
+Donne:
+
+.. image:: images/xmed-gui-workspace-view.png
+   :align: center
+   :width: 800px
+
+.. note:: On remarquera ici qu'il est facile de comparer deux pas de
+   temps d'un champ, par exemple en calculant la différence ``f3-f4``,
+   puis en affichant un aperçu de la carte scalaire résultat au moyen
+   de la fonction ``view``::
+
+    >>> view(f3-f4)
+
+On peut enfin tout simplement afficher les données du champs par la
+commande ``print``::
+
+ >>> print f3
+ Data content :
+ Tuple #0 : -0.6 
+ Tuple #1 : -0.1 
+ Tuple #2 : 0.4 
+ Tuple #3 : -0.1 
+ Tuple #4 : 0.4 
+ ...
+ Tuple #6556 : 3.5 
+ Tuple #6557 : 3.3 
+ Tuple #6558 : 1.5 
+ Tuple #6559 : 0.3 
+ Tuple #6560 : 0.2
+
+Il est important de noter que les opérations entre champs ne peuvent
+être faites qu'entre champs définis sur le même maillage. Il s'agit là
+d'une spécification du modèle MED qui interdit d'envisager les
+opérations entre champs définis sur des maillages géométriquement
+différents. Techniquement, cela se traduit par l'obligation pour les
+objets informatique *champs* de partager le même objet informatique
+*maillage*.
+
+Dans l'hypothèse où on souhaite utiliser des champs définis sur des
+maillages différents, par exemple pour manoeuvrer les valeurs des
+champs à l'interface de deux maillages partageant une zone géométrique
+2D, il faut d'abord ramener tous les champs sur le même maillage de
+surface par une opération de projection.
+
+.. note:: Même si ceci est techniquement possible avec la bibliothèque
+   MEDCoupling, cet type d'opération de projection n'est pas encore
+   disponible dans le module de manipulation de champs (prévu en
+   2012).
+
+Un autre besoin plus classique est l'utilisation de champs définis sur
+des maillages géométriquement identiques, mais techniquement
+différents, par exemple lorsqu'ils sont chargés de fichiers med
+différents. Pour traiter ce cas de figure, la bibliothèque MEDCoupling
+prévoit une fonction de "Changement du maillage support", dont
+l'utilisation au niveau du module de manipulation de champs est
+illustrée dans :ref:`l'exemple 4<xmed.userguide.exemple4>` ci-après.
+
+.. _xmed.userguide.exemple4:
+
+Exemple 4: Comparer des champs issues de différentes sources
+------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * Changement du maillage support "change underlying mesh"
+
+On se place ici dans le cas de figure où des champs ont été produits
+sur le même maillage, au sens géométrique, mais enregistrés dans des
+fichiers med différents. C'est le cas par exemple d'une étude
+paramétrique où plusieurs calculs sont effectués avec des variantes
+sur certains paramètres du modèle simulé, chaque calcul produisant un
+fichier med.
+
+Soit ``parametric_01.med`` et ``parametric_02.med`` deux fichiers med
+contenant les champs que l'on souhaite comparer, par exemple en
+calculant la différence des valeurs et en visualisant le résultat.
+
+Aprés le chargement des sources de données dans le module XMED,
+l'utilisateur se trouve en présence de deux maillages, au sens
+technique du terme cette fois-ci, c'est-à-dire que les champs sont
+associées à des objets informatiques maillage différents, bien que
+géométriquement identiques.
+
+Or, les fonctions de manipulation de champs ne permettent pas les
+opérations sur des champs dont les maillages supports sont différents
+(voir la remarque à la fin de :ref:`l'exemple
+3<xmed.userguide.exemple3>`).
+
+Pour résoudre ce cas de figure, le module de manipulation de champs
+met à disposition la fonction "Change underlying mesh" qui permet de
+remplacer le maillage support d'un champ par un autre à partir du
+moment où les deux maillages sont géométriquement identiques,
+c'est-à-dire que les noeuds ont les mêmes coordonnées spatiales.
+
+.. |ICO_DATASOURCE_CHG| image:: images/ico_datasource_changeUnderlyingMesh.png
+                        :height: 16px
+
+Dans l'exemple proposé, l'utilisateur sélectionne le premier pas de
+temps du champ ``StiffExp_01`` du "datasource" ``parametric_01.med``,
+puis l'importe dans l'espace de travail au moyen de la commande "Use
+in workspace" |ICO_DATASOURCE_USE|. Il sélectionne ensuite le premier
+pas de temps du champs ``StiffExp_02`` du "datasource"
+``parametric_02.med``, mais l'importe dans l'espace de travail au
+moyen de la commande "Change underlying mesh" |ICO_DATASOURCE_CHG|. La
+fenêtre de dialogue ci-dessous s'affiche et invite l'utilisateur à
+choisir le nouveau maillage support par sélection dans l'arborescence
+du "dataspace":
+
+.. image:: images/xmed-gui-datasource-changeUnderlyingMesh.png
+   :align: center
+
+Dans cet exemple, on sélectionne le maillage ``Grid_80x80_01`` support
+du champ ``StiffExp_01``, avec lequel on souhaite faire la
+comparaison. Après validation, l'arborescence du workspace contient le
+champ ``StiffExp_02`` défini sur le maillage ``Grid_80x80_01``:
+
+.. image:: images/xmed-gui-datasource-changeUnderlyingMesh_wsview.png
+   :align: center
+
+.. note:: La fonction "Change underlying mesh" ne modifie pas le champ
+  sélectionné dans le "dataspace" (principe de base de fonctionnement
+  du dataspace), mais crée une copie du champ dans l'espace de travail
+  pour ensuite remplacer le maillage support. D'où le nom par défaut
+  pour le champ ``dup(<nom du champ sélectionné>)`` (dup pour
+  "duplicate").
+
+Il reste à associer une variable à ce champ pour le manipuler dans la
+console. Ceci peut être fait au moyen de la commande "Use in console",
+disponible dans le menu contextuel du workspace.
+
+En définitif, si ``f1`` désigne le champ issu du datasource
+``parametric_01.med`` et ``f2`` le champ issu du datasource
+``parametric_02.med`` par la procédure décrite ci-dessus, alors la
+comparaison des deux grandeurs peut être faite comme pour le cas de
+:ref:`l'exemple 3<xmed.userguide.exemple3>`::
+
+ >>> r=f1-f2
+ >>> view(r)
+
+.. note:: En remarque générale sur cet exemple, il convient de noter
+   les points suivants:
+
+   * l'égalité géométrique de deux maillages est établie à une marge
+     d'erreur prés qu'il est possible de définir techniquement, mais
+     qui n'est pas ajustable au niveau de l'interface du module de
+     manipulation de champs. Elle est fixée à une valeur standard qui
+     permet de traiter la plupart des cas utilisateur. On verra à
+     l'usage s'il est nécessaire de remonter ce paramètre au niveau de
+     l'interface.
+   * L'utilisateur doit faire la démande explicite de changer le
+     maillage support d'un champ, en prévision de la comparaison de
+     champs issus de datasource différentes. Il s'agit là d'un choix
+     fonctionnel délibéré pour que l'utilisateur garde trace des
+     modifications faites sur les données (pas de modification
+     automatiques à l'insu de l'utilisateur, même sous prétexte
+     d'amélioration de l'ergonomie).
+
+
+Exemple 5: Créer un champ sur un domaine spatial
+------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * initialisation par une fonction de la position spatiale
+   * initialisation sur un groupe de maille
+
+Le domaine géométrique de définition du champs à créer est spécifié
+ici par la donnée d'un groupe de mailles. Ce cas d'usage est
+typiquement prévu pour produire les conditions de chargement initial
+d'une structure, par exemple en définissant un champ sur une surface
+de la géométrie, identifiée par un nom de groupe de mailles.
+
+.. warning:: DEVELOPPEMENT EN COURS
+
+Exemple 6: Extraire une partie d'un champ
+-----------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * extraire une composante (ou un sous-ensemble des composantes)
+   * extraire un domaine géométrique (valeurs sur un groupe de maille)
+   * extraire un ou plusieurs pas de temps.
+
+.. warning:: DEVELOPPEMENT EN COURS
+
+   On doit illustrer ici les fonctions de restriction, qui
+   permettraient de récupérer certaines composantes uniquement. Le
+   principe est qu'on crée un nouveau champ qui est une restriction du
+   champ argument à une liste de composantes à spécifier (utiliser la
+   fonction __call__ des fieldproxy).
+
+Pour l'extraction des pas de temps, on peut se ramener au cas de
+l'exemple 2 avec une seule source de donnée.
+
+Exemple 7: Créer un champ à partir d'une image to[mp]ographique
+---------------------------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * Création d'un champ sans datasource (ni maillage, ni champs), à
+     partir d'un fichier image
+
+En tomographie ou en topographie, les appareils de mesure produisent
+des images qui représentent une grandeur physique en niveaux de gris
+sur un plan de coupe donné. L'image ci-dessous représente par exemple
+une vue interne du corps humain faite par IRM:
+
+.. image:: images/xmed-irm.png
+   :align: center
+   :width: 600px
+
+Cette image est un ensemble de pixels organisés sur une grille
+cartesienne. Elle peut donc être modélisée sous la forme d'un champ
+scalaire dont les valeurs sont définies aux cellules d'un maillage
+réglés de même taille que l'image (en nombre de pixels):
+
+.. image:: images/xmed-irm-field.png
+   :align: center
+   :width: 600px
+
+Le module de manipulation de champ fournit un utilitaire appelé
+``image2med.py`` qui permet d'appliquer ce principe à la conversion
+d'un fichier image en fichier med contenant la représentation de
+l'image sous forme d'un champ scalaire (seul le niveau de gris est
+conservé)::
+
+  $ <xmed_root_dir>/bin/salome/xmed/image2med.py -i myimage.png -m myfield.med
+
+.. |ICO_IMAGESOURCE| image:: images/ico_imagesource.png
+                        :height: 16px
+
+Cette opération de conversion peut être faite automatiquement dans
+l'interface graphique du module au moyen de la commande "Add Image
+Source" |ICO_IMAGESOURCE| disponible dans la barre d'outils. Cette
+commande ouvre la fenêtre suivante pour inviter l'utilisateur à
+choisir un fichier image:
+
+.. image:: images/medop_image2med_dialog.png
+   :align: center
+
+Le nom du fichier med résultat est proposé par défaut (changement de
+l'extention en ``*.med``) mais il peut être modifié. Enfin, on peut
+demander le chargement automatique du fichier med produit pour ajout
+dans l'espace de donnée. Les champs peuvent alors être manipulés comme
+dans les cas d'utilisation standard.
+
+Par exemple, l'image ci-dessous affiche le résultat de la différence
+entre deux images, ajoutée à l'image de référence: si i1 et i2
+désignent les champs créés à partir des deux images, on représente ``r
+= i1 + 5*(i2-i1)`` où le facteur 5 est arbitraire et sert à amplifier
+la zone d'intérêt (en haut de l'oeil gauche):
+
+.. image:: images/xmed-irm-diff.png
+   :align: center
+   :width: 600px
+
+L'exemple ci-dessous est le résultat du chargement d'une image
+tomographique issue du projet MAP (Charles Toulemonde,
+EDF/R&D/MMC). L'image tomographique:
+
+.. image:: images/champ_altitude_MAP.png
+   :align: center
+   :width: 600px
+
+Le résultat du chargement:
+
+.. image:: images/medop_image2med_tomographie.png
+   :align: center
+   :width: 800px
+
+Exemple 8: Continuer l'analyse dans PARAVIS
+-------------------------------------------
+
+.. note:: Cet exemple présente les fonctions:
+
+   * Export de champs vers le module PARAVIS.
+
+Les possibilités de représentation graphique des champs fournies par
+le module MED ont pour seul objectif le contrôle visuel rapide. Par
+défaut, le viewer de VISU est employé.
+
+Pour une analyse plus détaillées des champs, il est nécessaire de
+poursuivre le travail dans PARAVIS. Le module de manipulation de
+champs offre une fonction qui simplifie ce passage, en faisant le
+chargement automatique dans PARAVIS et en proposant une visualisation
+par défaut (carte de champs scalaire).
+
+Pour cela, il faut sélectionner dans l'espace de travail les champs à
+exporter, puis déclencher la fonction d'export depuis le menu
+contextuel associé:
+
+.. image:: images/medop_exportparavis.png
+   :align: center
+
+Les champs sélectionnés sont regroupés dans une entrée MED du
+navigateur PARAVIS, et le premier champ est affiché sous forme de
+carte de champ:
+
+.. image:: images/medop_exportparavis_result.png
+   :align: center
+   :width: 800px
+
+.. note:: La fonction d'export est une fonction de confort. La même
+   opération peut être faite manuellement en procédant d'abord à
+   l'enregistrement des champs sous forme de fichier MED, puis en
+   chargeant le fichier généré dans le module PARAVIS pour
+   visualisation.
+
+.. _xmed.userguide.tui:
+
+Utilisation de l'interface textuelle du moduel XMED (TUI)
+=========================================================
+
+Toutes les opérations menées au moyen de l'interface graphique peuvent
+être réalisées (avec plus ou moins de facilité) avec l'interface
+textuelle. Le module de manipulation de champs peut même être utilisé
+exclusivement en mode texte. Pour cela, on lance la commande::
+
+ $ <path/to/appli>/medop.sh
+
+Cette commande ouvre une console de commandes ``medop>``. Un fichier
+med peut être chargé et travaillé, par exemple pour créer des champs à
+partir des données du fichier.
+
+Que l'on soit en mode texte pur ou en mode graphique, un séquence de
+travail type dans la console peut ressembler au jeu d'instructions
+suivantes::
+
+ >>> load("/path/to/mydata.med")
+ >>> la
+ id=0    name    = testfield1
+ id=1    name    = testfield2
+ >>> f1=get(0)
+ >>> f2=get(1)
+ >>>   ls
+ f1      (id=0, name=testfield1)
+ f2      (id=1, name=testfield2)
+ >>> r=f1+f2
+ >>> ls
+ f1      (id=0, name=testfield1)
+ f2      (id=1, name=testfield2)
+ r       (id=2, name=testfield1+testfield2)
+ >>> r.update(name="toto")
+ >>> ls
+ f1      (id=0, name=testfield1)
+ f2      (id=1, name=testfield2)
+ r       (id=2, name=toto)
+ >>> put(r)
+ >>> save("result.med")
+
+Les commandes principales sont:
+
+* ``load``: charge un fichier med dans la base de données (utile
+  uniquement en mode texte pur)::
+
+  >>> load("/path/to/datafile.med")
+
+* ``la``: affiche la liste de tous les champs chargés en base de données ("list all")
+* ``get``: définit un champ dans l'espace de travail à partir de son
+  identifiant (utile plutôt en mode texte pur car l'interface
+  graphique permet de faire cette opération par sélection d'un champ
+  dans le dataspace)::
+
+  >>> f=get(fieldId)
+
+* ``ls``: affiche la liste des champs présent dans l'espace de travail ("list")
+* ``put``: met un champ en référence dans l'*espace de gestion*::
+
+  >>> put(f)
+
+* ``save``: sauvegarde tous les champs référencés dans l'espace de
+  gestion dans un fichier med::
+
+  >>> save("/path/to/resultfile.med")
+
+.. note:: On peut faire à ce stade plusieurs remarques:
+
+   * la commande ``load`` charge uniquement les méta-informations
+     décrivant les maillage et les champs (noms, type de
+     discrétisation, liste des pas de temps). Les maillages et les
+     valeurs physiques des champs sont chargées ultérieurement (et
+     automatiquement) dés lors qu'elles sont requises par une
+     opération. Dans tous les cas, les données med (méta-informations
+     et valeurs) sont physiquement stockées au niveau de l'espace
+     *base de données*.
+   * la commande ``get`` définit en réalité un *manipulateur de champ*
+     dans l'espace de travail, c'est-à-dire une variable qui fait la
+     liaison avec le champ physique hébergé dans la base de
+     données. Les données physiques ne circulent jamais entre les
+     espaces, mais restent centralisées au niveau de la base de
+     données.
+
+Les commandes TUI suivantes nécessitent de travailler dans
+l'environnement graphique:
+
+* ``visu``: afficher une carte de champ pour contrôle visuel rapide
+  (pas de paramettrage possible)
+
+  >>> view(f)
+
+
diff --git a/src/MEDOP/doc/sphinx/xmed-workingnotes-2010.rst b/src/MEDOP/doc/sphinx/xmed-workingnotes-2010.rst
new file mode 100644 (file)
index 0000000..724c9a8
--- /dev/null
@@ -0,0 +1,461 @@
+.. meta::
+   :keywords: maillage, champ, manipulation
+   :author: Guillaume Boulant
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2010
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Principes directeurs du développement
+=====================================
+
+En matière de développement:
+
+* On ne cherche pas d'emblée à s'inscrire dans la fabrication d'un
+  module SALOME diffusable dans la version d'exploitation 2010 (SALOME
+  6). La raison est double: (i) on souhaite au moins pour 2010 ne pas
+  devoir tenir compte des contraintes de temps SALOME et (ii) le
+  produit envisagé fin 2010 est une maquette qui cherche à éprouver
+  l'ergonomie générale d'utilisation et en aucun cas on ne peut
+  garantir la réalisation d'un module SALOME compatible avec les
+  exigences de mise en exploitation.
+* On ne cherche pas d'emblée à capturer tous les cas d'application,
+  mais à concevoir un développement qui acceptera les extensions de
+  périmètres dans des conditions raisonnables. Aussi, les
+  fonctionnalités développées seront celles qui sont nécessaires à la
+  réalisation des cas d'application de référence;
+
+En matière d'ergonomie:
+
+* L'interface utilisateur de référence (appelé espace de travail dans
+  le volet de spécifications fonctionnelles) est l'interpréteur
+  python. Les fonctionnalités doivent être pensées pour un usage
+  adapté à une interface textuelle (TUI) de ce type.
+* La création d'une interface graphique (GUI) peut être envisagée en
+  complément et comme un moyen de manipuler graphiquement les
+  fonctionnalités développées pour l'interface textuelle et pour aider
+  la préparation des variables dans l'interface python.
+* Le modèle d'un processus de manipulation de champs est:
+
+  - Préparation du jeu de variables U, V, ... représentant les champs
+    à manipuler. C'est à ce stade que l'on résoud la question de
+    sélection des données (dans un champ publié dans l'arbre d'étude,
+    par un module de calcul ou par chargement d'un fichier med)
+  - Utilisation des variables avec une sémantique la plus proche
+    possible du modèle conceptuel et des spécifications
+    fonctionnelles;
+  - Création des variables qui représentent les résultats des
+    fonctions de manipulation;
+  - Persistence (fichier med), visualisation (SALOME) ou export (vers
+    une structure qui peut être directement utilisable en numpy)
+
+Sur le plan technique:
+
+* On souhaite spécifier clairement le conteneur SALOME des fonctions
+  de manipulation de champs. Pour discussion:
+
+  - Il apparaît que les modules SALOME MED et VISU contiennent déjà
+    des fonctions qui peuvent faire partie des fonctions de
+    manipulations de champs (en particulier pour l'exploration des
+    structures MED, leur visualisation et la sélection des données à
+    manipuler).
+  - Dans la mesure où le module MED n'est pas utilisé à ce jour (en
+    tout cas pas sous sa forme de module SALOME) et compte-tenu du
+    caractère obsolescent du module VISU (amené à être remplacé sur le
+    plan fonctionnel  par le module PARAVIS), on pourrait examiner la
+    création d'un module dédié à la manipulation des maillages et des
+    champs par l'agrégation technique au sein d'un même module des
+    fonctions des modules MED et VISU.
+
+Au moins dans un premier temps, on se donne les limites suivantes:
+
+* Une opération ne peut pas combiner des pas de temps différents. Dans
+  l'hypothèse où cette limite venait à être levée, on doit spécifier
+  le pas de temps de la donnée résultat;
+* Le domaine d'application d'une opération pourra être défini
+  exclusivement par la donnée d'un maillage ou un groupe d'éléments du
+  maillage;
+* On ne traite pas le cas des champs qui prennent leurs valeurs aux
+  points de gauss ou aux noeuds par élément. Une particularité de ces
+  types de support est que le repérage de la position implique deux
+  indices (par exemple l'indice de la maille, puis l'indice du point
+  de gauss).
+
+Eléments de conception
+======================
+
+Plan général
+------------
+
+On peut par exemple imaginer une maquette du genre:
+
+* En C++ dans MEDGUI, charger un fichier med et donner une vue de la
+  structure des maillages et des champs dans l'arbre d'étude.
+* Sélectionner un élément (par exemple un pas de temps d'un champ) et
+  le menu contextuel permet d'exporter ce champ dans la console python
+  pour manipulation. Pour cela, s'inspirer de la fonction
+  ``XCADGUI::OnLoadScript()`` du XCADGUI pour manoeuvrer un objet
+  PythonConsole.
+* L'élément est marqué comme ayant été exporté, on peut imaginer une
+  récupération ultérieure.
+* Exporter un deuxième champ cohérent avec le premier (même pas de
+  temps et défini sur le même maillage avec le même support, on
+  s'arrange pour).
+* Dans la console python, faire les opérations sur les champs
+* Publication du champ résultat dans l'arbre d'étude pour sauvegarde
+  ultérieure. C'est a priori le gros morceau qui consiste à faire un
+  objet CORBA MED à partir d'un objet MED standard, en plus défini
+  dans la console python (sous forme d'objet python).
+
+Quand ce premier cas d'utilisation est au point, on peut envisager de
+le compléter par les opérations suivantes
+
+* exporter le résultat med dans un fichier
+* visualiser les champs produits
+
+Plan de développement:
+
+* Faire une maquette en MEDMEM pur d'abord, car quelque soit le choix
+  d'architecture, l'opération physique se déroulera en définitif au
+  niveau de MEDMEM pur.
+* Prévoir une implémentation des opérations sous forme de fonctions
+  informatiques, même les opérations algébriques (+,-,*,/). Pour ces
+  dernières et dans certaines conditions (quand on manipule
+  directement les strutures MEDMEM et non pas les objets CORBA),
+  l'utilisation des formes A+B, A-B, ... peuvent être rendues
+  possibles. Dans ce cas, voir la possibilité de combiner plusieurs
+  opérations algébriques sur une seule ligne: A+B-C*0.3.
+* On peut charger la structure MED sous forme d'objet CORBA publiable
+  dans l'étude, de sorte d'avoir accés aux méta-données et pouvoir par
+  exemple sélectionner les champs d'intérêt. De cet objet CORBA, on ne
+  récupère que les informations nécessaires au chargement d'un champs:
+  le nom du champs, le nom de son maillage associé, les identifiants
+  du pas de temps, au besoin une structure Field non chargée (par
+  exemple pour récupérer plus facilement le maillage).
+* Un mécanisme (à développer à partir du PyConsole par exemple)
+  pourrait alors permettre le chargement des champs sélectionnés dans
+  la console python et sous un nom facile à manoeuvrer. Prendre
+  inspiration sur XCADGUI::LoadIntoPythonConsole().
+* A priori, les données sont physiquement chargée dans le GUI. Au
+  besoin, il semble possible (cf. MED_i::init) de fabriquer une objet
+  CORBA field à partir d'un field standard (à tester).
+
+Une autre idée est de récupérer le pointeur CORBA MED dans la console
+python et de tirer les données à partir de là. Ajouter une couche de
+wrapping python pur pour gérer les cas de simplification (surcharge
+des opérations arithmétiques par exemple).
+
+Besoins complémentaires:
+
+* L'interpréteur doit contenir des éléments d'aide (par exemple un
+  help qui liste les opérations possibles sur les champs chargés)
+* prévoir quelques fonctions de visu et de persistence. Cela commence
+  probablement par des fonctions de publication dans l'étude des
+  champs créés par les opérations de manipulation. Les champs sont
+  physiquement ajouté automatiquement à la structure med par le MedOp
+  mais il n'est pas obligatoirement publié => fournir un moyen de
+  publication.
+
+Limitations actuelles (liées à la conception de MEDMEM):
+
+* les champs doivent être gérés par la même structure MED car ils
+  doivent partager le même support.
+* les opérations possibles dans MEDMEM sont entre champs pris sur un
+  pas de temps (Q: les pas de temps peuvent-ils être différents).
+
+
+Développements
+--------------
+
+Développement de classes proxy:
+
+* FieldProxy, FieldTimeSeriesProxy
+* Attention pour les éries temporelles, le SUPPORT med peut être
+  différent en chaque pas de temps (par exemple en cas d'extension
+  spatiale du champ au cours du temps).
+
+MEDMEM_MedDataManager:
+
+* FIX: test de l'implémentation C++ au travers de la fonction test() du
+  MedOperator ==> OK. Quand on fait la même opération depuis python
+  via l'interface SWIG ==> au deuxième appel de getFieldDouble, le
+  destructeur du champ semble être appelé. Pb de gestion des pointeurs?
+
+
+Evolutions à prévoir
+====================
+
+Concernant MEDMEM:
+
+* FIX: SALOME_MED::MED::getField devrait pouvoir être appelée
+  plusieurs fois de suite puisqu'on recycle la référence si elle est
+  déjà chargée.
+* IMP: MEDMEM::MED faire une gestion des chargements des champs (par
+  exemple avec un getField qui renvoie le champ s'il est déjà chargé
+  ou le charge et le renvoie sinon).
+* IMP: Récupérer le nom du fichier med à partir de l'objet MED, en
+  passant a priori par le driver associé. Plusieurs driver peuvent
+  être associés à une structure MED car les données peuvent être
+  chargées en plusieurs fois et de plusieurs fichiers. Il faut donc
+  étendre la structure MED pour avoir accés à la liste des driver puis
+  de cette liste déduire les noms des fichiers.
+* IMP: Opérations combinant des champs sur des support différents ne
+  peuvent pas être faites par l'API (une exception est levée en cas de
+  supports incompatibles), mais on peut imaginer le faire en
+  manoeuvrant les tableaux de données directement.
+* INF: faire le point sur les fonctions utilitaires autour de MEDMEM
+  et de son interface SWIG (ex: dumpMEDMEM.py, med_opfield_test.py).
+* IMP: dans MEDMEM::MED et SALOME_MED::MED, pouvoir enlever un champ
+  préalablement ajouté: une fonction removeField en complément de
+  addField.
+
+Concernant l'interface SALOME_MED:
+
+* IMP: Fonctions algébriques, qui seront implémentées au niveau de la
+  structure MED et requêtées au niveau des classes proxy en spécifiant
+  les identifiants des champs impliqués et les paramétres requis (pas
+  de temps en particulier).
+
+Concernant le module MED:
+
+* IMP: pourvoir exporter la structure med dans un fichier med (la
+  structure ayant pu être enrichie par la publication de champs créés
+  par les operations de champs.
+
+
+Historique des travaux
+======================
+
+20100726 : mise au point du schéma de conception
+------------------------------------------------
+
+Choix entre MEDMEM et MEDCoupling: on reste sur MEDMEM pour plusieurs
+raisons:
+
+* MED Coupling ne peut pas gérer des mailles de dimensions différentes
+  dans un même modèle (choix faits dans un soucis de performance dans
+  l'accès à une structure de donnée compact). On peut contourner le
+  problème en définissant deux champs pour traiter chacun des type de
+  mailles.
+* Un champ repose sur un maillage complet (pas de notion de profil,
+  mais cela peut être émulé en créant deux maillages)
+* Le concept de point de gauss n'existe pas (pas implémenté)
+
+TODO:
+
+* Idéalement, il conviendrait de faire un état des lieux du module
+  MED, en particulier des éléments MEDMEM (le coeur), les interfaces
+  CORBA associées (MED.idl implémenté dans le package source
+  MEDMEM_I), l'engine (composant SALOME d'interface MED_Gen.idl et
+  implémenté dans le package source MED) et le GUI (MedGUI.cxx
+  implémenté dans le package source MEDGUI).
+
+* Ergonomie TUI et modèle CORBA associé:
+
+  1. Charger un objet medmem (puis les objets métier mesh et field)
+     sur un domaine d'application donné.
+  2. En faire des variables disponibles dans l'interface TUI et que
+     l'on peut manipuler dans des opérations algébriques.
+  3. Pouvoir au besoin en faire des objets CORBA pour l'interface avec
+     les autres modules SALOME.
+
+* Compléter le diagramme de la structure informatique de MED (en
+  particulier l'implémentation des interface IDL).
+* Préparer un module de travail XMED (organisation d'une bibliothèque)
+
+Tests à réaliser:
+
+* Est-il possible de faire des opérations algébriques à partir des
+  objets SALOMEMED (objects CORBA MED)?
+* Création d'un objet MED_i à partir d'une objet MED pur préalablement
+  chargé en mémoire.
+
+A retenir:
+
+* Des opérations de champs sont possibles sur des champs à des pas de
+  temps fixés. Si l'opération doit être menée sur plusieurs pas de
+  temps, alors itérer sur chaque pas de temps. L'idée ici est
+  d'introduire le concept de série temporelle de champs en temps
+  qu'objet manipulable.
+* Pour deux champs différents de la même structure MED, la données des
+  identifiants dt et it ne correspond pas forcément au même instant
+  absolu (en tout cas rien ne le garanti, même si c'est tout de même
+  une pratique courante).
+
+20101005 : première maquette de démonstration de l'ergonomie en MEDMEM pur
+--------------------------------------------------------------------------
+
+XMED: svn révision 16
+Travailler avec le fichier de donnée testfield.med joint.
+
+
+20101007 : Vers une maquette CORBA
+----------------------------------
+
+Le contexte d'utilisation des opérations de champs est l'environnement
+SALOME. Le support de gestion des données est donc l'étude SALOME. Au
+plus bas niveau, les champs sont des objets MEDMEM instanciés dans une
+session SALOME (soit par un code de calcul intégré, soit par
+chargement des données à partir d'un fichier med). Ces objets sont en
+général référencés dans l'étude SALOME sous la forme d'objets CORBA de
+classe SALOMEMED::FIELD. Plus exactement, l'étude SALOME gère des
+SObject (Study Object) dont un attribut est une référence vers un
+objet CORBA de classe SALOMEMED::FIELD qui lui-même encapsule un objet
+MEDMEM::Field.
+
+On peut donc envisager une solution dans laquelle on donne à
+l'utilisateur des poignées de manipulation des objets
+SALOMEMED::FIELD, par exemple au moyen d'un modèle informatique de
+type proxy. Cela signifie que l'utilisateur ne manipule pas
+directement des objets MEDMEM mais des objets python qui font
+l'interface (à concevoir et implémenter, a priori avec un design
+pattern de type proxy).
+
+L'utilisation directe des objets MEDMEM aurait pu être une solution
+extremement pratique dans la mesure où ces objets en l'état peuvent
+être combinés dans des opérations de champs (c'est déjà
+implémenté). Par contre, ce procédé souffre de limitations importantes
+dans la gestion et la circulation des données pour les différents cas
+d'utilisation envisagés (visualisation, export, transfert à un autre
+module SALOME).
+
+L'avantage de la solution proposée est multiple:
+
+* Elle permet de travailler sur une structure MED cohérente pour
+  intégrer les résultats des opérations de calculs et combiner des
+  champs cohérents entre eux. Tout passe par des classes proxy qui
+  pourront s'assurer de la cohérence des opérations demandées et
+  exécuter automatiquement les fonctions de pré-traitement ou
+  post-traitement requises pour ces opérations. On peut imaginer par
+  exemple que les requêtes d'opération soient envoyées par les classes
+  proxy à la structure MED à laquelle les champs sont associés pour
+  piloter l'opération en MEDMEM pur.
+* Elle permet d'automatiser un certain nombre d'opérations
+  implicites. Par exemple si deux champs ne sont pas définis dans la
+  même unité, un changement d'unité peut être effectué automatiquement
+  par la classe proxy avant de commander l'opération au niveau
+  MEDMEM.
+* Elle permet de laisser les données sur le container SALOME et de
+  réaliser des opérations sans rappatrier les données en local (qui
+  peuvent être en trés grand nombre).
+* Elle permet d'étendre facilement l'ergonomie de manipulation des
+  champs, par exemple en définissant la notion de *série temporelle de
+  champs*, ou encore les concepts de *domaine de définition* évoqués
+  dans les spécifications fonctionnelles.
+* Elle rend immédiat la circulation des données entre modules SALOME,
+  puisque les champs restent accessble par des objets CORBA, en
+  particulier pour la visualisation ou l'export des champs produits
+  par les opérations.
+
+Elle a cependant des inconvénients et/ou limitations:
+
+* Elle nécessite l'implémentation d'une classe proxy pour encapsuler tous
+  les appels aux objets SALOME_MED (et donc MEDMEM). Cette interface
+  se limite a priori aux opérations de champs (les opérations
+  algébriques dans un premier temps).
+* Les champs à manipuler dans une opération donnée doivent être gérés
+  par la même structure MED.
+
+Il est à noter également que les interfaces de programmation de
+SALOMEMED (interface CORBA pour MEDMEM) devront être étendues pour
+permettre des requêtes de manipulations de champs (fonctions addition,
+soustraction, multiplication, ...). Pas de contrainte ici sur
+l'ergonomie puisque la manipulation par l'utilisateur se fera au
+niveau des classes proxy uniquement.
+
+
+Hypothèses:
+
+* On tente ici une maquette qui exploite dans la mesure du possible le
+  fonctionnement actuel du module MED, en particulier la gestion des
+  données dans l'étude.
+* Dans une deuxième version, on pourra examiner sérieusement la
+  révision de la gestion des données dans le module, quitte à la
+  spécifier et maquetter dans XMED pour intégration ultérieure dans
+  MED. Exemple:
+
+  - Pouvoir gérer plusieurs structures med dans l'étude.
+
+* Enfin, on exploite MEDMEM en l'état. Pour les besoins de la gestion
+  des données (gestion des chargements des champs en particulier,
+  références croisées pour retrouver le med à partir du champ par
+  exemple, ...), il pourra être nécessaire de faire évoluer MEDMEM. Il
+  faut pouvoir par ailleurs gérer indifféremment une structure med (et
+  les champs qui y sont associés) qu'elle soit créée en mémoire from
+  scratch ou chargée d'un fichier (donc attention avec les opérations
+  de lecture read(), sur les maillages comme sur les champs). La
+  structure med permet d'obtenir les méta données (meta-field par
+  exemple) mais ne permet pas de savoir si les données sont
+  physiquement chargées ou pas.
+
+
+Révisions:
+
+* XMED svn revision 21 + tarball MED_SRC-20101014-15h26m.tgz.
+  Première version qui permet d'importer un champ dans la console
+  python sous la forme d'un FieldProxy. Ne permet pas encore de faire
+  des opérations. Introduction dans le module MED de l'interface MEDOP
+  pour prendre en charge les opérations sur les champs.
+
+
+20101019 : Maquette de démonstration pour l'addition
+----------------------------------------------------
+
+Cette maquette implémente une solution technique de bout en bout (de
+l'interface python aux objets MEDMEM, en passant par le fieldproxy
+puis les servants CORBA pour les operations, ...) mais sur le
+périmètre de l'addition de champs sur tout leur domaine de définition
+et pour un pas de temps donné.
+
+Limitations:
+
+* gére l'addition de champs de type double uniquement (parceque le
+  reste n'est pas implémenté)
+
+Révisions:
+
+* XMED: svn révision 25
+* MED: cvs tag BR_medop_20101019
+
+
+20101020: Fonctions complémentaires
+-----------------------------------
+
+Cette version test la faisabilité des fonctions complémentaires pour
+accompagner la manipulation de champs. Cela comprend en particulier:
+
+* **la sauvegarde des champs produits** dans un fichier med (un champ ou
+  toute la structure med). Pour cela, on définit un med proxy comme
+  l'extention du SALOME_MED::MED (prévir plutôt d'implémenter ce type
+  de fonction au niveau C++ pour permettre un usage au niveau du GUI
+  C++?).
+* **la visualisation d'un champ** au moyen du module VISU.
+* **des fonctions d'aide interactives** pour assister l'utilisateur
+  dans la console de manipulation des champs.
+
+
+Questions:
+
+* peut-on sauvegarder un champ unique?
+* peut-on faire en sorte que ce soit l'affectation à une variable qui
+  provoque l'ajout du champ à la structure med (ou plus exactement qui
+  supprime tous les champs intermédiaires).
+
+
+Révision:
+
+* XMED: svn revision 31
+* MED: cvs tag BR_medop_20101025
+
+
+20110606: commit avant transfert dans git
+-----------------------------------------
+
+* XMED: svn revision 53
+
+Les parties de MED utiles à MEDOP seront reversées dans XMED
+dans une première étape, puis le tout dans MED 6 au final. 
diff --git a/src/MEDOP/doc/sphinx/xmed-workingnotes-2011.rst b/src/MEDOP/doc/sphinx/xmed-workingnotes-2011.rst
new file mode 100644 (file)
index 0000000..8ba8b80
--- /dev/null
@@ -0,0 +1,473 @@
+.. meta::
+   :keywords: maillage, champ, manipulation
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2011
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+Cas d'utilisation métier
+========================
+
+On illustre par un exemple (Christophe Vallet, R&D/MMC, 1/7/2011)::
+
+ J'ai souvent des fichiers med de résultats de calcul, et j'aimerais y
+ ajouter de nouveaux champs issus de champs existants. J'aimerais
+ aussi pouvoir créer de nouveaux meds plus petits par extraction de
+ certaines composantes de champs, certains groupes ou certains pas de
+ temps.
+
+On peut exprimer le besoin sous la forme des cas d'utilisation
+suivants (use cases):
+
+* **UC1: combiner dans un même fichier med des champs issus de
+  plusieurs sources de données**. On peut par exemple charger un
+  premier fichier, puis ajouter à cette base des champs issus d'autre
+  fichiers ou générés par manipulation de champs, ou encore générés
+  par un module de calcul qui produirait directement du MEDCoupling.
+* **UC2: créer un champ contenant certaines composantes d'un autre
+  champ**. On pense ici aux fonctions de restriction, qui permettraient
+  de récupérer certaines composantes uniquement.
+* **UC3: créer un champ contenant certains pas de temps d'un autre
+  champ**. C'est un cas particulier des fonctions de restriction
+  évoquées ci-dessus.
+* **UC4: créer un champ comme la limitation d'un autre champ à un
+  groupe de mailles**. C'est un cas particulier des fonctions de
+  restriction évoquées ci-dessus. Notion de domaine spatial. A
+  priori la notion de groupe est définie dans MEDLoader.
+
+On peut ajouter également les UC identifiés pour la maquette 2010:
+
+* **UC5: comparer des champs issus de source de données différentes**,
+  par exemple des champs chargés de deux fichiers med différents et
+  qui s'appuient sur le même maillage (au moins conceptuellement).  Le
+  problème technique ici est de pouvoir changer le maillage d'un
+  champ, pour ramener tous les champs sur le même maillage (au sens
+  informatique). Ceci est une contrainte de MEDCoupling, les
+  opérations sur des champs A et B imposent que A et B soient définis
+  sur le même maillage, i.e. le même objet informatique.
+* **UC6: créer un champ de toute pièce sur un maillage**, ou un groupe
+  de mailles. Ce cas d'usage est typiquement prévu pour produire les
+  conditions de chargement initial d'une structure. Il s'agit ici
+  d'initialiser un champ à partir de zéro sur une surface prédéfinie
+  de la géométrie (par exemple spécifiée par un nom de groupe de
+  mailles).
+
+Pour UC5: les sources de données sont référencées dans l'object
+browser. On importe explicitement les données dans l'espace de
+travail. On peut détecter que les maillages sont identiques et on
+propose à l'utilisateur de transférer le champ sur le maillage déjà
+présent. Sinon, les champs devront être référencés sur des maillages
+distincts dans l'arbre de l'espace de travail.
+
+Analyses préliminaires pour le chantier 2011
+============================================
+
+On fait le choix pour le chantier 2011 de travailler à partir de la
+bibliothèque MEDCoupling (et non plus MEDMEM comme c'était le cas dans
+le démonstrateur 2011).
+
+Analyse de MEDCoupling et MEDLoader
+-----------------------------------
+
+MEDCoupling est l'implémentation du modèle de données MED (avec
+recherche de minimisation des dépendances logicielles) et MEDLoader
+fournit une ensemble de fonctions pour le chargement des structures
+MEDCoupling depuis un fichier ou inversement leur sauvegarde sous
+forme de fichiers.
+
+Dans l'implémentation MEDCoupling, un champ est l'ensemble des valeurs
+d'une grandeur physique sur un maillage pour un pas de temps donné. Un
+champ est caractérisé par:
+
+* un support spatial, le maillage
+* un type de discrétisation spatial, défini par l'emplacement des
+  valeurs sur le maillage (sur les noeuds, sur les cellules, aux
+  points de gauss, ...) et le mode d'interpolation spatial (P0, P1,
+  etc)
+* un pas de temps, défini par deux entiers (iteration, order) et un
+  réel (timestamps)
+
+Dans cette implémentation, il existe une association 1..n entre un
+maillage et un champ (alors que dans MEDMEM, la structure
+intermédiaire SUPPORT est implémentée).
+
+MEDCouplingCorba fournit un ensemble de servants CORBA pour manoeuvrer
+des structures MEDCoupling au travers du bus CORBA. L'interface à ce
+jour est délibérément réduite. Des classes dites "Cliente" sont
+fournies pour piloter les servants CORBA depuis un contexte
+client. Par exemple ``MEDCouplingFieldDoubleClient`` fournit une
+fonction de création d'une structure MEDCoupling à partir d'un
+pointeur vers un servant CORBA. La structure est créée localement
+(dans le contexte client) avec duplication des données issue de la
+structure encapsulée par le servant CORBA (récupération par la
+fonction de sérialisation).
+
+Aucune interface CORBA n'est défini pour MEDLoader.
+
+Questions:
+
+* Voir comment sont créés les servants, et surtout comment ils sont
+  récupérés (via le lcc?)
+* Comment peut-on définir un champ sur un groupe de mailles (et non
+  pas sur le maillage complet)? Comment peut-on extraire le champs
+  circoncit à une groupe de mailles pour des opérations.
+
+  - R: méthode changeUnderlyingMesh
+
+* Comment manipuler deux champs chargées de fichiers différents mais
+  construit sur le même maillage (conceptuellement). On peut forcer la
+  réassociation d'un champ sur un autre maillage?
+* Manipuler des champs de pas de temps différents? Différentes
+  composantes d'un ou plusieurs champs?
+* Comment importer un MedCoupling dans PARAVIS? (dans VISU?)?
+
+* mapper sur une image
+
+Improvments:
+
+* MEDLoader::Write should raise an exception if the filepath is not writable
+* MEDDataManager: développer une classe chapeau sur MEDCoupling et
+  MEDLoader pour  aider au chargement et la gestion de données MED
+  (orienté manipulation de champs). Cette classe serait associée des
+  structures légères FieldHandler et MeshHandler et des listes
+  correspondantes pour la navigation dans les méta-données.
+* Sur base du MEDDataManager, prévoir des ports med pour yacs par
+  lesquels pourrait transiter des handler.
+
+Nouveaux concepts à prendre en compte
+-------------------------------------
+
+Au démarrage du chantier 2011, on observe que les concepts suivants
+sont introduits dans le module MED: 
+
+* Le conteneur MED n'existe plus, utiliser MEDFILEBROWSER pour charger
+  les fichiers med et obtenir les informations générales sur le
+  contenu.
+* MEDFILEBROWSER: remplace le concept de driver et fournit les
+  fonctions précédemment fournies par la classe MED pour obtenir les
+  informations de structure.
+* Concept d'Extractor pour une lecture sélective des données de champs
+  (suivant un critère d'extraction)
+* Il n'est plus nécessaire d'appeler les méthodes read explicitement
+  sur les objets (MESH et FIELD) pour charger les données. Par
+  ailleurs, on peut définir deux fois le même champs (double
+  chargement a priori) sans lever d'exception).
+
+
+Analyse de conception pour le chantier 2011
+===========================================
+
+Composants SALOME (interfaces IDL)
+----------------------------------
+
+* MEDDataManager: défini une structure FIELD pour identifier un champ
+  dans les requêtes. Il s'occupe également de la récupération physique
+  des données, quelqu'en soit la source (fichier avec MEDLoader, autre
+  module SALOME comme PARAVIS avec une méthode à définir)
+* MEDCalculator: s'occupe des requêtes de calcul dont les arguments sont
+  les structures FIELD du MEDDataManager. Reprendre l'interface de
+  MEDOP.
+
+Use case à réaliser depuis un client python:
+
+* UC01: ajouter un fichier d'entrée et accéder aux informations
+  concernant les champs. Ex: récupérer une structure champs par la
+  donnée des paramètres primaires (nom identifiant, dt, it, nom du
+  maillage).
+* UC02: créer des champs et les ajouter au MEDDataManager
+* UC03: mener des opérations basique sur les champs en console python
+
+Interface Utilisateur
+---------------------
+
+L'interface utilisateur est composée des parties suivantes:
+
+* une partie GUI (appelée par la suite MEDGUI) qui s'occupe de piloter
+  le chargement des données dans l'espace de travail, au moyen d'une
+  interface graphique;
+* une partie TUI (appelée par la suite MEDTUI) qui s'occupe de piloter
+  la création de champs, au moyen de commandes exécutées dans la
+  console python.
+
+Le principe est que les champs sont préalablement chargés au niveau du
+composant SALOME au moyen de l'interface graphique (MEDGUI), puis
+manoeuvrés depuis l'application SALOME au moyen de variables proxy
+définies dans la console python (MEDTUI). Au chargement, les champs
+sont indéxés par le MEDDataManager, puis les index sont rendus
+accessibles au niveau du GUI au moyen d'une représentation
+arborescente de la structure MED. Les feuilles de l'arbre
+correspondent à des champs qui peuvent être sélectionnés et dont
+l'index peut être obtenu de la sélection.
+
+L'espace de travail est organisé autour du concept de
+"workspace". L'étude SALOME liste les datasource (les fichiers source
+des données med, mais peut-être aussi les référence vers des objets
+MED déjà existants ou chargé dans PARAVIZ). Une vue complémentaire
+permet de voir la structure fine d'une source de données.
+
+Concernant MEDGUI:
+
+* la représentation des données (les champs et les maillages associés)
+  doit permettre de récupérer par l'interface graphique les
+  identifiants des champs à manipuler (a priori les structures FIELD
+  définies par le composant MEDDataManager). Cela conduit à la mise en
+  place des composants suivants:
+
+  - MedDataModel hérité de TreeData. Il est peuplé avec les
+    méta-données décrivant la structure MED explorée.
+  - MedGuiManager qui permet l'implantation du doc widget de
+    présentation
+
+TODO:
+
+* specifier le concept de workspace (qui a une entrée dans l'étude?)
+  en bijection avec un datamanager
+* identifier des interlocuteur/utilisateur pour l'aspect ergonomie d'usage
+
+Concernant MEDTUI:
+
+* Il fournit les classes FieldProxy
+
+Questions:
+
+* Comment traiter le cas du travail sur des composantes ciblées, plus
+  généralement, comment introduire le concept de domaine
+  d'application?
+* Prévoir des fonctions génériques (initialisation d'un champ sur un
+  maillage avec une fonction analytique de la position, sauvegarder
+  les champs créés dans un fichier med)
+
+
+Tâches de développement
+=======================
+
+T20110622.1: Gestion des données internes
+-----------------------------------------
+
+**Status: terminé.**
+Suite: fonction de sauvegarde au niveau graphique également
+
+On vise les cas d'utiliation suivants:
+
+* UC1: intégrer dans le datamodel du gui un champ créé dans la console
+  python (et donc présent dans le datamanager du composant). Définir
+  l'utilité?
+* UC2: renommer un champ et plus généralement changer ses méta-données
+  (avec assurance de synchronisation entre toutes les données).
+* UC3: sauvegarder une sélection de champs. La sélection peut se faire
+  dans l'arbre du datamodel gui.
+
+WARN: robustesse de fieldproxy
+
+
+
+T20110622.2: UC Initialisation/Création de champs
+-------------------------------------------------
+
+**Status: à faire**
+
+Les cas implémentés à ce jour sont la création de champs à partir de
+champs existants et chargés d'un fichier med. On souhaite ici réaliser
+des cas 'utilisation autour de la création de champs "from scratch",
+s'appuyant tout de même sur un maillage chargé.
+
+UC01: Sélection d'un groupe de maille dans SMESH pour initialiser un
+champ (par exemple les conditions limites d'un problème de calcul).
+
+UC02: créer un champ avec des restrictions qui définissent le domaine
+d'application des opération de champs.
+
+UC03: créer un champ à partir d'une image (codes rgb utilisé comme les
+composantes du champs vectoriel ou niveaux de gris pour un champ
+scalaire. Attention, pour ça, il faudra a priori fiare une projection
+du maillage cartesien de l'image sur le maillage (quelconque) sur
+lequel on souhaite définir le champ.
+
+UC04: créer un champ à partir d'un tableau numpy
+
+De manière générale, ce type de création sera assisté par le
+MEDGUI. Au niveau MEDTUI, les fonctions pourraient être fastidieuses
+pour l'utilisateur.
+
+Par exemple, prévoir un menu contextuel qui propose les opérations
+possibles en fonction de la sélection (en plus de la fonction d'import
+dans la console python).
+
+TODO:
+
+* développer les fonctions d'initialisation, par exemple au moyen
+  d'applyFunc et du mécanisme de callable?
+
+T20110622.3: documentation contextuel
+-------------------------------------
+
+**Status: à faire**
+
+* Remettre toutes les commandes dans le même fichier (fusionner cmdtools
+  et fieldtools)
+* Faire un modèle générique de command (classe de base
+* Batir la doc des commandes sur cette base (lister toutes les
+  instances de type Command par exemple)
+
+T20110622.4: remontée des exception du composant MEDCalculator
+--------------------------------------------------------------
+
+**Status: en cours, compléter la couverture**
+
+Pour des messages contextuel sur les erreurs de calcul (ex: division
+par 0)
+
+* Poursuivre le travail fait sur getMedEventListener
+* Protéger tous les appels au composants effectués depuis la console
+  python (prendre example sur la commande save)
+
+T20110624.1: gestion des données GUI
+------------------------------------
+
+**Status: à faire**
+
+
+
+Le workspace a une entrée dans l'obrowser. Sur cette entrée on peut:
+
+* supprimer: supprime tout les champs associés
+* sauvegarder. Dans ce cas, on rappelle l'ensemble des champs pour
+  cocher ceux qu'on veut sauvegarder.
+
+Le gui data model est réservé aux opérations sur les champs et à
+piloter leur import dans la console python.
+
+TODO:
+
+* Spécifier les concepts de workspace, database, et datasource, espace
+  de gestion, ... et les associations. Simplifier avec l'appuie de use
+  cases.
+* Mécanisme de mise à jour du TreeView de XSALOME (aujourd'hui, seul
+  l'ajout addChild est implémenté
+* Clic droit sur objets de l'arbre: dans la notification TreeView ->
+  WorkspaceController, faire remonter l'évènement clic droit ainsi que la
+  liste des éléments sélectionné pour faire générer le menu contextuel
+  au niveau du WorkspaceController qui peut déterminer le contexte métier
+  (le TreeView ne le connaît pas).
+* Définir des DataObject pour les maillages, les séries temporelles et
+  les champs
+
+
+Spécification des espaces de données:
+
+* MEDDataManager dépend de l'étude (pour permettre la publication
+  d'information dans une étude SALOME).
+* créer "sourcid = MEDDataManager::addDataSource(filename)", suivie de
+  requetes getFields(sourceid), getMeshes(sourceid)
+* les espaces de données: dataspace, workspace. Un seul workspace par
+  étude, mais autand de datasources que l'on souhaite dans le
+  dataspace. Les datasources sont rangés dans l'étude (le dataspace)
+  et sont non modifiables après chargement (référence des sources de
+  données).
+
+
+T20110628.1: extention à d'autres objets SALOME
+-----------------------------------------------
+
+**Status: suspendu**
+
+On doit reposer la question de l'existance de l'arbre indépendant
+(DockWidget), d'une part, et l'extention aux autres objets (GEOM et
+SMESH en particulier) du principe de sélection graphique pour
+utilisation dans la console python, d'autre part.
+
+
+T20110628.2: visualisation d'un champ avec PARAVIS
+--------------------------------------------------
+
+**Status: terminé (pour une première version)**
+Suite: de nombreux défauts subsistent
+
+Questions/remarques:
+
+* Pb au démarrage du module: VisTrails fails to start
+* Peux-t-on piloter la vue 3D sans charger le module? (voir
+  myparavis.py)
+* Comment donner un nom au MEDReader1 dans l'arbre Pipeline?
+* Comment utiliser directement les objets MEDCouplingField?
+
+
+T20110706.1: documentation du module
+------------------------------------
+
+**Status: en cours (10%)**
+
+Documenter les commandes TUI puis l'utilisation générale de
+l'interafce graphique. Mentionner l'existance de la commande medop.sh
+pour travailler exclusivement en mode texte (utile pour les tests
+rapides).
+
+Documenter les modalités d'exécution des tests.
+
+T20110708.1: helper python pour MEDCoupling
+-------------------------------------------
+
+**Status: en attente (pas urgent)**
+
+Faire un helper python dans le package xmed qui permet de faire du
+medcoupling facilement (essentiellement pour simplifier le chargement,
+puis la sélection des données). Cela demanderait de faire un
+MedDataManager comme une class C++ pure (non CORBA). Cette classe
+travaillerait par exemple uniquement avec des id et des liste d'id, et
+fournirait des fonctions d'affichage (comme le ``ls`` et le ``la``)
+pour obtenir des meta-information.
+
+Le servant MedDataManager pourrait être une surcouche de cette classe
+c++ pure.
+
+T20110708.2: analyses et tests
+------------------------------
+
+TODO:
+
+* créer un fichier de test avec plusieurs pas de temps
+* créer un fichier de test avec des groupes de mailles
+
+
+T20110728.1: refactoring MEDDataManager
+---------------------------------------
+
+Refactoring pour une meilleur association entre FieldHandler et MeshHandler:
+
+* dans la mesure du possible utiliser les id plutôt que les handler en
+  arguments des fonctions d'appel des objets
+* A chaque champ (FieldHandler), on doit associer un meshid (et de
+  manière optionnelle un fieldseriesId, si le champ peut être associé
+  à une serie temporelle. A priori faisable uniquement au chargement
+  du datasource).
+* Pour cela, revoir les fonctions internes newFieldHandler et addField
+  ou prévoir de les compléter à chaque fois qu'elles sont appelée avec
+  les informations concernant le meshid.
+* addField est utilisée par le MEDCalculator
+* Attention au raffraichissement des données handler au niveau du
+  Workspace. Peut-être le mieux est que les fieldproxy contiennent
+  uniquement le fieldid, et qu'ils interroge le datamanager à chaque
+  fois qu'ils ont besoin d'une donnée. Voir aussi les notifications
+  via le MEDEventListener?  **Le plus simple est de faire la mise à
+  jour lors de l'appel à la méthode __repr__ du fieldproxy, i.e. quand
+  on essaye d'afficher les données**. Parceque sinon il n'y a pas de
+  problème puisque que le calculateur travaille à partir des id.
+
+
+Petites améliorations du DataspaceController:
+
+* Au OnUseInWorkspace, stocker (dans la mesure du possible) le nom de
+  l'alias python dans un attribut du sobject.
+* Dans DlgChangeUnderLyingMesh, expliquer que le champs sera dupliquer
+  est posé dans le WS. On peut donc proposer en option de lui associer
+  un alias pour manipulation dans la console
+
diff --git a/src/MEDOP/doc/sphinx/xmed-workingnotes-2012.rst b/src/MEDOP/doc/sphinx/xmed-workingnotes-2012.rst
new file mode 100644 (file)
index 0000000..011190e
--- /dev/null
@@ -0,0 +1,84 @@
+.. meta::
+   :keywords: maillage, champ, manipulation
+   :author: Guillaume Boulant
+
+.. include:: xmed-definitions.rst
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ANNEXE: Note de travail concernant le chantier XMED 2012
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+.. contents:: Sommaire
+   :local:
+   :backlinks: none
+
+
+Analyse preliminaire pour le chantier 2012
+==========================================
+
+La figure imposée pour le chantier 2012 est l'intégration du nouveau
+module de manipulation de champs dans SALOME 6.6 (objectif CEA), en
+préparation de la mise en exploitation dans SALOME 7 (objectif EDF).
+
+L'état actuel est:
+
+* Un module SALOME de nom MED intégrant les bibliothèques MEDCoupling,
+  MEDLoader, REMAPPER, mais aussi plusieurs packages logiciels
+  aujourd'hui obsolètes ou amener à disparaître pour l'échéance
+  SALOME7
+* Un module SALOME de nom XMED qui fournit les fonctions graphiques
+  pour la manipulation de champs.
+* Ce module XMED utilise le module VISU pour les vue de contrôle.
+
+La cible est:
+
+* Un module unique (nom à définir, par exemple MEDOP) débarrassé des
+  packages logiciels obsolètes et intégrant les fonctions graphiques
+  (GUI et TUI).
+* L'utilisation du module PARAVIS (au lieu de VISU) pour les vues de
+  contrôle.
+* L'intégration de MEDCoupling avec YACS (port MED dans YACS par
+  exemple).
+
+A examiner:
+
+* voir les attendus concernant les ports MED dans YACS
+* interface PARAVIS: utilisation du viewer (et de l'API python) sans chargement du GUI
+
+Tâches de développement
+=======================
+
+20120904: Migrer XMED dans MED
+------------------------------
+
+Plan de travail:
+
+* Migration des composants + test
+
+
+
+20120904: Nettoyage de XSALOME
+------------------------------
+
+:status: en cours
+
+* Supprimer les vieilleries de XSALOME:
+
+  - StdHelper -> Basic_Utils (KERNEL)
+
+20120829: mise en place du chantier 2012
+----------------------------------------
+
+:status: terminé
+
+L'objectif de cette première étape est de reverser le prototype 2011
+(module XMED indépendant) dans la branche V6_main du module MED. On
+peut procéder de la manière suivante:
+
+* update de XMED (et XSALOME utilisé par XMED) pour fonctionnement sur
+  V6_main
+* Eliminer la dépendance à XSALOME
+* Supprimer la gestion des multiversion SALOME5/6 au niveau de l'engine
+
+.. warning:: TODO: refaire le point sur les tâches initiées en 2011 
+
diff --git a/src/MEDOP/exe/CMakeLists.txt b/src/MEDOP/exe/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c02d834
--- /dev/null
@@ -0,0 +1,21 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(appligen)
+ADD_SUBDIRECTORY(image2med)
diff --git a/src/MEDOP/exe/appligen/CMakeLists.txt b/src/MEDOP/exe/appligen/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c73f77f
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(MODULE_NAME med)
+SET(prefix ${CMAKE_INSTALL_PREFIX})
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config_appli_model.xml.in ${CMAKE_CURRENT_BINARY_DIR}/config_appli_model.xml @ONLY)
+
+SET(MED_RESOURCES_FILES
+  ${CMAKE_CURRENT_BINARY_DIR}/config_appli_model.xml
+  appli-splashscreen.jpg
+  SalomeApp.xml
+  )
+
+INSTALL(FILES ${MED_RESOURCES_FILES} DESTINATION ${MED_salomebin_BINS}/med/appligen)
+
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/appligen.sh.in ${CMAKE_CURRENT_BINARY_DIR}/appligen.sh @ONLY)
+
+SET(MED_RESOURCES_FILES2
+  ${CMAKE_CURRENT_BINARY_DIR}/appligen.sh
+  )
+
+INSTALL(FILES ${MED_RESOURCES_FILES2} DESTINATION ${MED_salomebin_BINS}/med/appligen PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
diff --git a/src/MEDOP/exe/image2med/CMakeLists.txt b/src/MEDOP/exe/image2med/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c75e747
--- /dev/null
@@ -0,0 +1,25 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(MED_PYTHON_SCRIPTS
+  image2med.py
+  xmedimages.py
+  )
+
+INSTALL(FILES ${MED_PYTHON_SCRIPTS} DESTINATION ${MED_salomebin_BINS}/med PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ)
diff --git a/src/MEDOP/gui/CMakeLists.txt b/src/MEDOP/gui/CMakeLists.txt
new file mode 100644 (file)
index 0000000..bbc8a9a
--- /dev/null
@@ -0,0 +1,99 @@
+# Copyright (C) 2007-2012  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
+#
+
+ADD_SUBDIRECTORY(dialogs)
+
+INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/UseQT4EXT.cmake)
+
+SET(MEDOPGUI_SOURCES
+  MEDOPFactoryClient.cxx
+  XmedConsoleDriver.cxx
+  WorkspaceController.cxx
+  XmedDataModel.cxx
+  MEDEventListener_i.cxx
+  MEDOPModule.cxx
+  DatasourceController.cxx
+  factory.cxx
+)
+
+SET(MEDOPGUI_HEADERS MEDOPModule.hxx MEDEventListener_i.hxx WorkspaceController.hxx DatasourceController.hxx)
+
+QT4_WRAP_CPP(MEDOPGUI_HEADERS_MOC ${MEDOPGUI_HEADERS})
+
+INCLUDE_DIRECTORIES(
+  ${OMNIORB_INCLUDE_DIRS}
+  ${CAS_INCLUDE_DIRS}
+  ${BOOST_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${KERNEL_ROOT_DIR}/include/salome
+  ${GUI_ROOT_DIR}/include/salome
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_CURRENT_SOURCE_DIR}/dialogs
+  ${CMAKE_CURRENT_BINARY_DIR}/dialogs
+  ${CMAKE_CURRENT_SOURCE_DIR}/../cmp
+  ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDGUI
+  ${CMAKE_BINARY_DIR}/idl
+  ${CMAKE_BINARY_DIR}
+)
+
+SET(MEDOPGUITS_SOURCES
+  MEDOP_msg_en.ts
+  MEDOP_msg_fr.ts
+)
+SET(COMMON_DEFINITIONS "${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+SET(COMMON_FLAGS 
+  ${CAS_KERNEL}
+  ${QT_MT_LIBS} 
+  ${OMNIORB_LIBS} 
+  ${PLATFORM_LIBS} 
+  ${BOOST_LIBS}
+  SalomeIDLMED 
+  MEDOPGUI_dialogs 
+  MEDOPFactoryEngine 
+  ${qtx}
+  ${suit} 
+  ${SalomeObject}
+  ${SalomeLifeCycleCORBA} 
+  ${SalomeKernelHelpers} 
+  ${SalomeApp} 
+  ${SalomeGuiHelpers} 
+  ${SalomeTreeData} 
+  ${OpUtil}
+  ${CAM}
+  ${LightApp}
+  ${PyConsole}
+  ${SalomeGuiHelpers}
+)
+
+#-D__WITH_MEDMEMGUI__ libMEDGUI.la
+IF(WITH_MEDMEMGUI)
+  SET(COMMON_DEFINITIONS "${COMMON_DEFINITIONS} -D__WITH_MEDMEMGUI__")
+  SET(COMMON_FLAGS ${COMMON_FLAGS} MEDGUI)
+ENDIF(WITH_MEDMEMGUI)
+
+ADD_LIBRARY(MEDOPGUI SHARED ${MEDOPGUI_SOURCES} ${MEDOPGUI_HEADERS_MOC})
+SET_TARGET_PROPERTIES(MEDOPGUI PROPERTIES COMPILE_FLAGS ${COMMON_DEFINITIONS})
+TARGET_LINK_LIBRARIES(MEDOPGUI ${COMMON_FLAGS})
+
+INSTALL(TARGETS MEDOPGUI DESTINATION ${MED_salomelib_LIBS})
+QT4_INSTALL_TS_RESOURCES("${MEDOPGUITS_SOURCES}" "${MED_salomeres_DATA}")
+
+FILE(GLOB COMMON_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
diff --git a/src/MEDOP/gui/dialogs/CMakeLists.txt b/src/MEDOP/gui/dialogs/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0a0ca59
--- /dev/null
@@ -0,0 +1,91 @@
+# Copyright (C) 2007-2012  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
+#
+
+INCLUDE(${GUI_ROOT_DIR}/adm_local/cmake_files/UseQT4EXT.cmake)
+
+MACRO (QT4_WRAP_UI_XX outfiles )
+  QT4_EXTRACT_OPTIONS(ui_files ui_options ${ARGN})
+  FOREACH (it ${ui_files})
+    GET_FILENAME_COMPONENT(outfile ${it} NAME_WE)
+    GET_FILENAME_COMPONENT(infile ${it} ABSOLUTE)
+    SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.hxx)
+    ADD_CUSTOM_COMMAND(OUTPUT ${outfile}
+      COMMAND ${QT_UIC_EXECUTABLE}
+      ARGS ${ui_options} -o ${outfile} ${infile}
+      MAIN_DEPENDENCY ${infile})
+    SET(${outfiles} ${${outfiles}} ${outfile})
+  ENDFOREACH (it)
+ENDMACRO (QT4_WRAP_UI_XX)
+
+SET(MEDOPGUI_dialogs_FORMS
+  GenericDialog.ui
+  DlgAlias.ui
+  DlgUseInWorkspace.ui
+  DlgChangeUnderlyingMesh.ui
+  DlgImageToMed.ui
+)
+QT4_WRAP_UI_XX(MEDOPGUI_dialogs_FORMS_HEADERS ${MEDOPGUI_dialogs_FORMS})
+
+SET(MEDOPGUI_dialogs_FILES
+  GenericDialog.hxx
+  DlgAlias.hxx
+  DlgUseInWorkspace.hxx
+  DlgChangeUnderlyingMesh.hxx
+  DlgImageToMed.hxx
+)
+QT4_WRAP_CPP(MEDOPGUI_dialogs_HEADERS_MOC ${MEDOPGUI_dialogs_FILES})
+
+INCLUDE_DIRECTORIES(
+  ${OMNIORB_INCLUDE_DIRS}
+  ${CAS_INCLUDE_DIRS}
+  ${BOOST_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${KERNEL_ROOT_DIR}/include/salome
+  ${GUI_ROOT_DIR}/include/salome
+  ${CMAKE_CURRENT_SOURCE_DIR}/..
+)
+
+SET(MEDOPGUI_dialogs_SOURCES
+  GenericDialog.cxx
+  DlgAlias.cxx
+  DlgUseInWorkspace.cxx
+  DlgChangeUnderlyingMesh.cxx
+  DlgImageToMed.cxx
+)
+
+ADD_LIBRARY(MEDOPGUI_dialogs SHARED ${MEDOPGUI_dialogs_SOURCES} ${MEDOPGUI_dialogs_HEADERS_MOC} ${MEDOPGUI_dialogs_FORMS_HEADERS})
+SET_TARGET_PROPERTIES(MEDOPGUI_dialogs PROPERTIES COMPILE_FLAGS "${CAS_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS} ${OMNIORB_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDOPGUI_dialogs ${CAS_KERNEL} ${QT_LIBS} ${SalomeIDLKernel} ${SalomeGuiHelpers} ${OMNIORB_LIBS} ${qtx} ${suit} ${PLATFORM_LIBS} ${SalomeLifeCycleCORBA} ${SalomeKernelHelpers} ${SalomeGuiHelpers})
+INSTALL(TARGETS MEDOPGUI_dialogs DESTINATION ${MED_salomelib_LIBS})
+
+#
+# ---------------------------------------------------------
+# Unit test programs
+# ---------------------------------------------------------
+#
+ADD_EXECUTABLE(dlgTester dlgTester.cxx)
+SET_TARGET_PROPERTIES(dlgTester PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(dlgTester MEDOPGUI_dialogs ${QT_LIBS} ${PLATFORM_LIBS})
+INSTALL(TARGETS dlgTester DESTINATION ${MED_salomebin_BINS})
+#ADD_TEST(dlgTester dlgTester)
+
+FILE(GLOB COMMON_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
diff --git a/src/MEDOP/res/CMakeLists.txt b/src/MEDOP/res/CMakeLists.txt
new file mode 100644 (file)
index 0000000..aecdf94
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(testfiles)
+
+IF(MED_ENABLE_GUI)
+  SET(MED_RESOURCES_FILES
+    MEDOP.png
+    MEDOP_small.png
+    datasource_add.png
+    datasource.png
+    datasource_mesh.png
+    datasource_field.png
+    datasource_expandfield.png
+    datasource_view.png
+    datasource_use.png
+    datasource_changeUnderlyingMesh.png
+    image_add.png
+    workspace_save.png
+    workspace_clean.png
+    )
+  INSTALL(FILES ${MED_RESOURCES_FILES} DESTINATION ${MED_salomeres_DATA})
+ENDIF(MED_ENABLE_GUI)
diff --git a/src/MEDOP/res/testfiles/CMakeLists.txt b/src/MEDOP/res/testfiles/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c546f83
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(MED_FILES
+  testfield.med
+  smallmesh_varfield.med
+  smallmesh_constfield.med
+  bigmesh.med
+  fieldlena.med
+  timeseries.med
+  parametric_01.med
+  parametric_02.med
+  enceinte-axis-E500000.med
+  enceinte-axis-E600000.med
+  entaille.med
+  padderoutput.med
+  )
+
+INSTALL(FILES ${MED_FILES} DESTINATION ${MED_salomeres_DATA}/medop_testfiles)
+
+SET(MED_IMG_FILES
+  irm_test1.png
+  irm_test2.png
+  # extra
+  README.txt
+  champ_altitude_MAP.pgm
+  )
+
+INSTALL(FILES ${MED_IMG_FILES} DESTINATION ${MED_salomeres_DATA}/medop_testfiles)
diff --git a/src/MEDOP/tui/CMakeLists.txt b/src/MEDOP/tui/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6e3726a
--- /dev/null
@@ -0,0 +1,20 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(xmedpy)
diff --git a/src/MEDOP/tui/xmedpy/CMakeLists.txt b/src/MEDOP/tui/xmedpy/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d2e4afc
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright (C) 2007-2012  CEA/DEN, EDF 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.
+#
+# 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(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
+
+SET(PYFILES_TO_INSTALL
+  __init__.py
+  fieldproxy.py
+  fieldtools.py
+  fieldguide.py
+  cmdtools.py
+# For the control of PARAVIS and VISU
+  driver_pvis.py
+  driver_visu.py
+# For the medop.sh executable program
+  medop.py
+# Modules that are required for test or tutorial purposes only:
+  properties.py
+  )
+
+INSTALL_AND_COMPILE_PYTHON_FILE("${PYFILES_TO_INSTALL}" ${MED_salomepythondir}/xmed)
+
+SET(TEST_SCRIPTS_XMED
+  tests/test_xmed_fieldOperations.py
+  tests/test_xmed_uiEventListener.py
+  tests/test_xmed_visualisation.py
+  )
+
+INSTALL(FILES ${TEST_SCRIPTS_XMED} PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ DESTINATION ${MED_salomebin_BINS}/xmed)
\ No newline at end of file
index c82e559be12bbcede4a3e6393b71e5079c19f8af..726e797800b7b95634acc39b97f1de4d1effd3a0 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-ADD_SUBDIRECTORY(Test)
+IF(CPPUNIT_IS_OK)
+  ADD_SUBDIRECTORY(Test)
+ENDIF(CPPUNIT_IS_OK)
 
 INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${SCOTCH_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${LIBXML_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
   ${MPI_INCLUDE_DIRS}
+  ${PTHREADS_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDLoader
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
@@ -69,58 +71,59 @@ SET(medpartitionercpp_SOURCES
   MEDPARTITIONER_SkyLineArray.cxx
   )
 
-SET(medpartitionercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS}")
-SET(medpartitionercpp_LDFLAGS medloader ${LIBXML_LIBS})
-
-IF(MED_ENABLE_SCOTCH)
-  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ScotchGraph.cxx)
-  SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ScotchGraph.hxx)
-  SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
-  SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBS})
-ENDIF(MED_ENABLE_SCOTCH)
-
-IF(MPI_IS_OK)
-  IF(MED_ENABLE_PARMETIS)
-    SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ParMetisGraph.cxx
-      MEDPARTITIONER_UtilsPara.cxx
-      MEDPARTITIONER_JointFinder.cxx
-      )
-    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_JointFinder.hxx MEDPARTITIONER_MetisGraph.hxx)
-    SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
-    SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PARMETIS_LIBS} ${MPI_LIBS})
-  ELSE(MED_ENABLE_PARMETIS)
-    SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES}
-      MEDPARTITIONER_UtilsPara.cxx
-      MEDPARTITIONER_JointFinder.cxx
-      )
-    SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${MPI_DEFINITIONS}")
-    SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${MPI_LIBS})
-  ENDIF(MED_ENABLE_PARMETIS)
-ELSE(MPI_IS_OK)
+SET(medpartitionercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${LIBXML_DEFINITIONS} ${MPI_DEFINITIONS}")
+SET(medpartitionercpp_LDFLAGS
+  ${MED3_LIBS_C_ONLY}
+  ${HDF5_LIBS}
+  ${STDLIB}
+  ${LIBXML_LIBS}
+  ${MPI_LIBS}
+  interpkernel
+  medcoupling
+  medloader
+)
+IF(MED_ENABLE_PARMETIS)
+  SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
+  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ParMetisGraph.cxx)
+  SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
+  SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${PARMETIS_LIBS})
+ELSE(MED_ENABLE_PARMETIS)  
   IF(MED_ENABLE_METIS)
+    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)  
     SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_MetisGraph.cxx)
-    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_MetisGraph.hxx)
     SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${METIS_DEFINITIONS}")
     SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${METIS_LIBS})
   ENDIF(MED_ENABLE_METIS)
-ENDIF(MPI_IS_OK)
-
-
+  IF(MED_ENABLE_SCOTCH)
+    SET(medpartitionercpp_HEADERS_HXX ${medpartitionercpp_HEADERS_HXX} MEDPARTITIONER_ScotchGraph.hxx)
+    SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES} MEDPARTITIONER_ScotchGraph.cxx)
+    SET(medpartitionercpp_DEFINITIONS "${medpartitionercpp_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+    SET(medpartitionercpp_LDFLAGS ${medpartitionercpp_LDFLAGS} ${SCOTCH_LIBS})
+  ENDIF(MED_ENABLE_SCOTCH)    
+ENDIF(MED_ENABLE_PARMETIS)  
+  
 IF(MPI_IS_OK)
+  SET(medpartitionercpp_SOURCES ${medpartitionercpp_SOURCES}
+    MEDPARTITIONER_UtilsPara.cxx
+    MEDPARTITIONER_JointFinder.cxx
+  )
+ENDIF(MPI_IS_OK)                         
+  
+ADD_LIBRARY(medpartitionercpp SHARED ${medpartitionercpp_SOURCES})
+SET_TARGET_PROPERTIES(medpartitionercpp PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS} ${medpartitionercpp_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medpartitionercpp ${medpartitionercpp_LDFLAGS} ${PLATFORM_LIBS} ${PTHREAD_LIBS})
+INSTALL(TARGETS medpartitionercpp DESTINATION ${MED_salomelib_LIBS})
+  
+IF(MED_ENABLE_PARMETIS)
   ADD_EXECUTABLE(medpartitioner_para medpartitioner_para.cxx)
   SET_TARGET_PROPERTIES(medpartitioner_para PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medpartitioner_para medpartitionercpp)
+  TARGET_LINK_LIBRARIES(medpartitioner_para medpartitionercpp ${medpartitionercpp_LDFLAGS})
   INSTALL(TARGETS medpartitioner_para DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
+ELSE(MED_ENABLE_PARMETIS)
   ADD_EXECUTABLE(medpartitioner medpartitioner.cxx)
-  SET_TARGET_PROPERTIES(medpartitioner PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medpartitioner medpartitionercpp)
+  SET_TARGET_PROPERTIES(medpartitioner PROPERTIES COMPILE_FLAGS "${PLATFORM_DEFINITIONS} ${medpartitionercpp_DEFINITIONS}")
+  TARGET_LINK_LIBRARIES(medpartitioner medpartitionercpp ${medpartitionercpp_LDFLAGS})
   INSTALL(TARGETS medpartitioner DESTINATION ${MED_salomebin_BINS})
-ENDIF(MPI_IS_OK)
-
-ADD_LIBRARY(medpartitionercpp SHARED ${medpartitionercpp_SOURCES})
-SET_TARGET_PROPERTIES(medpartitionercpp PROPERTIES COMPILE_FLAGS "${medpartitionercpp_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(medpartitionercpp ${medpartitionercpp_LDFLAGS})
-INSTALL(TARGETS medpartitionercpp DESTINATION ${MED_salomelib_LIBS})
+ENDIF(MED_ENABLE_PARMETIS)
 
 INSTALL(FILES ${medpartitionercpp_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
index 87310b46a9fe7deeef7d35db94e4a18146271320..3af09ff4c4d5836c6a7f7a1e92bbd76e9dbdd0d4 100755 (executable)
@@ -21,7 +21,7 @@
 #define __MEDPARTITIONER_HXX__
 
 #ifdef WIN32
-# if defined MEDPARTITIONER_EXPORTS || defined medpartitioner_EXPORTS
+# if defined MEDPARTITIONERCPP_EXPORTS || defined medpartitionercpp_EXPORTS
 #  define MEDPARTITIONER_EXPORT __declspec( dllexport )
 # else
 #  define MEDPARTITIONER_EXPORT __declspec( dllimport )
index e4594107bba3bd6ed7498b8ebecf5d66b77bbdf6..ee2bc2143d209fd5311c44d9825dee8cae0f4577 100644 (file)
@@ -21,7 +21,7 @@ INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${SCOTCH_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
+  ${CPPUNIT_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${LIBXML_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
@@ -46,7 +46,7 @@ SET(MEDPARTITIONERTest_SOURCES
   MEDPARTITIONERTest.cxx
   )
 
-SET(MEDPARTITIONERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
+SET(MEDPARTITIONERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 SET(MEDPARTITIONERTest_LDFLAGS medpartitionercpp ${CPPUNIT_LIBS})
 
 IF(MED_ENABLE_SCOTCH)
index d6a25c29f91081503d59aed7d827ea1042d84a7e..6f4e730b0dda36f77fe8bffeab77d81f625d5046 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-ADD_SUBDIRECTORY(Test)
-
+IF(CPPUNIT_IS_OK)
+  ADD_SUBDIRECTORY(Test)
+ENDIF(CPPUNIT_IS_OK)
+  
 INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
@@ -74,8 +76,8 @@ SET(medsplittercpp_SOURCES
   MEDSPLITTER_JointExchangeData.cxx
   )
 
-SET(medsplittercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS}")
-SET(medsplittercpp_LDFLAGS medmem ${LIBXML_LIBS})
+SET(medsplittercpp_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${MPI_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+SET(medsplittercpp_LDFLAGS medmem ${LIBXML_LIBS} interpkernel ${MPI_LIBS} ${HDF5_LIBS} ${MED3_LIBS_C_ONLY} ${STDLIB} ${PLATFORM_LIBS})
 
 IF(MED_ENABLE_SCOTCH)
   SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_SCOTCHGraph.cxx)
@@ -84,33 +86,41 @@ IF(MED_ENABLE_SCOTCH)
   SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${SCOTCH_LIBS})
 ENDIF(MED_ENABLE_SCOTCH)
 
+IF(MED_ENABLE_METIS)
+  SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
+ENDIF(MED_ENABLE_METIS)
+
 IF(MPI_IS_OK)
   IF(MED_ENABLE_PARMETIS)
     SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_METISGraph.cxx)
-    SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
     SET(medsplittercpp_DEFINITIONS "${medsplittercpp_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
-    SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${PARMETIS_LIBS} ${MPI_LIBS})
+    SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${PARMETIS_LIBS})
   ENDIF(MED_ENABLE_PARMETIS)
 ELSE(MPI_IS_OK)
   IF(MED_ENABLE_METIS)
     SET(medsplittercpp_SOURCES ${medsplittercpp_SOURCES} MEDSPLITTER_METISGraph.cxx)
-    SET(medsplittercpp_HEADERS_HXX ${medsplittercpp_HEADERS_HXX} MEDSPLITTER_METISGraph.hxx)
     SET(medsplittercpp_DEFINITIONS "${medsplittercpp_DEFINITIONS} ${METIS_DEFINITIONS}")
     SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${METIS_LIBS})
   ENDIF(MED_ENABLE_METIS)
 ENDIF(MPI_IS_OK)
 
+SET(medsplitter_LDFLAGS ${medsplittercpp_LDFLAGS})
+IF(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+  SET(medsplittercpp_LDFLAGS ${medsplittercpp_LDFLAGS} ${BOSST_LIBS} ${SALOMELocalTrace})
+  SET(medsplitter_LDFLAGS ${medsplittercpp_LDFLAGS} ${SALOMEBasics})
+ENDIF(MED_ENABLE_KERNEL)
+
+ADD_EXECUTABLE(medsplitter medsplitter.cxx)
+SET_TARGET_PROPERTIES(medsplitter PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(medsplitter medsplittercpp ${medsplitter_LDFLAGS})
+INSTALL(TARGETS medsplitter DESTINATION ${MED_salomebin_BINS})
 
 IF(MPI_IS_OK)
   ADD_EXECUTABLE(medsplitter_para medsplitter_para.cxx)
   SET_TARGET_PROPERTIES(medsplitter_para PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medsplitter_para medsplittercpp)
+  TARGET_LINK_LIBRARIES(medsplitter_para medsplittercpp ${medsplitter_LDFLAGS})
   INSTALL(TARGETS medsplitter_para DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
-  ADD_EXECUTABLE(medsplitter medsplitter.cxx)
-  SET_TARGET_PROPERTIES(medsplitter PROPERTIES COMPILE_FLAGS "${medsplittercpp_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(medsplitter medsplittercpp)
-  INSTALL(TARGETS medsplitter DESTINATION ${MED_salomebin_BINS})
 ENDIF(MPI_IS_OK)
 
 ADD_LIBRARY(medsplittercpp SHARED ${medsplittercpp_SOURCES})
index 629834d305b604012f46cf9d860f5b2fc87a9220..7a9b11dd436841dfae86a5ae17e4e09dc8e3263d 100644 (file)
@@ -21,12 +21,12 @@ INCLUDE_DIRECTORIES(
   ${PARMETIS_INCLUDE_DIRS}
   ${METIS_INCLUDE_DIRS}
   ${SCOTCH_INCLUDE_DIRS}
-  ${BOOST_INCLUDE_DIRS}
-  ${METIS_INCLUDE_DIRS}
+  ${BOOST_INCLUDE_DIRS} 
+  ${CPPUNIT_INCLUDE_DIRS}
   ${LIBXML_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
-  ${MPI_INCLUDE_DIRS}
+  ${MPI_INCLUDE_DIRS} 
   ${CMAKE_CURRENT_SOURCE_DIR}/..
   ${CMAKE_CURRENT_SOURCE_DIR}/../../MEDMEM
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNELTest # for BasicMainTest.cxx
@@ -35,63 +35,83 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/Geometric2D
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/ExprEval
   ${CMAKE_CURRENT_SOURCE_DIR}/../../INTERP_KERNEL/GaussPoints
-  )
+)
 
 SET(MEDSPLITTERTest_HEADERS_HXX
   MEDSPLITTERTest.hxx
   MEDSPLITTERTest_Utils.hxx
   MEDSPLITTERTest_defs.hxx
-  )
+)
 
 SET(MEDSPLITTERTest_SOURCES
   MEDSPLITTERTest.cxx
   MEDSPLITTERTest_MESHCollection.cxx
   MEDSPLITTERTest_ParallelTopology.cxx
   MEDSPLITTERTest_Utils.cxx
-  )
-
-SET(MEDSPLITTERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS}")
-SET(MEDSPLITTERTest_LDFLAGS medsplittercpp ${CPPUNIT_LIBS})
+)
 
-IF(MED_ENABLE_SCOTCH)
-  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
-ENDIF(MED_ENABLE_SCOTCH)
+SET(MEDSPLITTERTest_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${LIBXML_DEFINITIONS} ${CPPUNIT_DEFINITIONS} ${MPI_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+SET(MEDSPLITTERTest_LDFLAGS ${CPPUNIT_LIBS} ${MED3_LIBS_C_ONLY} medsplittercpp)
 
-IF(MPI_IS_OK)
+IF(MED_ENABLE_PARMETIS)
   SET(MEDSPLITTERTest_SOURCES
     ${MEDSPLITTERTest_SOURCES}
     ParaMEDSPLITTERTest_MeshSendReceive.cxx
     ParaMEDSPLITTERTest_ParaDomainSelector.cxx
     ParaMEDSPLITTERTest_medsplitter_para.cxx
-    )
-  SET(MEDSPLITTERTest_HEADERS_HXX ${MEDSPLITTERTest_HEADERS_HXX} ParaMEDSPLITTERTest.hxx)
-  IF(MED_ENABLE_PARMETIS)
-    SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${MPI_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
-  ENDIF(MED_ENABLE_PARMETIS)
-ELSE(MPI_IS_OK)
-  IF(MED_ENABLE_METIS)
-    SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${METIS_DEFINITIONS}")
-  ENDIF(MED_ENABLE_METIS)
-ENDIF(MPI_IS_OK)
+    ParaMEDSPLITTERTest.hxx
+  )
+  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${PARMETIS_DEFINITIONS}")
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${PARMETIS_LIBS})
+ENDIF(MED_ENABLE_PARMETIS)
+
+IF(MED_ENABLE_METIS)
+  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${METIS_DEFINITIONS}")
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${METIS_LIBS})
+ENDIF(MED_ENABLE_METIS)
+                           
+IF(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SALOMELocalTrace})
+ENDIF(MED_ENABLE_KERNEL)
+      
+IF(MED_ENABLE_SCOTCH)
+  SET(MEDSPLITTERTest_DEFINITIONS "${MEDSPLITTERTest_DEFINITIONS} ${SCOTCH_DEFINITIONS}")
+  SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SCOTCH_LIBS})
+ENDIF(MED_ENABLE_SCOTCH)
+
+SET(SCRIPTS testMEDSPLITTER.py)
+
 
 
 IF(MPI_IS_OK)
-  ADD_EXECUTABLE(TestParaMEDSPLITTER TestParaMEDSPLITTER.cxx)
-  SET_TARGET_PROPERTIES(TestParaMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
-  TARGET_LINK_LIBRARIES(TestParaMEDSPLITTER MEDSPLITTERTest)
-  INSTALL(TARGETS TestParaMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
-ELSE(MPI_IS_OK)
+  IF(MED_ENABLE_PARMETIS)
+    SET(TestParaMEDSPLITTER_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} MEDSPLITTERTest medmem interpkernel medsplittercpp)
+    SET(SCRIPTS ${SCRIPTS} testMEDSPLITTER.py)
+    
+    ADD_EXECUTABLE(TestParaMEDSPLITTER TestParaMEDSPLITTER.cxx)
+    SET_TARGET_PROPERTIES(TestParaMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
+    TARGET_LINK_LIBRARIES(TestParaMEDSPLITTER ${TestParaMEDSPLITTER_LDFLAGS})
+    INSTALL(TARGETS TestParaMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
+  ENDIF(MED_ENABLE_PARMETIS)
+ELSE(MPI_IS_OK)  
   IF(MED_ENABLE_METIS)
+    SET(TestMEDSPLITTER_LDFLAGS ${MEDSPLITTERTest_LDFLAGSS} MEDSPLITTERTest medmem interpkernel medsplittercpp)
+    IF(MED_ENABLE_KERNEL)
+      SET(MEDSPLITTERTest_LDFLAGS ${MEDSPLITTERTest_LDFLAGS} ${SALOMEBasics})
+    ENDIF(MED_ENABLE_KERNEL)
+    
     ADD_EXECUTABLE(TestMEDSPLITTER TestMEDSPLITTER.cxx)
     SET_TARGET_PROPERTIES(TestMEDSPLITTER PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
-    TARGET_LINK_LIBRARIES(TestMEDSPLITTER MEDSPLITTERTest)
+    TARGET_LINK_LIBRARIES(TestMEDSPLITTER ${TestMEDSPLITTER_LDFLAGS})
     INSTALL(TARGETS TestMEDSPLITTER DESTINATION ${MED_salomebin_BINS})
   ENDIF(MED_ENABLE_METIS)
 ENDIF(MPI_IS_OK)
-
+  
 ADD_LIBRARY(MEDSPLITTERTest SHARED ${MEDSPLITTERTest_SOURCES})
 SET_TARGET_PROPERTIES(MEDSPLITTERTest PROPERTIES COMPILE_FLAGS "${MEDSPLITTERTest_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDSPLITTERTest ${MEDSPLITTERTest_LDFLAGS})
 INSTALL(TARGETS MEDSPLITTERTest DESTINATION ${MED_salomelib_LIBS})
 
 INSTALL(FILES ${MEDSPLITTERTest_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+INSTALL(FILES ${SCRIPTS} DESTINATION ${MED_salomebin_BINS})
index ebdef31248e6533b3d2c670c54cf95ddd0ae98e9..8cd10378db95d884e08c4e64c07ce1220a8c9a06 100644 (file)
@@ -17,7 +17,6 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -41,11 +40,13 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(libMEDSPLITTER_Swig python libMEDSPLITTER_Swig.i)
-SWIG_LINK_LIBRARIES(libMEDSPLITTER_Swig ${PYTHON_LIBRARIES} medsplittercpp)
-SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS}")
-
+SWIG_LINK_LIBRARIES(libMEDSPLITTER_Swig ${PYTHON_LIBS} medsplittercpp)
+SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMEDSPLITTER_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMEDSPLITTER_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMEDSPLITTER_Swig DESTINATION ${MED_salomepythondir})
 INSTALL(FILES libMEDSPLITTER_Swig.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDSPLITTER_Swig.py MEDSPLITTER.py test_MEDSPLITTER.py DESTINATION ${MED_salomescript_PYTHON})
-INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_SOURCE_DIR}/MEDSPLITTER.py ${MED_salomescript_PYTHON})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMEDSPLITTER_Swig.py DESTINATION ${MED_salomepythondir})
+INSTALL(FILES MEDSPLITTER.py test_MEDSPLITTER.py DESTINATION ${MED_salomescript_DATA})
 
index 863127fb373ecff0f285c58291c51f9fc71e572b..0de97a472e396bedcd9f16f2ace365c58331c46f 100644 (file)
 INCLUDE_DIRECTORIES(
   ${HDF5_INCLUDE_DIRS}
   ${BOOST_INCLUDE_DIRS}
-  ${KERNEL_ROOT_DIR}/include/salome
-  )
+)
+
+IF(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
+ELSE(MED_ENABLE_KERNEL)
+  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
+ENDIF(MED_ENABLE_KERNEL)
 
 SET(MEDWrapperBase_SOURCES
   MED_Structures.cxx
@@ -34,7 +39,7 @@ SET(MEDWrapperBase_SOURCES
   )
 
 ADD_LIBRARY(MEDWrapperBase SHARED ${MEDWrapperBase_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapperBase PROPERTIES COMPILE_FLAGS "-D${MACHINE} ${HDF5_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDWrapperBase PROPERTIES COMPILE_FLAGS "-D${MACHINE} ${HDF5_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDWrapperBase ${BOOST_LIB_THREAD} ${BOOST_LIB_DATE_TIME})
 INSTALL(TARGETS MEDWrapperBase DESTINATION ${MED_salomelib_LIBS})
 
index cdbd05d78d6d5b5a431a96567d2d38451dad6891..dd859f167e548bfb00c993912efb99342faf62fe 100644 (file)
@@ -22,33 +22,36 @@ INCLUDE_DIRECTORIES(
   ${BOOST_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${CMAKE_CURRENT_SOURCE_DIR}/../Base
-  ${CMAKE_CURRENT_SOURCE_DIR}/../V2_1/Wrapper
   ${CMAKE_CURRENT_SOURCE_DIR}/../V2_2
   )
 
 IF(MED_ENABLE_KERNEL)
   INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
 ELSE(MED_ENABLE_KERNEL)
-  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel/unix)
+  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
 ENDIF(MED_ENABLE_KERNEL)  
 
 SET(MEDWrapper_SOURCES
   MED_Factory.cxx
-  )
+)
 
 SET(mprint_version_SOURCES
   mprint_version.cxx
   )
 
 ADD_LIBRARY(MEDWrapper SHARED ${MEDWrapper_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapper PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDWrapper MEDWrapperBase MEDWrapper_V2_1 MEDWrapper_V2_2)
+SET_TARGET_PROPERTIES(MEDWrapper PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDWrapper MEDWrapper_V2_2)
 INSTALL(TARGETS MEDWrapper DESTINATION ${MED_salomelib_LIBS})
 
 ADD_EXECUTABLE(mprint_version ${mprint_version_SOURCES})
-SET_TARGET_PROPERTIES(mprint_version PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(mprint_version MEDWrapper)
+SET_TARGET_PROPERTIES(mprint_version PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(mprint_version MEDWrapper MEDWrapper_V2_2 MEDWrapperBase ${BOOST_LIBS} ${MED3_LIBS_C_ONLY})
+
+ADD_EXECUTABLE(MED_Test ${mprint_version_SOURCES})
+SET_TARGET_PROPERTIES(MED_Test PROPERTIES COMPILE_FLAGS "${BOOST_DEFINITIONS} ${MED3_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MED_Test MEDWrapper MEDWrapper_V2_2 MEDWrapperBase ${BOOST_LIBS})
 
 FILE(GLOB MEDWrapper_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
 INSTALL(FILES ${MEDWrapper_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL(TARGETS mprint_version DESTINATION ${MED_salomebin_BINS})
\ No newline at end of file
+INSTALL(TARGETS mprint_version MED_Test DESTINATION ${MED_salomebin_BINS})
index 61681f5d08561a797c261844f20d777f0be41dd4..351584b2d467cb558f88ff356b1830adfe48d005 100644 (file)
@@ -31,11 +31,11 @@ SET(MEDWrapper_V2_2_SOURCES
 IF(MED_ENABLE_KERNEL)
   INCLUDE_DIRECTORIES(${KERNEL_ROOT_DIR}/include/salome)
 ELSE(MED_ENABLE_KERNEL)
-  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel/unix)
+  INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/adm_local_without_kernel)
 ENDIF(MED_ENABLE_KERNEL)
 
 ADD_LIBRARY(MEDWrapper_V2_2 SHARED ${MEDWrapper_V2_2_SOURCES})
-SET_TARGET_PROPERTIES(MEDWrapper_V2_2 PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET_TARGET_PROPERTIES(MEDWrapper_V2_2 PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 TARGET_LINK_LIBRARIES(MEDWrapper_V2_2 MEDWrapperBase ${MED3_LIBS_C_ONLY} ${HDF5_LIBS})
 INSTALL(TARGETS MEDWrapper_V2_2 DESTINATION ${MED_salomelib_LIBS})
 
index cdd2ac2a3441335c677a0dd372058b070a5a9199..e9834f105fe4fb21f6a0346f7bfb009949463688 100644 (file)
@@ -17,4 +17,4 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INSTALL(FILES MED_shared_modules.py DESTINATION ${MED_salomescript_PYTHON})
+INSTALL(FILES MED_shared_modules.py DESTINATION ${MED_sharedpkgpython_PYTHON})
index b8310d8c7f8b0eafde37d12773783912cfe27728..34d1bae4e1e91be0b83cc39eb97ffad2358557ab 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
@@ -55,13 +56,17 @@ SET(MEDClientcmodule_SOURCES
 
 ADD_LIBRARY(MEDClientcmodule SHARED ${MEDClientcmodule_SOURCES})
 INSTALL(FILES libMEDClient.i DESTINATION ${MED_salomeinclude_HEADERS})
-SET_TARGET_PROPERTIES(MEDClientcmodule PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(MEDClientcmodule MEDMEMImpl MEDEngine)
+SET_TARGET_PROPERTIES(MEDClientcmodule PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+TARGET_LINK_LIBRARIES(MEDClientcmodule MEDMEMImpl MEDEngine ${PTHREAD_LIBS})
 INSTALL(TARGETS MEDClientcmodule DESTINATION ${MED_salomelib_LIBS})
 
 SWIG_ADD_MODULE(libMEDClient python libMEDClient.i)
-SWIG_LINK_LIBRARIES(libMEDClient ${PYTHON_LIBRARIES} MEDClientcmodule)
-SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libMEDClient ${PYTHON_LIBS} MEDClientcmodule)
+SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMEDClient PROPERTIES DEBUG_OUTPUT_NAME _libMEDClient_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMEDClient DESTINATION ${MED_salomepythondir})
 INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/libMEDClient.py ${MED_salomescript_PYTHON})
 
index 9bb5cc1eafa43b266794fd38b361533e4d5a731b..4c6db9583bf95d9505718f66532086b991b55514 100644 (file)
 
 ADD_SUBDIRECTORY(csh)
 
-SET(MedClientTestsConfig runTestMedCorba runContainer)
+SET(MedClientTestsConfig 
+#  runTestMedCorba 
+  runContainer
+)
 
 FOREACH(MedClientTestConfig ${MedClientTestsConfig})
   SET(input ${CMAKE_CURRENT_SOURCE_DIR}/${MedClientTestConfig}.in)
index d352ef916f34b31998a772bc87615c148b8c644c..85544b4f9f8a470e0b649bdbbb4891b7f961202a 100644 (file)
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
@@ -45,8 +46,13 @@ SET_SOURCE_FILES_PROPERTIES(libCompo2.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(libCompo2.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 SWIG_ADD_MODULE(libCompo2 python libCompo2.i Compo2.cxx)
-SWIG_LINK_LIBRARIES(libCompo2 ${PYTHON_LIBRARIES} MEDClientcmodule)
-SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libCompo2 ${PYTHON_LIBS} MEDClientcmodule)
+SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
+
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libCompo2 PROPERTIES DEBUG_OUTPUT_NAME _libCompo2_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
+
 INSTALL(TARGETS _libCompo2 DESTINATION ${MED_salomepythondir})
 INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/libCompo2.py ${MED_salomescript_PYTHON})
 
index 02cd9f0844e7fe6c8cd85afce16e7c93e1dd00d7..2e0500839fbad102b1103075562cfdcebf995334 100644 (file)
@@ -25,6 +25,7 @@ SET_SOURCE_FILES_PROPERTIES(libMedCorba_Swig.i PROPERTIES SWIG_DEFINITIONS "-sha
 
 INCLUDE_DIRECTORIES(
   ${PYTHON_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIRS}
   ${OMNIORB_INCLUDE_DIRS}
   ${MED3_INCLUDE_DIRS}
   ${HDF5_INCLUDE_DIRS}
@@ -41,13 +42,16 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(libMedCorba_Swig python libMedCorba_Swig.i)
-SWIG_LINK_LIBRARIES(libMedCorba_Swig ${PYTHON_LIBRARIES} MEDMEMImpl MEDEngine)
-SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS}")
+SWIG_LINK_LIBRARIES(libMedCorba_Swig ${PYTHON_LIBS} MEDMEMImpl MEDEngine ${PLATFORM_LIBS})
+SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES COMPILE_FLAGS "${OMNIORB_DEFINITIONS} ${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${XDR_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 SET(MED_MedCorba_Swig_salomescript_DATA
   medcorba_test.py batchmode_medcorba_test.py batchmode_medcorba_test1.py
   )
 
+IF(${MACHINE} STREQUAL WINDOWS)
+  SET_TARGET_PROPERTIES(_libMedCorba_Swig PROPERTIES DEBUG_OUTPUT_NAME _libMedCorba_Swig_d)
+ENDIF(${MACHINE} STREQUAL WINDOWS)
 INSTALL(TARGETS _libMedCorba_Swig DESTINATION ${MED_salomepythondir})
 INSTALL(FILES libMedCorba_Swig.i DESTINATION ${MED_salomeinclude_HEADERS})
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libMedCorba_Swig.py DESTINATION ${MED_salomescript_PYTHON})
index b5e97d4ece55aeac9f651a3b9317e3cd40aac209..d51e9ecc16a6b729f08c76a107bc86004c2d8fa1 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${MPI_INCLUDE_DIRS}
@@ -35,7 +36,7 @@ SET(paramedloader_SOURCES
 
 ADD_LIBRARY(paramedloader SHARED ${paramedloader_SOURCES})
 SET_TARGET_PROPERTIES(paramedloader PROPERTIES COMPILE_FLAGS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS}")
-TARGET_LINK_LIBRARIES(paramedloader paramedmem medloader)
+TARGET_LINK_LIBRARIES(paramedloader paramedmem medloader ${PLATFORM_LIBS})
 INSTALL(TARGETS paramedloader DESTINATION ${MED_salomelib_LIBS})
 
 FILE(GLOB paramedloader_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
index 184f2309f9d17f4ec1720ff76c11e0778ee10550..4904a2b44a74d12238520fbc36f7acb7b610a7ad 100755 (executable)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
index f751551f591647117932fef5c9c8765def82f1e6..9c8df2aee6f2149975c0f2bea64f2bb1f47821d4 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "ParaMEDLoader.hxx"
 #include "MEDLoader.hxx"
index aedacc93d2dcef19dbcc6f58b7e80e09dd3e64dc..a36e45f42ab18e22426dc9fb979ba6092b136a0d 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __PARAMEDLOADER_HXX__
 #define __PARAMEDLOADER_HXX__
index 4ede58f2f01c79861f01d971af531b2cc0997014..2b0bfb3b9345d720d253366bc954cd7b6a73ba94 100644 (file)
@@ -16,6 +16,7 @@
 #
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+# Author : Anthony Geay (CEA/DEN)
 
 INCLUDE_DIRECTORIES(
   ${MPI_INCLUDE_DIRS}
index 06a06d663b422847d39e954f0b6aeb38865b99c3..5035aed3d9677c4254c137b4d6a6967e7a082d33 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapDEC.hxx"
 #include "CommInterface.hxx"
index c483d2b07c3ba239fe220fe34b927f8551ec0162..7532910e2310c49b56183fbb6114b18dee158e12 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPDEC_HXX__
 #define __OVERLAPDEC_HXX__
index ece659ec34fad25b22c494e75336fbe5ee2b1d7d..417c50e0fa4376ce873d926404eb9d2a63a300fb 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapElementLocator.hxx"
 
index c779a49e905ba527b8de59523c34cadef67a8b71..ade57b2ac73dc0e2a1a696c2d02e3354e3741a80 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPELEMENTLOCATOR_HXX__
 #define __OVERLAPELEMENTLOCATOR_HXX__
index f8bb14137def8e56a1eaf193a35fb83711e3f2cc..cb1f1ed484cf5a8a511985dfba32c17522aaa87b 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapInterpolationMatrix.hxx"
 #include "ParaMESH.hxx"
index da3acd4f287a2384eff111343de5815cf5b24754..e08dd6f474d474a7cef1329c59829dafa80fabb8 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPINTERPOLATIONMATRIX_HXX__
 #define __OVERLAPINTERPOLATIONMATRIX_HXX__
index bdb975a5b0bc8f73a98f2a737b92221dbc6ba1f1..243a31a7bf629877b8c584c396c15c5e67e31fbe 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #include "OverlapMapping.hxx"
 #include "MPIProcessorGroup.hxx"
index ca756b3346c146d08d1aa9ceb59f0fa13a9ef1ed..d2fbe4552eef81de78acf01cf106c1aebcbab247 100644 (file)
@@ -16,6 +16,7 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+// Author : Anthony Geay (CEA/DEN)
 
 #ifndef __OVERLAPMAPPING_HXX__
 #define __OVERLAPMAPPING_HXX__
index c02e286ec05d689eeb10eb02a3da287555ed27cd..2f26862c726425fa63326580d3081c767f689605 100644 (file)
@@ -111,3 +111,13 @@ FOREACH(bintestparamem ${TESTSParaMEDMEM})
 ENDFOREACH(bintestparamem ${TESTSParaMEDMEM})
 
 INSTALL(TARGETS ${TESTSParaMEDMEM} DESTINATION ${MED_salomebin_BINS})
+SET(COMMON_HEADERS_HXX
+  MPIMainTest.hxx
+  MPIAccessDECTest.hxx
+  MPIAccessTest.hxx
+  ParaMEDMEMTest.hxx
+  MPI2Connector.hxx
+)
+INSTALL(FILES ${COMMON_HEADERS_HXX} DESTINATION ${MED_salomeinclude_HEADERS})
+
+                                       
\ No newline at end of file
index 829d35274ab9f868c326f3bf503c83a2520401c6..c8e8f7a0f0d0163c9a0f5240364909f896962fa5 100644 (file)
@@ -17,7 +17,7 @@
 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
-INCLUDE(${KERNEL_ROOT_DIR}/salome_adm/cmake_files/InstallAndCompilePythonFile.cmake)
+INCLUDE(${SALOME_MACROS_DIR}/InstallAndCompilePythonFile.cmake)
 FIND_PACKAGE(SWIG REQUIRED)
 INCLUDE(${SWIG_USE_FILE})
 
@@ -40,11 +40,12 @@ INCLUDE_DIRECTORIES(
   )
 
 SWIG_ADD_MODULE(ParaMEDMEM python ParaMEDMEM.i)
-SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBRARIES} paramedmem medloader)
+SWIG_LINK_LIBRARIES(ParaMEDMEM ${PYTHON_LIBS} paramedmem medloader)
 
 SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES CPLUSPLUS ON)
 SET_SOURCE_FILES_PROPERTIES(ParaMEDMEM.i PROPERTIES SWIG_DEFINITIONS "-shadow")
 
 INSTALL(TARGETS _ParaMEDMEM DESTINATION ${MED_salomepythondir})
 INSTALL(FILES ParaMEDMEM.i DESTINATION ${MED_salomeinclude_HEADERS})
-INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MED_salomescript_PYTHON})
+INSTALL_AND_COMPILE_PYTHON_FILE(${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py ${MED_salomepythondir})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ParaMEDMEM.py test_InterpKernelDEC.py test_NonCoincidentDEC.py test_StructuredCoincidentDEC.py DESTINATION ${MED_salomescript_PYTHON})
\ No newline at end of file
index 66b984c794323352c59bb89925ea6462a3f96f50..ebbc033e28876ea8757b1be842dacfe99ab950d7 100644 (file)
@@ -46,7 +46,7 @@ SET(renumber_SOURCES
   )
 
 SET(renumbercpp_LDFLAGS medmem)
-SET(renumber_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS}")
+SET(renumber_DEFINITIONS "${HDF5_DEFINITIONS} ${MED3_DEFINITIONS} ${BOOST_DEFINITIONS} ${PLATFORM_DEFINITIONS}")
 
 IF(MED_ENABLE_METIS)
   SET(renumbercpp_SOURCES ${renumbercpp_SOURCES} RENUMBER_METISRenumbering.cxx)
index e3c74701c22d113b80ef8473f90f7c35e98a8fe6..2c76be652a22c98e9a477c0a4b5c5d8feb0deae6 100755 (executable)
@@ -22,7 +22,7 @@
 
 //export symbols
 #ifdef WIN32
-# if defined RENUMBER_EXPORTS || defined renumber_EXPORTS
+# if defined RENUMBERCPP_EXPORTS || defined renumbercpp_EXPORTS
 #  define RENUMBER_EXPORT __declspec(dllexport)
 # else
 #  define RENUMBER_EXPORT __declspec(dllimport)