Salome HOME
Ze test of 1SGTUMesh.
[modules/med.git] / idl / MED.idl
index d282c81f57757c6ed80971ef0c113cfb44293d88..de9e4c06dcfbee62ee78c602d1ae7ac374efab45 100644 (file)
+// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// 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
+//
+
 // File: MED.idl
 // Project: SALOME
-// Copyright : CEA/DEN/DMSS/LGLS
-// $Header$
+//
+/*!
+This file contains the main IDL definitions of the %MED component in %SALOME application.
+*/
 
 #ifndef MED_IDL
 #define MED_IDL
 
+/*!
+ \defgroup MED SALOME MED component
+
+ This component is dedicated to the mounting in memory of a .med file. some
+ services of that component store CORBA objects (MED, MESH, FIELD) in the
+ study and/or give a direct access to those objects.
+*/
+
+#include "SALOME_GenericObj.idl"
 #include "SALOME_Exception.idl"
 #include "SALOME_Component.idl"
+#include "SALOME_Types.idl"
 #include "SALOMEDS.idl"
+#include "SALOME_Comm.idl"
 
-module Engines {
-  /*!
-    An array of long
-  */
-  typedef sequence<long> long_array;
-  /*!
-    An array of double
-  */
-  typedef sequence<double> double_array;
-  /*!
-    An array of string
-  */
-  typedef sequence<string> string_array;
-  /*!
-    An array of boolean
-  */
-  typedef sequence<boolean> boolean_array;
-
-};
+module SALOME_MED
+{
+/*! \ingroup MED
+This package contains a set of interfaces used for %SALOME %MED component.
+*/
 
-module SALOME_MED {
 
-  //  interface FIELD;
   interface FIELD;
   interface FAMILY;
   interface GROUP;
+  interface GMESH;
   interface MESH;
   interface SUPPORT;
 
-  enum medGeometryElement {
-    MED_NONE,
-    MED_POINT1,
-    MED_SEG2,
-    MED_SEG3,
-    MED_TRIA3,
-    MED_QUAD4,
-    MED_TRIA6,
-    MED_QUAD8,
-    MED_TETRA4,
-    MED_PYRA5,
-    MED_PENTA6,
-    MED_HEXA8,
-    MED_TETRA10,
-    MED_PYRA13,
-    MED_PENTA15,
-    MED_HEXA20,
-    MED_ALL_ELEMENTS
-  };
-
-  enum medEntityMesh {
-    MED_CELL,
-    MED_FACE,
-    MED_EDGE,
-    MED_NODE,
-    MED_ALL_ENTITIES
-  };
-
-  enum medModeSwitch {
-    MED_FULL_INTERLACE,
-    MED_NO_INTERLACE
-  };
-
-  enum medConnectivity {
-    MED_NODAL,
-    MED_DESCENDING
-  };
-
-  enum medDriverTypes {
-    MED_DRIVER , 
-    VTK_DRIVER , 
-    NO_DRIVER  
-  };
+/*!
+This enumeration contains a set of elements defining the type of geometrical elements which constitue
+a %Mesh.
+*/
+  typedef long medGeometryElement;
+  const medGeometryElement MED_NONE = 0;
+  const medGeometryElement MED_POINT1 = 1;
+  const medGeometryElement MED_SEG2 = 102;
+  const medGeometryElement MED_SEG3 = 103;
+  const medGeometryElement MED_TRIA3 = 203;
+  const medGeometryElement MED_QUAD4 = 204;
+  const medGeometryElement MED_TRIA6 = 206;
+  const medGeometryElement MED_QUAD8 = 208;
+  const medGeometryElement MED_TETRA4 = 304;
+  const medGeometryElement MED_PYRA5 = 305;
+  const medGeometryElement MED_PENTA6 = 306;
+  const medGeometryElement MED_HEXA8 = 308;
+  const medGeometryElement MED_TETRA10 = 310;
+  const medGeometryElement MED_PYRA13 = 313;
+  const medGeometryElement MED_PENTA15 = 315;
+  const medGeometryElement MED_HEXA20 = 320;
+  const medGeometryElement MED_POLYGON = 400;
+  const medGeometryElement MED_POLYHEDRA = 500;
+  const medGeometryElement MED_ALL_ELEMENTS = 999;
+
+
+/*!
+This enumeration contains a set of elements defining the structural elements (entities) which constitue
+a %Mesh.
+*/
+  typedef long medEntityMesh;
+  const medEntityMesh MED_CELL = 0;
+  const medEntityMesh MED_FACE = 1;
+  const medEntityMesh MED_EDGE = 2;
+  const medEntityMesh MED_NODE = 3;
+  const medEntityMesh MED_ALL_ENTITIES = 4;
+
+/*!
+This enumeration contains a set of modes to store data in an array.
+For example an array of coordinates in 3D; tow storage may be considered:
+
+ - X1,Y1,Z1,X2,Y2,Z2,...,Xn,Yn,Zn if MED_FULL_INTERLACE
+ - X1,X2,...,Xn,Y1,Y2,...,Yn,Z1,Z2,...,Zn if MED_NO_INTERLACE
+*/
+  typedef long medModeSwitch;
+  const medModeSwitch MED_FULL_INTERLACE = 0;
+  const medModeSwitch MED_NO_INTERLACE = 1;
+  const medModeSwitch MED_NO_INTERLACE_BY_TYPE = 2;
+
+/*!
+This enumeration contains a set of elements defining the type of connectivity.
+*/
+  typedef long medConnectivity;
+  const medConnectivity MED_NODAL = 0;
+  const medConnectivity MED_DESCENDING = 1;
+
+
+/*!
+   enumeration contains a set of elements defining the type of driver.
+*/
+    typedef long medDriverTypes;
+    /*!<This driver is used for reading into memory of the mesh from %MED file.*/
+    const medDriverTypes MED_DRIVER  = 0;
+    const medDriverTypes VTK_DRIVER = 1;
+    const medDriverTypes NO_DRIVER = 2;
 
   /*!
-    An array of medGeometryElement
+    An array of %medGeometryElement
   */
   typedef sequence<medGeometryElement> medGeometryElement_array;
+
   /*!
-    An array of FAMILY
+    An array of %FAMILY
   */
   typedef sequence<FAMILY> Family_array;
+
   /*!
-    An array of GROUP
+    An array of %GROUP
   */
   typedef sequence<GROUP> Group_array;
-  
+
   // ----------------------
-  // mesh interface
+  // base mesh interface
   // ----------------------
 
-  interface MESH {
-    // Index range begins at 1
+  interface GMESH : SALOME::MultiCommClass, SALOME::GenericObj 
+  {
+    // Index range begins from 1
 
     // General Informations
     //---------------------
 
     /*!
-      Returns mesh name.
+      Returns the name of the mesh .
     */
     string getName() raises (SALOME::SALOME_Exception);
-    
+
     /*!
       Returns space dimension.
     */
@@ -118,150 +163,119 @@ module SALOME_MED {
 
     /*!
       Returns mesh dimension.
-      
+
       Example :
-      - we have only MED_TETRA4 in MED_CELL : MeshDimension = 3
-      - we have only MED_QUAD4 in MED_CELL : MeshDimension = 2
-      - we have both MED_SEG2 and MED_TRIA3 in MED_CELL : MeshDimension = 2
+      - we have only MED_TETRA4 in MED_CELL : MeshDimension = 3D
+      - we have only MED_QUAD4 in MED_CELL : MeshDimension = 2D
+      - we have both MED_SEG2 and MED_TRIA3 in MED_CELL : MeshDimension = 2D
     */
     long getMeshDimension() raises (SALOME::SALOME_Exception);
 
-    // Coordinates
-    //------------
+    /*!
+       Pour Alliances
+    */
+    boolean getIsAGrid() raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns coordinate's system :
+      Returns coordinate system :
       - "CARTESIAN"
       - "CYLINDRICAL"
       - "SPHERICAL"
     */
-    string getCoordinateSystem() raises (SALOME::SALOME_Exception); 
+    string getCoordinatesSystem() raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns the number of nodes defined in mesh.
+      Returns the number of nodes defined in the mesh.
     */
     long getNumberOfNodes() raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns coordinates array :
-      - X1,Y1,Z1,X2,Y2,...,Zn if MED_FULL_INTERLACE
-      - X1,X2,...Xn,Y1,Y2,...Zn if MED_NO_INTERLACE
-    */
-    Engines::double_array getCoordinates(in medModeSwitch typeSwitch)
-      raises (SALOME::SALOME_Exception);
+      Returns an array containing the names of coordinates.
 
-    /*!
-      Returns an array with names of coordinates.
-      
       Example :
       - x,y,z
       - r,teta,phi
       - ...
-      
+
       It could be empty.
     */
-    Engines::string_array getCoordinatesNames()
+    SALOME_TYPES::ListOfString getCoordinatesNames()
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns an array with units of coordinates (cm, m, mm, ...)
+      Returns an array containing the units of coordinates (cm, m, mm, ...)
 
-      It could be empty. We suppose we are IS (meter).
+      It could be empty. By defult IS is used (meter).
     */
-    Engines::string_array getCoordinatesUnits()
+    SALOME_TYPES::ListOfString getCoordinatesUnits()
       raises (SALOME::SALOME_Exception);
 
-    // Connectivity
-    // ------------
-
     /*!
-      Returns the number of different <medGeometryElement> types existing 
-      in the specified entity.
-
-      Note : Not implemented for MED_ALL_ENTITIES.
+      Returns the %SUPPORT containing the boundary elements
+      of the mesh.
     */
-    long getNumberOfTypes(in medEntityMesh entity)
-      raises (SALOME::SALOME_Exception);
-
-    /*!
-      Returns an array of all <med geometry elements> types existing 
-      in the mesh.
 
-      Note : Not implemented for MED_ALL_ENTITIES.
-    */
-    medGeometryElement_array getTypes(in medEntityMesh entity)
+    SUPPORT getBoundaryElements(in medEntityMesh Entity)
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns the number of elements of type <med geometrie element>.
-
-      Note : 
-      - Implemented for MED_ALL_ELEMENTS
-      - Not implemented for MED_ALL_ENTITIES
+      Returns the %SUPPORT defined on all the element of an Entity.
     */
-    long getNumberOfElements(in medEntityMesh entity,
-                            in medGeometryElement geomElement)
+    SUPPORT getSupportOnAll(in medEntityMesh Entity)
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Give, in full or no interlace mode (for nodal connectivity),
-      descending or nodal connectivity.
-
-      You must give a <medEntityMesh> (ie:MED_EDGE) and a 
-      <medGeometryElement> (ie:MED_SEG3).
+      Returns the %SUPPORT containing the boundary elements
+      of the support mySupport3D.
     */
-    Engines::long_array getConnectivity(in medModeSwitch typeSwitch,
-                                       in medConnectivity mode,
-                                       in medEntityMesh entity,
-                                       in medGeometryElement geomElement)
-      raises (SALOME::SALOME_Exception);
+    SUPPORT getSkin(in SUPPORT mySupport3D ) raises (SALOME::SALOME_Exception);
 
-    /*!
-      Give morse index array to use with 
-      getConnectivity(MED_FULL_INTERLACE,mode,entity,MED_ALL_ELEMENTS).
+    struct coordinateInfos
+    {
+       string                   coordSystem;
+       SALOME_TYPES::ListOfString coordNames;
+       SALOME_TYPES::ListOfString coordUnits;
+    };
+    coordinateInfos getCoordGlobal()   raises (SALOME::SALOME_Exception);
 
-      Each value give start index for corresponding entity in 
-      connectivity array.
 
-      Example : i-th element, j-th node of it :
-      - In C mode : Connectivity[ConnectivityIndex[i]-1+j-1]
-      - In fortran mode : Connectivity[ConnectivityIndex[i]+j]
-    */
-    Engines::long_array getConnectivityIndex(in medConnectivity mode,
-                                            in medEntityMesh entity)
-      raises (SALOME::SALOME_Exception);
+
+    // Connectivity
+    // ------------
 
     /*!
-      Get global number of element which have same connectivity than 
-      connectivity argument.
+      Returns the number of defferent %medGeometryElement types existing
+      in the specified entity.
+
+      \note
+      Not implemented for MED_ALL_ENTITIES.
     */
-    long getElementNumber(in medConnectivity mode, 
-                         in medEntityMesh entity, 
-                         in medGeometryElement type, 
-                         in Engines::long_array connectivity) 
+    long getNumberOfTypes(in medEntityMesh entity)
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Return a reverse connectivity to MED_CELL.
-
-      If mode=MED_NODAL, the array contains, for each node, all cells 
-      arround it.
+      Returns an array of all %medGeometryElement types existing
+      in the mesh.
 
-      If mode=MED_DESCENDING, the array contains, for each face (or edge), 
-      the 2 cells of each side. First is cell which face normal is outgoing.
+      \note
+       Not implemented for MED_ALL_ENTITIES.
     */
-    Engines::long_array getReverseConnectivity(in medConnectivity mode)
+    medGeometryElement_array getTypes(in medEntityMesh entity)
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Give index array to use with getReverseConnectivity(MED_NODAL).
-
-      It is unusefull with MED_DESCENDING mode, 
-      because we have allways two cells.
+      Returns the number of elements of type %medGeometryElement.
 
-      See getConnectivityIndex for details.
+      Note :
+      - Implemented for MED_ALL_ELEMENTS
+      - Not implemented for MED_ALL_ENTITIES
     */
-    Engines::long_array getReverseConnectivityIndex(in medConnectivity mode)
+    long getNumberOfElements(in medEntityMesh entity,
+                            in medGeometryElement geomElement)
+      raises (SALOME::SALOME_Exception);
+
+    medGeometryElement   getElementType (in  medEntityMesh entity,
+                                      in long number)
       raises (SALOME::SALOME_Exception);
 
     // Families and Groups
@@ -286,9 +300,10 @@ module SALOME_MED {
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns a reference to i-th to family.
+      Returns the reference to i-th family.
 
-      Note : i is bounded by 1 and NumberOfFamilies.
+      \note
+      i is bounded by 1 and NumberOfFamilies.
     */
     FAMILY getFamily(in medEntityMesh entity,in long familyNumber)
       raises (SALOME::SALOME_Exception);
@@ -300,9 +315,10 @@ module SALOME_MED {
       raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns a reference to i-th group.
+      Returns the reference to i-th group.
 
-      Note : i is bounded by 1 and NumberOfGroups.
+      \note
+     i is bounded by 1 and NumberOfGroups.
     */
     GROUP getGroup(in medEntityMesh entity,in long groupNumber)
       raises (SALOME::SALOME_Exception);
@@ -313,7 +329,8 @@ module SALOME_MED {
     /*!
       Returns a field on mySupport containing volume.
 
-      Note : mySupport must be on MED_CELL entity and MeshDimension must be 3.
+      \note
+      mySupport must be on MED_CELL entity and MeshDimension must be 3D.
     */
     FIELD getVolume(in SUPPORT mySupport)
       raises (SALOME::SALOME_Exception);
@@ -321,7 +338,8 @@ module SALOME_MED {
     /*!
       Returns a field on mySupport containing area.
 
-      Note : mySupport must be on MED_FACE entity.
+      \note
+      mySupport must be on MED_FACE entity.
     */
     FIELD getArea(in SUPPORT mySupport)
       raises (SALOME::SALOME_Exception);
@@ -329,7 +347,8 @@ module SALOME_MED {
     /*!
       Returns a field on mySupport containing length.
 
-      Note : mySupport must be on MED_EDGE entity.
+    \note
+     mySupport must be on MED_EDGE entity.
     */
     FIELD getLength(in SUPPORT mySupport)
       raises (SALOME::SALOME_Exception);
@@ -337,8 +356,9 @@ module SALOME_MED {
     /*!
       Returns a field on mySupport containing normal.
 
-      Note : mySupport must be on MED_FACE entity if MeshDimension and 
-      SpaceDimension=3 and on MED_EDGE if MeshDimension and SpaceDimension=2.
+      \note
+      mySupport must be on MED_FACE entity if MeshDimension and
+      SpaceDimension=3D and on MED_EDGE if MeshDimension and SpaceDimension=2D.
     */
     FIELD getNormal(in SUPPORT mySupport)
       raises (SALOME::SALOME_Exception);
@@ -359,34 +379,192 @@ module SALOME_MED {
     // -----------
 
     /*!
-      Add the Mesh in the StudyManager.
+      Adds the Mesh in the StudyManager.
     */
-    void addInStudy(in SALOMEDS::Study myStudy, in MESH myIor )
+    void addInStudy(in SALOMEDS::Study myStudy, in GMESH myIor )
       raises (SALOME::SALOME_Exception, SALOMEDS::StudyBuilder::LockProtection);
 
     //                                 Add a MED/VTK/... driver
     //                          Multiple drivers can be added whatever the type
-    long addDriver     (in medDriverTypes driverType, in string  fileName, in string meshName) 
+    long addDriver     (in medDriverTypes driverType, in string  fileName, in string meshName)
                                         raises (SALOME::SALOME_Exception);
     //                          Remove a driver
     void rmDriver      (in long i)  raises (SALOME::SALOME_Exception);
 
    //
     void read          (in long i)  raises (SALOME::SALOME_Exception);
-    void write         (in long i, in string driverMeshName)  
+    void write         (in long i, in string driverMeshName)
                                     raises (SALOME::SALOME_Exception);
-  
-  //                           Cuisine Interne/Internal Kitchen
+
+/*!
+Internal Corba method.
+*/
     long getCorbaIndex()       raises (SALOME::SALOME_Exception);
+    struct meshInfos
+    {
+           string name ;
+           long spaceDimension ;
+          long meshDimension;
+          long numberOfNodes ;
+           boolean isAGrid;
+           Family_array famNode;
+           Family_array famEdge;
+           Family_array famFace;
+           Family_array famCell;
+          Group_array  groupNode;
+          Group_array  groupEdge;
+          Group_array  groupFace;
+          Group_array  groupCell;
+    };
+    meshInfos getMeshGlobal()          raises (SALOME::SALOME_Exception);
+    boolean areEquals(in GMESH other);
+
+    MESH convertInMESH();
   };
 
-  
+  // ----------------------
+  // mesh interface
+  // ----------------------
+
+  interface MESH : GMESH {
+
+    /*!
+       Pour Alliances
+    */
+    boolean existConnectivity (in medConnectivity mode,
+                              in medEntityMesh entity)
+                              raises (SALOME::SALOME_Exception);
+
+    // Coordinates
+    //------------
+
+    /*!
+      Returns an array of coordinates stored in any type
+    */
+    SALOME_TYPES::ListOfDouble getCoordinates(in medModeSwitch typeSwitch)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Returns an array (Sender) of coordinates stored in any type.\n
+      It could be used in a Client code using the MED Client classes.
+     */
+    SALOME::SenderDouble getSenderForCoordinates(in medModeSwitch typeSwitch)
+      raises (SALOME::SALOME_Exception);
+    /*!
+     Returns coordinate  n° Number on axis n° Axis
+    */
+    double getCoordinate(in long Number, in long Axis)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Returns the %SUPPORT containing the boundary elements
+      of the mesh.
+    */
+
+    SALOME_TYPES::ListOfLong getGlobalNumberingIndex(in medEntityMesh entity) ;
+
+
+    // Connectivity
+    // ------------
+
+    /*!
+      Give, in full or no interlace mode (for nodal connectivity),
+      descending or nodal connectivity.
+
+      You must give a %medEntityMesh (ie:MED_EDGE) and a
+      %medGeometryElement (ie:MED_SEG3).
+    */
+    SALOME_TYPES::ListOfLong getConnectivity(in medConnectivity mode,
+                                           in medEntityMesh entity,
+                                           in medGeometryElement geomElement)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Idem getConnectivity but return a Sender.\n
+      It could be used in a Client code using the MED Client classes.
+     */
+    SALOME::SenderInt getSenderForConnectivity(in medConnectivity mode,
+                                               in medEntityMesh entity,
+                                               in medGeometryElement geomElement)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Give morse index array to use with
+      getConnectivity(mode,entity,MED_ALL_ELEMENTS).
+
+      Each value give start index for corresponding entity in
+      connectivity array.
+
+      Example : i-th element, j-th node of it :
+      - In C mode : Connectivity[ConnectivityIndex[i]-1+j-1]
+      - In fortran mode : Connectivity[ConnectivityIndex[i]+j]
+    */
+    SALOME_TYPES::ListOfLong getConnectivityIndex(in medConnectivity mode,
+                                                in medEntityMesh entity)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Idem getConnectivityIndex but return a Sender.\n
+      It could be used in a Client code using the MED Client classes.
+     */
+    SALOME::SenderInt getSenderForConnectivityIndex(in medConnectivity mode,
+                                                    in medEntityMesh entity,
+                                                    in medGeometryElement geomElement)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Gets a global number of the element which have the same connectivity as the
+      connectivity argument.
+    */
+    long getElementNumber(in medConnectivity mode,
+                         in medEntityMesh entity,
+                         in medGeometryElement type,
+                         in SALOME_TYPES::ListOfLong connectivity)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Returns a reverse connectivity to MED_CELL.
+
+      If mode=MED_NODAL, the array contains, for each node, all cells
+      arround it.
+
+      If mode=MED_DESCENDING, the array contains, for each face (or edge),
+      the 2 cells of each side. First is cell which face normal is outgoing.
+    */
+    SALOME_TYPES::ListOfLong getReverseConnectivity(in medConnectivity mode)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Give index array to use with getReverseConnectivity(MED_NODAL).
+
+      This method is not used with MED_DESCENDING mode,
+      because we have allways two cells.
+
+      See getConnectivityIndex for details.
+    */
+    SALOME_TYPES::ListOfLong getReverseConnectivityIndex(in medConnectivity mode)
+      raises (SALOME::SALOME_Exception);
+
+    struct connectivityInfos
+    {
+       long                     numberOfNodes;
+        medGeometryElement_array meshTypes;
+       SALOME_TYPES::ListOfLong   numberOfElements;
+       SALOME_TYPES::ListOfLong   nodalConnectivityLength;
+        long                     entityDimension;
+    };
+    connectivityInfos getConnectGlobal(in medEntityMesh entity)
+    raises (SALOME::SALOME_Exception);
+
+  };
+
+
   // ----------------------
   // Support interface
   // ----------------------
-  
-  interface SUPPORT {
-    
+
+  interface SUPPORT : SALOME::MultiCommClass, SALOME::GenericObj {
+
     /*!
       Returns the name of the support.
     */
@@ -400,80 +578,123 @@ module SALOME_MED {
     /*!
       Returns a reference to the mesh.
     */
-    MESH getMesh() raises (SALOME::SALOME_Exception);
+    GMESH getMesh() raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns the medEntityMesh's type used by the support. 
+      Returns the type of %medEntityMesh used by the support.
 
-      Note : A support deals only with one entity's type 
+      \note
+      A support deals only with one entity's type
       (for example : MED_FACE or MED_NODE)
     */
     medEntityMesh getEntity() raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns true if all elements of this entity are
-      concerned, false otherwise.
+      Returns True if all elements of this entity are
+      engaged, False otherwise.
 
-      If true, you must use mesh reference (getMesh) to get more information.
+      If True, you must use mesh reference (getMesh) to get more information.
     */
     boolean isOnAllElements() raises (SALOME::SALOME_Exception);
 
     /*!
-      If isOnAllElements is false, returns number of elements in the
-      support.
+      If the method %isOnAllElements() returns False, this method
+     returns the number of elements in the support.
 
-      Example : number of MED_TRIA3 or MED_ALL_ELEMETNS elements 
+      Example : number of MED_TRIA3 or MED_ALL_ELEMETNS elements
       in entity of support.
 
-      Note : If SUPPORT is defined on MED_NODE, use MED_NONE 
-      medGeometryElement type.
+      \note
+      If %SUPPORT is defined on MED_NODE, use MED_NONE %medGeometryElement
+      type.
     */
     long getNumberOfElements(in medGeometryElement geomElement)
       raises (SALOME::SALOME_Exception);
 
+     long  getNumberOfTypes() raises (SALOME::SALOME_Exception);
     /*!
-      If isOnAllElements is false, returns an array of <medGeometryElement>
+      If isOnAllElements is False, returns an array of %medGeometryElement
       types used by the support.
 
-      <medEntityMesh> is given by getEntity.
+      %medEntityMesh is given by getEntity.
     */
     medGeometryElement_array getTypes() raises (SALOME::SALOME_Exception);
 
+
     /*!
-      If isOnAllElements is false, returns an array which contains
-      all number of given medGeometryElement.
+      If the method %isOnAllElements() returns False, this method returns an array which
+     contains all numbers of given %medGeometryElement.
 
-      Numbering is global, ie numbers are bounded by 1 and 
-      MESH::getNumberOfElement(entity,MED_ALL_ELEMENTS) and not by 1 and 
+      Numbering is global, ie numbers are bounded by 1 and
+      MESH::getNumberOfElement(entity,MED_ALL_ELEMENTS) and not by 1 and
       MESH::getNumberOfElement(entity,geomElement).
 
-      Note : If SUPPORT is defined on MED_NODE, use MED_NONE 
-      medGeometryElement type.
+      \note
+      If %SUPPORT is defined on MED_NODE, use MED_NONE %medGeometryElement type.
     */
-    Engines::long_array getNumber(in medGeometryElement geomElement)
+    SALOME_TYPES::ListOfLong getNumber(in medGeometryElement geomElement)
       raises (SALOME::SALOME_Exception);
 
     /*!
-      If isOnAllElements is false, returns index of element number.
-      
-      Use it with getNumber(MED_ALL_ELEMENTS). 
-      
-      Note : See getConnectivityIndex for details.
+      If the method %isOnAllElements() returns False, this method returns an array which
+     contains all numbers of given %medGeometryElement.
+
+      Numbering is from file, ie numbers are bounded by 1 and
+      MESH::getNumberOfElement(entity,MED_ALL_ELEMENTS) and not by 1 and
+      MESH::getNumberOfElement(entity,geomElement).
+
+      \note
+      If %SUPPORT is defined on MED_NODE, use MED_NONE %medGeometryElement type.
     */
-    Engines::long_array getNumberIndex()
+    SALOME_TYPES::ListOfLong getNumberFromFile(in medGeometryElement geomElement)
+      raises (SALOME::SALOME_Exception);
+
+    /*!
+      Idem SALOME::Sender getNumber(in medGeometryElement geomElement) but returning Sender.\n
+      It could be used in a Client code using the MED Client classes.
+     */
+
+    SALOME::SenderInt getSenderForNumber(in medGeometryElement geomElement)
       raises (SALOME::SALOME_Exception);
+
     /*!
-      Returns number of Gauss points for this medGeometryElement.
+      If the method %isOnAllElements() returns False, this method returns the index
+      of element number.
+
+      Use it with getNumber(MED_ALL_ELEMENTS).
+
+      \note
+       See the method %getConnectivityIndex for more details.
+    */
+    SALOME_TYPES::ListOfLong getNumberIndex()
+      raises (SALOME::SALOME_Exception);
 
-      Note : 
-      - Not defined if SUPPORT is on MED_NODE.
-      - Not defined for MED_ALL_ELEMENTS medGeometryElement type.
+    /*!
+      Idem SALOME_TYPES::ListOfLong getNumberIndex() but return a Sender.\n
+      It could be used in a Client code using the MED Client classes.
      */
-    long getNumberOfGaussPoints(in medGeometryElement geomElement)
-                                       raises (SALOME::SALOME_Exception);
+    SALOME::SenderInt getSenderForNumberIndex()
+      raises (SALOME::SALOME_Exception);
 
-    //                                 Cuisine Interne
+    void getBoundaryElements()
+                                       raises (SALOME::SALOME_Exception);
+/*!
+Internal Corba method.
+*/
     long getCorbaIndex()               raises (SALOME::SALOME_Exception);
+    struct supportInfos
+    {
+           string       name;
+          string        description;
+          boolean       isOnAllElements;
+          medEntityMesh entity;
+           long          numberOfGeometricType;
+           medGeometryElement_array types;
+           SALOME_TYPES::ListOfLong   nbEltTypes;
+           SALOME_TYPES::ListOfLong   nodalConnectivityLength;
+    };
+    supportInfos getSupportGlobal()            raises (SALOME::SALOME_Exception);
+
   };
 
 
@@ -481,14 +702,15 @@ module SALOME_MED {
   // Family interface
   //-----------------
 
-  interface FAMILY : SUPPORT 
+  interface FAMILY : SUPPORT
     {
 
       /*!
        Returns Family identifier (Identifier
-       of the family in the mesh). 
+       of the family in the mesh).
 
-       Note : There is precisely one for each family.
+       \note
+      There is precisely only one indentifier for each family.
       */
       long getIdentifier() raises (SALOME::SALOME_Exception);
 
@@ -501,67 +723,95 @@ module SALOME_MED {
        Returns an array of all attributes' identifiers.
        There is one for each attribute.
       */
-      Engines::long_array getAttributesIdentifiers() 
+      SALOME_TYPES::ListOfLong getAttributesIdentifiers()
        raises (SALOME::SALOME_Exception);
 
       /*!
        Returns identifier of i-th attribute.
 
-       Note : i is bounded by 1 and NumberOfAttributes.
+       \note
+      i is bounded by 1 and NumberOfAttributes.
       */
       long getAttributeIdentifier(in long i) raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns an array of all attributes values.
-       There is one for each attribute.
+       Returns an array of all values of the attributes .
+       There is one value for each attribute.
       */
-      Engines::long_array getAttributesValues() 
+      SALOME_TYPES::ListOfLong getAttributesValues()
        raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns value of i-th attribute.
+       Returns the value of i-th attribute.
 
-       Note : i is bounded by 1 and NumberOfAttributes.
+       \note
+      i is bounded by 1 and NumberOfAttributes.
       */
       long getAttributeValue(in long i) raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns an array of all attributes descriptions.
-       There is one for each attribute.
+       Returns an array of all descriptions of the attributes .
+       There is one description for each attribute.
+      */
+      SALOME_TYPES::ListOfString getAttributesDescriptions()
+       raises (SALOME::SALOME_Exception);
+
+      /*!
+       Returns the description of i-th attribute.
+
+       \note
+      i is bounded by 1 and NumberOfAttributes.
       */
-      Engines::string_array getAttributesDescriptions() 
+      string getAttributeDescription(in long i)
+       raises (SALOME::SALOME_Exception);
+
+     /*!
+       Returns the number of groups the family belongs to.
+      */
+      long getNumberOfGroups()
        raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns description of i-th attribute.
+       Returns an array of names of groups the family belongs to .
+       There is one name for each group.
+      */
+      SALOME_TYPES::ListOfString getGroupsNames()
+       raises (SALOME::SALOME_Exception);
+
+      /*!
+       Returns the name of i-th group.
 
-       Note : i is bounded by 1 and NumberOfAttributes.
+       \note
+      i is bounded by 1 and NumberOfAttributes.
       */
-      string getAttributeDescription(in long i) 
+      string getGroupName(in long i)
        raises (SALOME::SALOME_Exception);
+
+
     };
 
 
   //----------------
   // Group interface
   //----------------
-  interface GROUP : SUPPORT 
+  interface GROUP : SUPPORT
     {
 
       /*!
-       Returns number of families in this group.
+       Returns the number of families in this group.
       */
       long getNumberOfFamilies() raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns array of all families.
+       Returns an array of all families.
       */
       Family_array getFamilies() raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns a reference for the i-th family.
+       Returns a reference to the i-th family.
 
-       Note : i is bounded by 1 and NumberOfFamilies.
+       \note
+      i is bounded by 1 and NumberOfFamilies.
       */
       FAMILY getFamily(in long i) raises (SALOME::SALOME_Exception);
 
@@ -572,14 +822,21 @@ module SALOME_MED {
   // Field interface
   //----------------
 
-  interface FIELD 
+  interface FIELD : SALOME::GenericObj
     {
 
       /*!
-       Returns the field name.
-      */
+       *  Returns the field name.
+       */
       string getName() raises (SALOME::SALOME_Exception);
 
+      /*!
+       *  Changes the field name.
+       *
+       *  \param theName The new name for this field.
+       */
+      void setName (in string theName) raises (SALOME::SALOME_Exception);
+
       /*!
        Returns the field description.
       */
@@ -599,32 +856,49 @@ module SALOME_MED {
       /*!
        Returns an array containing components names.
       */
-      Engines::string_array getComponentsNames() 
+      SALOME_TYPES::ListOfString getComponentsNames()
        raises (SALOME::SALOME_Exception);
 
       /*!
        Returns the name of i-th component.
 
-       Note : 
+       \note
        - i is bounded by 1 and NumberOfComponents.
-       - Name is mandatory foreach field's component.
+       - Name is mandatory for each field's component.
       */
       string getComponentName(in long i) raises (SALOME::SALOME_Exception);
 
       /*!
        Returns an array containing components units.
       */
-      Engines::string_array getComponentsUnits()
+      SALOME_TYPES::ListOfString getComponentsUnits()
        raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns the unit of i-th component.
+       *  Returns the unit of i-th component.
+       *
+       *  \note i is bounded by 1 and NumberOfComponents.
+       */
+      string getComponentUnit(in long i) raises (SALOME::SALOME_Exception);
 
-       Note : i is bounded by 1 and NumberOfComponents.
+      /*!
+       Returns an array containing components descriptions.
       */
-      string getComponentUnit(in long i) raises (SALOME::SALOME_Exception);
+      SALOME_TYPES::ListOfString getComponentsDescriptions()
+       raises (SALOME::SALOME_Exception);
+
+      /*!
+       Returns the description of i-th component.
 
+       \note
+       - i is bounded by 1 and NumberOfComponents.
+       - Name is mandatory for each field's component.
+      */
+      string getComponentDescription(in long i) raises (SALOME::SALOME_Exception);
 
+      /*!
+       Returns the iteration number.
+      */
       long getIterationNumber() raises (SALOME::SALOME_Exception);
 
       /*!
@@ -633,97 +907,188 @@ module SALOME_MED {
       double getTime() raises (SALOME::SALOME_Exception);
 
       /*!
-       Returns order number use for 
+       Returns order number use for
        internal step in this iteration.
       */
       long getOrderNumber() raises (SALOME::SALOME_Exception);
 
+      /*!
+       Returns if gauss points are present.
+      */
+      boolean getGaussPresence();
+
       // Read & Write
       // -----------
-      
-      long addDriver (in medDriverTypes driverType, in string  fileName, in string fieldName) 
+
+      long addDriver (in medDriverTypes driverType, in string  fileName, in string fieldName)
        raises (SALOME::SALOME_Exception);
-      
-      //                          Remove a driver
+
+      /*!
+     Removes a driver
+     */
       void rmDriver (in long i)
        raises (SALOME::SALOME_Exception);
-      
+
       //
       void read (in long i)
        raises (SALOME::SALOME_Exception);
 
       /*!
-       Write field.
+       Writes a field.
       */
-      void write (in long i, in string driverFieldName)  
+      void write (in long i, in string driverFieldName)
        raises (SALOME::SALOME_Exception);
-      
+
       /*!
-       Add the Field in the StudyManager.
+       Adds the Field in the StudyManager.
       */
-      void addInStudy(in SALOMEDS::Study myStudy, in FIELD myIor )
+      void addInStudy(in SALOMEDS::Study myStudy, in FIELD myIor)
+       raises (SALOME::SALOME_Exception, SALOMEDS::StudyBuilder::LockProtection);
+      void addInStudyToComponent(in SALOMEDS::SComponent myComponent, in FIELD myIor)
        raises (SALOME::SALOME_Exception, SALOMEDS::StudyBuilder::LockProtection);
 
-      //                                       Cuisine Interne
+/*!
+Internal Corba method.
+*/
       long getCorbaIndex()
        raises (SALOME::SALOME_Exception);
 
     };
 
 
-  interface FIELDDOUBLE : FIELD {
+  interface FIELDDOUBLE : FIELD , SALOME::MultiCommClass {
+
+    /*!
+      Returns an array of values of the field
+    */
+    SALOME_TYPES::ListOfDouble getValue(in medModeSwitch mode)
+      raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns the field values array
+      Idem as getValue but it could be used in a Client code using the
+      MED Client classes.
     */
-    Engines::double_array getValue(in medModeSwitch mode)
+    SALOME::SenderDouble getSenderForValue(in medModeSwitch mode)
       raises (SALOME::SALOME_Exception);
   };
 
-  interface FIELDINT : FIELD {
+  interface FIELDDOUBLENO : FIELDDOUBLE {
+  };
+
+  interface FIELDDOUBLENOBYTYPE : FIELDDOUBLE {
+  };
+
+  interface FIELDDOUBLEFULL : FIELDDOUBLE {
+  };
+
+  interface FIELDINT : FIELD , SALOME::MultiCommClass {
+
+    /*!
+      Returns an array of values of the field
+    */
+    SALOME_TYPES::ListOfLong getValue(in medModeSwitch mode)
+      raises (SALOME::SALOME_Exception);
 
     /*!
-      Returns the field values array
+      Idem as getValue but it could be used in a Client code using the
+      MED Client classes.
     */
-    Engines::long_array getValue(in medModeSwitch mode)
+    SALOME::SenderInt getSenderForValue(in medModeSwitch mode)
       raises (SALOME::SALOME_Exception);
+  };
 
+  interface FIELDINTNO : FIELDINT {
   };
 
-  // MED interface
+  interface FIELDINTNOBYTYPE : FIELDINT {
+  };
 
-  interface MED {
+  interface FIELDINTFULL : FIELDINT {
+  };
 
+  // MED interface
 
-    long                   getNumberOfMeshes () raises (SALOME::SALOME_Exception);       
+  interface MED : SALOME::GenericObj {
+    /*!
+      returns the number of meshes in the %MED object.
+     */
+    long                   getNumberOfMeshes () raises (SALOME::SALOME_Exception);
+    /*!
+      returns the number of fields in the %MED object.
+     */
     long                   getNumberOfFields () raises (SALOME::SALOME_Exception);
-    Engines::string_array  getMeshNames      () raises (SALOME::SALOME_Exception);
-    Engines::string_array  getFieldNames     () raises (SALOME::SALOME_Exception);
-    MESH                   getMeshByName     ( in string  meshName)  raises (SALOME::SALOME_Exception);
-    MESH                   getMesh           ( in FIELD  fieldPtr)   raises (SALOME::SALOME_Exception);
-    FIELD                  getField          ( in string fieldName, 
+    /*!
+      returns an array which contains the name of each meshes in the %MED object.
+     */
+    SALOME_TYPES::ListOfString  getMeshNames      () raises (SALOME::SALOME_Exception);
+    /*!
+      returns an array which contains the name of each fields in the %MED object.
+     */
+    SALOME_TYPES::ListOfString  getFieldNames     () raises (SALOME::SALOME_Exception);
+    /*!
+      giving a mesh name, it returns the corresponding %MESH pointer.
+     */
+    GMESH                   getMeshByName     ( in string  meshName)  raises (SALOME::SALOME_Exception);
+    /*!
+      giving a %FIELD pointer, it returns the corresponding %MESH pointer of the mesh
+      on which the field lies.
+     */
+    GMESH                   getMesh           ( in FIELD  fieldPtr)   raises (SALOME::SALOME_Exception);
+    /*!
+      giving a field name, it returns the number of iteration in the corresponding %FIELD object.
+     */
+    long getFieldNumberOfIteration(in string fieldName) raises (SALOME::SALOME_Exception);
+    /*!
+      giving a field name and an integer %i, it returns a couple of integers: the time iteration and
+      the order number of the %i^th iteration of the corresponding %FIELD object.
+     */
+    SALOME_TYPES::ListOfLong  getFieldIteration(in string fieldName, in long i) raises (SALOME::SALOME_Exception);
+    /*!
+      giving a field name, it returns an array of integers: the list of the order number and
+      the time iteration couple of all iterations of the corresponding %FIELD object.
+
+      (IT1, DT1, IT2, DT2, ... , ITn, DTn) when n is the number of the %FIELD iterations.
+     */
+    SALOME_TYPES::ListOfLong  getFieldIterations(in string fieldName) raises (SALOME::SALOME_Exception);
+    /*!
+      giving a field name, a time iteration and an order number, it returns the corresponding %FIELD oject.
+     */
+    FIELD                  getField          ( in string fieldName,
                                               in long pasTemps,
                                               in long numOrdre )    raises (SALOME::SALOME_Exception);
 
 
-    // Add a MED/VTK/... driver to a MED'GEN' object to 
+    // Add a MED/VTK/... driver to a MED'GEN' object to
     // be able to read/write files preserving  meshes<-->fields association
     // Multiple drivers can be added whatever the type.
     // The access point in the <long> returned
-    long addDriver     (in medDriverTypes driverType, in string  fileName) 
+    long addDriver     (in medDriverTypes driverType, in string  fileName)
                                         raises (SALOME::SALOME_Exception);
-    // Remove the driver
+    /*!
+   Removes the driver
+    */
     void rmDriver      (in long i)  raises (SALOME::SALOME_Exception);
-    
+    /*!
+    Reads the structure of the %MED file
+    */
     void readFileStruct(in long i)  raises (SALOME::SALOME_Exception);
     void writeFrom     (in long i)  raises (SALOME::SALOME_Exception);
     void write         (in long i)  raises (SALOME::SALOME_Exception);
 
-    void addMesh  (in MESH   ptrMesh   ) raises (SALOME::SALOME_Exception);
+    void addMesh  (in GMESH  ptrMesh   ) raises (SALOME::SALOME_Exception);
     void addField (in FIELD  ptrField  ) raises (SALOME::SALOME_Exception);
-    
+
     void addInStudy (in SALOMEDS::Study myStudy, in MED medPtr) raises (SALOME::SALOME_Exception, SALOMEDS::StudyBuilder::LockProtection);
   };
+  
+  /*! \brief A structure containing information about MED file
+  */
+  struct MedFileInfo
+  {
+    string fileName; //!< name of file
+    long   fileSize; //!< size of file
+    long   major, minor, release; //!< MED file version
+  };
 };
 
 #endif /* MED_IDL */