C-INC CCMED
C     INCLUDE NECESSAIRE POUR LA GESTION DU FORMAT MED 4

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C     SUITE AU PASSAGE MED 64B
C     Remplacer les INTEGER*4 par INTEGER
C                   REAL      par REAL*8
C  !! Attention a eviter le depassement des 72 CARACTERES PAR LIGNE 
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C     Contenu de ".../include/med_parameter.hf77
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER MED_ACC_RDONLY,MED_ACC_RDWR,MED_ACC_RDEXT
      INTEGER MED_ACC_CREAT,MED_ACC_UNDEF
      PARAMETER (MED_ACC_RDONLY=0,MED_ACC_RDWR=1)
      PARAMETER (MED_ACC_RDEXT=2,MED_ACC_CREAT=3,MED_ACC_UNDEF=4)

      INTEGER MED_UNSTRUCTURED_MESH, MED_STRUCTURED_MESH
      INTEGER MED_UNDEF_MESH_TYPE
      PARAMETER (MED_UNSTRUCTURED_MESH=0,MED_STRUCTURED_MESH=1)
      PARAMETER (MED_UNDEF_MESH_TYPE=-1)

      INTEGER MED_CARTESIAN, MED_CYLINDRICAL, MED_SPHERICAL
      INTEGER MED_UNDEF_AXIS_TYPE
      PARAMETER(MED_CARTESIAN=0, MED_CYLINDRICAL=1, MED_SPHERICAL=2)
      PARAMETER(MED_UNDEF_AXIS_TYPE=-1)
      INTEGER MED_CARTESIAN_GRID, MED_POLAR_GRID
      INTEGER MED_CURVILINEAR_GRID, MED_UNDEF_GRID_TYPE
      PARAMETER (MED_CARTESIAN_GRID=0, MED_POLAR_GRID=1)
      PARAMETER  (MED_CURVILINEAR_GRID=2, MED_UNDEF_GRID_TYPE=-1)

      INTEGER MED_SORT_DTIT,MED_SORT_ITDT,MED_SORT_UNDEF
      PARAMETER (MED_SORT_DTIT=0,MED_SORT_ITDT=1,MED_SORT_UNDEF=-1)

      INTEGER MED_COMMENT_SIZE,MED_NAME_SIZE,MED_SNAME_SIZE
      INTEGER MED_LNAME_SIZE
      PARAMETER (MED_COMMENT_SIZE=200,MED_NAME_SIZE=64)
      PARAMETER (MED_SNAME_SIZE=16, MED_LNAME_SIZE=80)

      INTEGER MED_NO_IT, MED_NO_DT
      PARAMETER (MED_NO_IT=-1, MED_NO_DT = -1)
      REAL*8 MED_UNDEF_DT
      PARAMETER (MED_UNDEF_DT = 0.0D0)

      INTEGER MED_UNDEF_INTERLACE,MED_FULL_INTERLACE
      INTEGER MED_NO_INTERLACE
      PARAMETER (MED_UNDEF_INTERLACE=-1,MED_FULL_INTERLACE=0)
      PARAMETER (MED_NO_INTERLACE=1)

      INTEGER MED_CELL, MED_DESCENDING_FACE
      INTEGER MED_DESCENDING_EDGE,MED_NODE
      INTEGER MED_NODE_ELEMENT, MED_STRUCT_ELEMENT
      INTEGER MED_ALL_ENTITY_TYPE,MED_UNDEF_ENTITY_TYPE
      INTEGER MED_N_ENTITY_TYPES
      PARAMETER (MED_N_ENTITY_TYPES=6)
      PARAMETER (MED_CELL=0, MED_DESCENDING_FACE=1)
      PARAMETER (MED_DESCENDING_EDGE=2,MED_NODE=3)
      PARAMETER (MED_NODE_ELEMENT=4, MED_STRUCT_ELEMENT=5)
      PARAMETER (MED_ALL_ENTITY_TYPE=6,MED_UNDEF_ENTITY_TYPE=-1)

      INTEGER MED_POINT1,MED_SEG2,MED_SEG3,MED_SEG4,MED_TRIA3
      INTEGER MED_QUAD4,MED_TRIA6,MED_TRIA7,MED_QUAD8,MED_QUAD9
      INTEGER MED_TETRA4,MED_PYRA5,MED_PENTA6,MED_HEXA8,MED_TETRA10
      INTEGER MED_OCTA12,MED_PYRA13,MED_PENTA15,MED_PENTA18
      INTEGER MED_HEXA20,MED_HEXA27
      INTEGER MED_POLYGON,MED_POLYGON2
      INTEGER MED_POLYHEDRON, MED_STRUCT_GEO_INTERNAL
      INTEGER MED_STRUCT_GEO_SUP_INTERNAL,MED_NONE
      INTEGER MED_GEO_ALL,MED_ALL_GEOTYPE
      INTEGER MED_NO_GEOTYPE,MED_UNDEF_GEOTYPE
      PARAMETER(MED_POINT1=001)
      PARAMETER(MED_SEG2=102)
      PARAMETER(MED_SEG3=103)
      PARAMETER(MED_SEG4=104)
      PARAMETER(MED_TRIA3=203)
      PARAMETER(MED_QUAD4=204)
      PARAMETER(MED_TRIA6=206)
      PARAMETER(MED_TRIA7=207)
      PARAMETER(MED_QUAD8=208)
      PARAMETER(MED_QUAD9=209)
      PARAMETER(MED_TETRA4=304)
      PARAMETER(MED_PYRA5=305)
      PARAMETER(MED_PENTA6=306)
      PARAMETER(MED_HEXA8=308)
      PARAMETER(MED_TETRA10=310)
      PARAMETER(MED_OCTA12=312)
      PARAMETER(MED_PYRA13=313)
      PARAMETER(MED_PENTA15=315)
      PARAMETER(MED_PENTA18=318)
      PARAMETER(MED_HEXA20=320)
      PARAMETER(MED_HEXA27=327)
C MED_POLYGON : polygones (cotes = SEG2) --> Ce sont les POLY de Cast3M
C MED_POLYGON2 : QuadraticPOLYGON (cotes = SEG3)
      PARAMETER(MED_POLYGON=400)
      PARAMETER(MED_POLYGON2=420)
      PARAMETER(MED_POLYHEDRON=500)
      PARAMETER(MED_STRUCT_GEO_INTERNAL=600)
      PARAMETER(MED_STRUCT_GEO_SUP_INTERNAL=700)
      PARAMETER(MED_NONE=0)
      PARAMETER(MED_GEO_ALL=-1)
      PARAMETER(MED_ALL_GEOTYPE=-1)
      PARAMETER(MED_NO_GEOTYPE=0)
      PARAMETER(MED_UNDEF_GEOTYPE=0)

      INTEGER MED_N_CELL_GEO,MED_N_CELL_FIXED_GEO
      INTEGER MED_N_CELL_GEO_FIXED_CON
      INTEGER MED_N_FACE_GEO,MED_N_FACE_FIXED_GEO
      INTEGER MED_N_FACE_GEO_FIXED_CON
      INTEGER MED_N_EDGE_TYPES,MED_N_EDGE_FIXED_GEO
      INTEGER MED_N_EDGE_GEO_FIXED_CON
      INTEGER MED_N_NODE_GEO,MED_N_NODE_FIXED_GEO
      INTEGER MED_N_NODE_GEO_FIXED_CON
      PARAMETER(MED_N_CELL_GEO=25)
      PARAMETER(MED_N_CELL_FIXED_GEO=24)
      PARAMETER(MED_N_CELL_GEO_FIXED_CON=21)
      PARAMETER(MED_N_FACE_GEO=8)
      PARAMETER(MED_N_FACE_FIXED_GEO=8)
      PARAMETER(MED_N_FACE_GEO_FIXED_CON=6)
      PARAMETER(MED_N_EDGE_TYPES=3)
      PARAMETER(MED_N_EDGE_FIXED_GEO=3)
      PARAMETER(MED_N_EDGE_GEO_FIXED_CON=3)
      PARAMETER(MED_N_NODE_GEO=1)
      PARAMETER(MED_N_NODE_FIXED_GEO=1)
      PARAMETER(MED_N_NODE_GEO_FIXED_CON=1)

      INTEGER MED_COORDINATE, MED_CONNECTIVITY
      INTEGER MED_NAME, MED_NUMBER
      INTEGER MED_FAMILY_NUMBER
      INTEGER MED_COORDINATE_AXIS1, MED_COORDINATE_AXIS2
      INTEGER MED_COORDINATE_AXIS3, MED_INDEX_FACE, MED_INDEX_NODE
      INTEGER MED_GLOBAL_NUMBER, MED_VARIABLE_ATTRIBUTE
      INTEGER MED_COORDINATE_TRSF, MED_UNDEF_DATATYPE
      PARAMETER(MED_COORDINATE=0, MED_CONNECTIVITY=1, MED_NAME=2)
      PARAMETER(MED_NUMBER=3, MED_FAMILY_NUMBER=4)
      PARAMETER(MED_COORDINATE_AXIS1=5, MED_COORDINATE_AXIS2=6)
      PARAMETER(MED_COORDINATE_AXIS3=7,MED_INDEX_FACE=8)
      PARAMETER(MED_INDEX_NODE=9,MED_GLOBAL_NUMBER=10)
      PARAMETER(MED_VARIABLE_ATTRIBUTE=11,MED_COORDINATE_TRSF=12)
      PARAMETER(MED_UNDEF_DATATYPE=-1)

      INTEGER MED_NODAL, MED_DESCENDING, MED_UNDEF_CONNECTIVITY_MODE
      INTEGER MED_NO_CMODE
      PARAMETER(MED_NODAL=0,MED_DESCENDING=1)
      PARAMETER(MED_UNDEF_CONNECTIVITY_MODE=-1)
      PARAMETER(MED_NO_CMODE=-1)

      INTEGER MED_FALSE, MED_TRUE
      PARAMETER(MED_FALSE=0,MED_TRUE=1)

      INTEGER MED_UNDEF_PFLMODE,MED_GLOBAL_PFLMODE,
     &          MED_COMPACT_PFLMODE
      INTEGER MED_UNDEF_STMODE,MED_GLOBAL_STMODE,MED_COMPACT_STMODE
      CHARACTER*64 MED_GAUSS_ELNO,MED_IPOINT_ELNO
      PARAMETER(MED_GAUSS_ELNO='MED_GAUSS_ELNO')
      PARAMETER(MED_IPOINT_ELNO='MED_GAUSS_ELNO')
      PARAMETER(MED_UNDEF_PFLMODE=0,MED_GLOBAL_PFLMODE=1)
      PARAMETER(MED_COMPACT_PFLMODE=2)
      PARAMETER(MED_UNDEF_STMODE=0,MED_GLOBAL_STMODE=1)
      PARAMETER(MED_COMPACT_STMODE=2)
      CHARACTER*64 MED_NO_NAME,MED_NO_MESHNAME,MED_NO_MESH
      CHARACTER*64 MED_NO_MESH_SUPPORT, MED_NO_LOCALIZATION
      CHARACTER*64 MED_NO_INTERPOLATION, MED_NO_PROFILE
      CHARACTER*64 MED_ALLENTITIES_PROFILE
      CHARACTER*80 MED_NO_GROUP
      PARAMETER(MED_NO_NAME=' ',MED_NO_MESHNAME=' ',MED_NO_MESH=' ')
      PARAMETER(MED_NO_MESH_SUPPORT=' ', MED_NO_LOCALIZATION=' ')
      PARAMETER(MED_NO_INTERPOLATION=' ', MED_NO_PROFILE=' ')
      PARAMETER(MED_ALLENTITIES_PROFILE=' ')
      PARAMETER(MED_NO_GROUP=' ')

      INTEGER MED_ALL_CONSTITUENT
      PARAMETER(MED_ALL_CONSTITUENT=0)

      INTEGER MED_UNDEF_SIZE,MED_NO_PROFILE_SIZE
      PARAMETER(MED_UNDEF_SIZE=0,MED_NO_PROFILE_SIZE=0)

      INTEGER MED_MESH,MED_FIELD,MED_LIBRARY,MED_FILE
      INTEGER MED_MESH_SUPPORT,MED_ELSTRUCT,MED_FAMILY
      INTEGER MED_EQUIVALENCE, MED_GROUP, MED_JOINT
      INTEGER MED_LOCALIZATION, MED_PROFILE,MED_FILTER,
     &        MED_INTERPOLATION
      INTEGER MED_NUMERICAL_DATA,MED_LINK,
     &        MED_CLASS_UNDEF,MED_CLASS_ALL
      PARAMETER(MED_MESH=0,MED_FIELD=1,MED_LIBRARY=2,MED_FILE=3)
      PARAMETER(MED_MESH_SUPPORT=4,MED_ELSTRUCT=5,MED_FAMILY=6)
      PARAMETER(MED_LOCALIZATION=7,MED_PROFILE=8,MED_FILTER=9)
      PARAMETER(MED_INTERPOLATION=10, MED_NUMERICAL_DATA=11)
      PARAMETER(MED_LINK=13, MED_CLASS_UNDEF=-1, MED_CLASS_ALL=-2)

      INTEGER MED_INT32,MED_INT64,MED_INT
      INTEGER MED_FLOAT32,MED_FLOAT64,MED_DOUBLE
      PARAMETER (MED_INT32=24, MED_INT64=26, MED_INT=28)
      PARAMETER (MED_FLOAT32=4, MED_FLOAT64=6, MED_DOUBLE=6)

      INTEGER MED_ATT_FLOAT64,MED_ATT_INT,MED_ATT_NAME
      INTEGER MED_ATT_UNDEF
      PARAMETER(MED_ATT_FLOAT64=MED_FLOAT64)
      PARAMETER(MED_ATT_INT=MED_INT)
      PARAMETER(MED_ATT_NAME=30)
      PARAMETER(MED_ATT_UNDEF=0)

      CHARACTER*64 MED_PARTICLE_NAME, MED_BALL_NAME, MED_BEAM_NAME
      CHARACTER*64 MED_PARTICLE_LABEL,MED_BALL_DIAMETER
      CHARACTER*64 MED_BEAM_THICKNESS
      PARAMETER(MED_PARTICLE_NAME='MED_PARTICLE')
      PARAMETER(MED_BALL_NAME='MED_BALL')
      PARAMETER(MED_BEAM_NAME='MED_BEAM')
      PARAMETER(MED_PARTICLE_LABEL='MED_PARTICLE_LABEL')
      PARAMETER(MED_BALL_DIAMETER='MED_BALL_DIAMETER')
      PARAMETER(MED_BEAM_THICKNESS='MED_BEAM_THICKNESS')

      INTEGER MED_MAJOR_NUM, MED_MINOR_NUM, MED_RELEASE_NUM
      PARAMETER(MED_MAJOR_NUM=4)
      PARAMETER(MED_MINOR_NUM=1)
      PARAMETER(MED_RELEASE_NUM=1)

      INTEGER HDF_VERSION_RELEASE_REF, HDF_VERSION_MAJOR_REF
      INTEGER HDF_VERSION_MINOR_REF
      CHARACTER*16 HDF_VERSION_REF
      PARAMETER(HDF_VERSION_REF='1.10.3')
      PARAMETER(HDF_VERSION_MAJOR_REF=1)
      PARAMETER(HDF_VERSION_MINOR_REF=10)
      PARAMETER(HDF_VERSION_RELEASE_REF=3)

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C     Contenu de ".../include/med.hf77
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

      EXTERNAL MED_SET_IT
      COMMON /CMED/ MED_GET_CELL_GEOMETRY_TYPE
      INTEGER MED_GET_CELL_GEOMETRY_TYPE(MED_N_CELL_FIXED_GEO)
      SAVE   /CMED/

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C     Equivalence des Elements Cast3M => MED
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C !! Le tableau MEDEL est a dimensionner a NOMBR (include CCGEOME.INC)
      INTEGER MEDEL(49)
      DATA MEDEL( 1), MEDEL( 2), MEDEL( 3), MEDEL( 4), MEDEL( 5),
     .     MEDEL( 6), MEDEL( 7), MEDEL( 8), MEDEL( 9), MEDEL(10),
     .     MEDEL(11), MEDEL(12), MEDEL(13), MEDEL(14), MEDEL(15),
     .     MEDEL(16), MEDEL(17), MEDEL(18), MEDEL(19), MEDEL(20),
     .     MEDEL(21), MEDEL(22), MEDEL(23), MEDEL(24), MEDEL(25),
     .     MEDEL(26), MEDEL(27), MEDEL(28), MEDEL(29), MEDEL(30),
     .     MEDEL(31), MEDEL(32), MEDEL(33), MEDEL(34), MEDEL(35),
     .     MEDEL(36), MEDEL(37), MEDEL(38), MEDEL(39), MEDEL(40),
     .     MEDEL(41), MEDEL(42), MEDEL(43), MEDEL(44), MEDEL(45),
     .     MEDEL(46), MEDEL(47), MEDEL(48), MEDEL(49)
     .   / MED_POINT1,    MED_SEG2,   MED_SEG3,   MED_TRIA3,   MED_NONE,
     .      MED_TRIA6,   MED_TRIA7,  MED_QUAD4,    MED_NONE,  MED_QUAD8,
     .      MED_QUAD9,    MED_NONE,   MED_NONE,   MED_HEXA8, MED_HEXA20,
     .     MED_PENTA6, MED_PENTA15,   MED_NONE,    MED_NONE,   MED_NONE,
     .       MED_NONE,    MED_NONE, MED_TETRA4, MED_TETRA10,  MED_PYRA5,
     .     MED_PYRA13,    MED_NONE,   MED_NONE,    MED_NONE,   MED_NONE,
     .       MED_NONE, MED_POLYGON, MED_HEXA27,    MED_NONE,   MED_NONE,
     .       MED_NONE,    MED_SEG4,   MED_NONE,  MED_OCTA12,   MED_NONE,
     .       MED_NONE,    MED_NONE,   MED_NONE,    MED_NONE,   MED_NONE,
     .       MED_NONE,    MED_NONE,   MED_NONE,    MED_NONE /

C     Types d'Elements geometriques disponibles pour la sortie MED
C     MDICLA est dimensionne par le numero du plus grand MED_"element" lu
      INTEGER MDICLA(MED_POLYHEDRON)
      DATA MDICLA(MED_POINT1) , MDICLA(MED_SEG2)  , MDICLA(MED_SEG3)   ,
     .     MDICLA(MED_TRIA3)  , MDICLA(MED_TRIA6) , MDICLA(MED_TRIA7)  ,
     .     MDICLA(MED_QUAD4)  , MDICLA(MED_QUAD8) , MDICLA(MED_QUAD9)  ,
     .     MDICLA(MED_HEXA8)  , MDICLA(MED_HEXA20), MDICLA(MED_PENTA6) ,
     .     MDICLA(MED_PENTA15), MDICLA(MED_TETRA4), MDICLA(MED_TETRA10),
     .     MDICLA(MED_PYRA5)  , MDICLA(MED_PYRA13), MDICLA(MED_HEXA27) ,
     .     MDICLA(MED_SEG4)   , MDICLA(MED_OCTA12), MDICLA(MED_POLYGON)
     .   / 1 , 2 , 3 ,
     .     4 , 6 , 7 ,
     .     8 , 10, 11,
     .     14, 15, 16,
     .     17, 23, 24,
     .     25, 26, 33,
     .     37, 39, 32 /

C     GTYPE et ETYPE Disponibles pour la sortie des resultats
      INTEGER   MED_GTABLE
      PARAMETER(MED_GTABLE=21)
      INTEGER MEDGTB(MED_GTABLE)
      DATA MEDGTB( 1), MEDGTB( 2), MEDGTB( 3), MEDGTB( 4), MEDGTB( 5),
     .     MEDGTB( 6), MEDGTB( 7), MEDGTB( 8), MEDGTB( 9), MEDGTB(10),
     .     MEDGTB(11), MEDGTB(12), MEDGTB(13), MEDGTB(14), MEDGTB(15),
     .     MEDGTB(16), MEDGTB(17), MEDGTB(18), MEDGTB(19), MEDGTB(20),
     .     MEDGTB(21)
     .   / MED_POINT1,   MED_SEG2,    MED_SEG3,  MED_TRIA3,   MED_TRIA6,
     .      MED_TRIA7,  MED_QUAD4,   MED_QUAD8,  MED_QUAD9,   MED_HEXA8,
     .     MED_HEXA20, MED_PENTA6, MED_PENTA15, MED_TETRA4, MED_TETRA10,
     .      MED_PYRA5, MED_PYRA13,  MED_HEXA27,   MED_SEG4,  MED_OCTA12,
     .    MED_POLYGON /

      INTEGER   MED_ETABLE
      PARAMETER(MED_ETABLE=3)
      INTEGER MEDETB(MED_ETABLE)
      DATA MEDETB(1)       , MEDETB(2), MEDETB(3)
     .   / MED_NODE_ELEMENT, MED_CELL , MED_NODE /

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C Cas particulier des POLYGONes (2D): (MED) MED_POLYGON & (C3M) type 32
C On ne considere que les polygones ayant de 1 a MED_MAXCPO cotes.
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER   MED_MAXCPO
      PARAMETER(MED_MAXCPO = 50)

CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C TABLEAU DES PERMUTATIONS DES NOEUDS ENTRE CAST3M ET FORMAT MED 
C VOIR LA FONCTION MEDPER (FICHIER ESOPE MEDPER.ESO)
C LES ELEMENTS CONCERNES SONT DANS L'ORDRE :
C   TRI6, QUA8, CU20, PR15, TE10, TRI7, QUA9, PY13, SEG3
C LES AUTRES ELEMENTS NE FONT PAS L'OBJET DE PERMUTATION.
C LE PREMIER NOEUD EST CONSERVE (1->1) ET N'EST PAS PRIS EN COMPTE DANS
C LE TABLEAU CI-DESSOUS
C Ci-dessous une ligne pour un element (noeuds 2 a nbnn)
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
      INTEGER IPERM(82)
      DATA IPERM / 3,5,2,4,6,
     &             3,5,7,2,4,6,8,
     &             3,5,7,13,15,17,19,2,4,6,8,14,16,18,20,9,10,11,12,
     &             3,5,10,12,14,2,4,6,11,13,15,7,8,9,
     &             3,5,10,2,4,6,7,8,9,
     &             3,5,2,4,6,7,
     &             3,5,7,2,4,6,8,9,
     &             3,5,7,13,2,4,6,8,9,10,11,12,
     &             3,2 /
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

