MED fichier

◆ 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
fidIdentificateur du fichier.
fnameNom du champ, de longueur maximum MED_NAME_SIZE .
ftypeType numérique des composantes du champ.
ncompNombre de composantes.
cnameNom des composantes du champ. Les noms des composantes sont définis dans une chaîne de ncomponent * MED_SNAME_SIZE caractères.
cunitUnité 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.
dtunitUnité des dates des étapes de calcul du champ. Elle est définie dans une chaîne de taille MED_SNAME_SIZE .
mnameNom du maillage, de longueur maximum MED_NAME_SIZE .
cretretour 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) :
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).
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 :
  • 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.