mfdcmi
mfdcmw
mfdcre
mfdcsi
mfdfdi
mfdfin
mfdini
mfdinw
mfdncn
mfdnfc
mfdnfd
mfdnin
mfdnpf
mfdnpn
mfdnva
mfdnvp
mfdoci
mfdonp
mfdonv

## mfdcre()

subroutine mfdcre | ( | integer*8 | fid,
|  | character*(*) | fname,
|  | integer | ftype,
|  | integer | ncomp,
|  | character*(*) | cname,
|  | character*(*) | cunit,
|  | character*(*) | dtunit,
|  | character*(*) | mname,
|  | integer | cret )

Cette fonction crée un champ dans un fichier.

Paramètres

  fid | Identificateur du fichier.
  fname | Nom du champ, de longueur maximum MED_NAME_SIZE .
  ftype | Type numérique des composantes du champ.
  ncomp | Nombre de composantes.
  cname | Nom des composantes du champ. Les noms des composantes sont définis dans une chaîne de ncomponent * MED_SNAME_SIZE caractères.
  cunit | Unité des composantes du champ. Les noms des unités des composantes sont définis dans une chaîne de ncomponent * MED_SNAME_SIZE caractères.
  dtunit | Unité des dates des étapes de calcul du champ. Elle est définie dans une chaîne de taille MED_SNAME_SIZE .
  mname | Nom du maillage, de longueur maximum MED_NAME_SIZE .
  cret | retour négatif en cas d'erreur (MED_ERR_HOWTO), Zéro sinon.

Voir également
  MEDfieldCr

Cette fonction crée un champ dans un fichier. Un champ est composé d'une ou plusieurs composantes scalaires. A chaque composante est associé un nom et une unité. Le type des valeurs des composantes peut être au choix (med_field_type) :

- MED_FLOAT64 : flottant 64 bits,
- MED_FLOAT32 : flottant 32 bits,
- MED_INT32 : entier 32 bits,
- MED_INT64 : entier 64 bits.
- MED_INT : entier MED_INT32 ou MED_INT64 selon la configuration du med_int.
  Remarques
    Depuis la 3.3.0 en plus des types MED_FLOAT64, MED_INT32 et MED_INT64, les types MED_FLOAT32 et MED_INT sont autorisés. Aux types med_int et med_float64 utilisés en C sont ajoutés les types med_float32, med_int32 et med_int64 (si la plateforme possède des entiers 64bits testé à la configuration).
    - A l'écriture :
      - si med_int = int les champs MED_INT32 sont toujours stockés en 32bits (utiliser med_int32 ou med_int )
      - si med_int = int les champs MED_INT64 sont désormais autorisés et stockés en 64bits (utiliser med_int64 )
      - si med_int = int les champs MED_INT sont désormais acceptés et stockés en 32bits (utiliser med_int ou med_int32 )
      - si med_int = long les champs MED_INT32 sont désormais stockés en 32bits (utiliser med_int32)
      - si med_int = long les champs MED_INT64 sont toujours autorisés et stockés en 64bits (utiliser med_int64 ou med_int )
      - si med_int = long les champs MED_INT sont désormais acceptés et stockés en 64bits (utiliser med_int ou med_int64 )
    - A la lecture :
      - si med_int = int les champs MED_INT32 sont toujours lus en 32bits (utiliser med_int32 ou med_int)
      - si med_int = int les champs MED_INT64 sont acceptés et lus en 64bits sans conversion (utiliser med_int64)
      - si med_int = int les champs MED_INT sont acceptés et lus en 32bits avec conversion si necessaire (0 si > maxint32 , utiliser med_int ou med_int32)
      - si med_int = long les champs MED_INT32 sont toujours lus en 32bits sans conversion (utiliser med_int32)
      - si med_int = long les champs MED_INT64 sont toujours lus en 64bits sans conversion (utiliser med_int64 ou med_int)
      - si med_int = long les champs MED_INT sont acceptés et lus en 64bits avec conversion si necessaire (utiliser med_int ou med_int64)
    Sur un Unix 32 bits sur architecture 64bits, il est possible d'utiliser des MED_INT64, l'étape de configuration vérifie l'existence ou définie le type C int64_t. A lecture d'un fichier < 3.3.0 avec une bibliothèque >= 3.3.0 configurée avec med_int = long :
    - Si le fichier lu contient un champ MED_INT32, les bibliothèques < 3.3.0 relisaient en se basant sur la taille 64 bits des med_int. Les tableaux étaient donc alloués en fonction de la taille du med_int, ceci n'est plus le cas pour les champs MED_INT32 ou MED_INT64.
    En Fortran pour les champs MED_INT64 utiliser le type integer*8 et pour les champs MED_INT32 utiliser le type integer*4.
    Avant la 3.3.0 seuls les types : MED_FLOAT64, MED_INT32 et MED_INT64 étaient autorisés dans MEDfieldCr et seuls les types med_int et med_float64 pouvaient être utilisés en C. La configuration du med_int était prédominante sur le choix du type de champ pour définir la taille du stockage à utiliser. Il faut garder à l'esprit que les étapes d'écriture et de lecture ne se font pas forcément avec la même configuration de med_int.
    - A l'écriture :
      - si med_int = int les champs MED_INT32 sont stockés en 32bits
      - si med_int = int les champs MED_INT64 sont interdits
      - si med_int = long les champs MED_INT32 sont stockés en 64bits
      - si med_int = long les champs MED_INT64 sont stockés en 64bits
    - A la lecture :
      - si med_int = int les champs MED_INT32 sont lus en 32bits avec conversion 64->32 s'il avait été stocké en 64bits (configuration écriture med_int = long)
      - si med_int = int les champs MED_INT64 ne pouvaient pas être lu (pour prevenir la perte d'information)
      - si med_int = long les champs MED_INT32 sont lus en 64bits avec conversion 32->64 s'il avait été stocké en 32bits (configuration écriture med_int = int)
      - si med_int = long les champs MED_INT64 sont lus en 64bits

Définition à la ligne 20 du fichier medfield.f.