MED fichier: mfdcre

MED fichier

mfdcmi
mfdcmw
mfdcre
mfdcsi
mfdfdi
mfdfin
mfdiar
mfdiaw
mfdini
mfdinw
mfdipr
mfdipw
mfdivr
mfdivw
mfdncn
mfdnfc
mfdnfd
mfdnin
mfdnpf
mfdnpn
mfdnva
mfdnvp
mfdoci
mfdoir
mfdonp
mfdonv
mfdorr
mfdrar
mfdraw
mfdrpr
mfdrpw
mfdrvr
mfdrvw
| ## ◆ 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 22 du fichier medfield.f.