#include <med.h>
#define MESGERR 1
#include "med_utils.h"
#include <string.h>
#ifdef DEF_LECT_ECR
#define MODE_ACCES MED_ACC_RDWR
#elif DEF_LECT_AJOUT
#define MODE_ACCES MED_ACC_RDEXT
#else
#define MODE_ACCES MED_ACC_CREAT
#endif
int main (int argc, char **argv)
{
  med_idt fid;
  char maa[MED_NAME_SIZE+1] = "maillage_test19";
  char desc[MED_COMMENT_SIZE+1]="un maillage pour test19.med";
  med_int mdim=2;
  
  med_int ngroup = 3;
  med_int nent = 6;
  char nom_groupes[MED_LNAME_SIZE*3+1];
  
  med_int entites[7] = { 1,2, 3,4,6, 1,4};
  med_int index[4] =   { 1,   3,     6,   8};
  int i;
  char nom_famille0[MED_NAME_SIZE+1] = "FAMILLE0";
  
  med_int ngeo = 3;
  med_geometry_type geo[3] = {MED_SEG2,MED_TRIA3,MED_TETRA4};
  
  med_int index_geo[4] = {1,4,6,7};
  
  if ((fid = MEDfileOpen("test19.med",MODE_ACCES)) < 0) {
    MESSAGE("Erreur a la creation du fichier test19.med");
    return -1;
  }
  printf("Creation du fichier test19.med \n");
  
  if (MEDmaaCr(fid,maa,mdim,MED_UNSTRUCTURED_MESH,desc) < 0) {
    MESSAGE("Erreur a la creation du maillage");
    return -1;
  }
  printf("Creation du maillage \n");
  
  
  strcpy(nom_groupes,"GROUPE 1");
  for (i=8;i<MED_LNAME_SIZE;i++)
    nom_groupes[i] = ' ';
  nom_groupes[MED_LNAME_SIZE] = '\0';
  strcat(nom_groupes,"GROUPE 2");
  for (i=8;i<MED_LNAME_SIZE;i++)
    nom_groupes[MED_LNAME_SIZE+i] = ' ';
  nom_groupes[2*MED_LNAME_SIZE] = '\0';
  strcat(nom_groupes,"GROUPE 3");
  for (i=8;i<MED_LNAME_SIZE;i++)
    nom_groupes[2*MED_LNAME_SIZE+i] = ' ';
  nom_groupes[3*MED_LNAME_SIZE] = '\0';
  
  if (MEDfamCr(fid,maa,nom_famille0,0,NULL,NULL,NULL,0,NULL,0) < 0) {
    MESSAGE("Erreur a la creation de la famille 0");
    return -1;
  }
  printf("Creation de la famille 0 \n");
  
  if (MEDgro2famCr(fid,maa,nom_groupes,index,ngroup,entites,nent,
                   MED_NODE,NULL,NULL,0) < 0) {
    MESSAGE("Erreur a la creation des familles de noeuds ");
    return -1;
  }
  printf("On constuit les familles de noeuds et on les stocke dans test19.med \n");
  
  if (MEDgro2famCr(fid,maa,nom_groupes,index,ngroup,entites,nent,
                   MED_CELL,geo,index_geo,ngeo) < 0) {
    MESSAGE("Erreur a la creation des familles d'elements ");
    return -1;
  }
  printf("On constuit les familles d'elements et on les stocke dans test19.med \n");  
  
  if (MEDfermer(fid) <0) {
    MESSAGE("Erreur a la fermeture du fichier");
    return -1;
  }
  printf("Fermeture du fichier \n");
  
  return 0;
}