MED fichier

◆ MEDfieldValueWr()

med_err MEDfieldValueWr ( const med_idt  fid,
const char *const  fieldname,
const med_int  numdt,
const med_int  numit,
const med_float  dt,
const med_entity_type  entitype,
const med_geometry_type  geotype,
const med_switch_mode  switchmode,
const med_int  componentselect,
const med_int  nentity,
const unsigned char *const  value 
)

Cette fonction permet d'écrire les valeurs d'un champ définies sur des entités d'un maillage pour une étape de calcul donnée (pas de gestion de profil).

Paramètres
fidIdentificateur du fichier.
fieldnameNom du champ, de longueur maximum MED_NAME_SIZE .
numdtNuméro de pas de temps de l'étape de calcul (MED_NO_DT si pas de numéro de pas de temps).
numitNuméro d'itération de l'étape de calcul (MED_NO_IT si pas de numéro d'itération).
dtDate du pas de temps si le numéro de pas de temps est différent de MED_NO_DT.
entitypeType d'entité (med_entity_type).
geotypeType géométrique de l'entité (med_geometry_type).
switchmodeMode d'entrelacement utilisé pour le stockage de valeurs med_switch_mode.
componentselectNuméro de composante sélectionnée (MED_ALL_CONSTITUENT pour désigner toutes les composantes).
nentityNombre d'entités de même type géométrique constituant globalement le maillage.
valueTableau des valeurs.
Valeurs retournées
med_errretour négatif en cas d'erreur (MED_ERR_HOWTO), Zéro sinon.

Cette fonction permet d'écrire les valeurs d'un champ définies sur des entités d'un maillage pour une étape de calcul donnée (pas de gestion de profil).

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 44 du fichier MEDfieldValueWr.c.