# Guide de référence du module MEDfilter

## Fonctions

med_filter * | MEDfilterAllocate (const int nfilter)
| Alloue un tableau de filtres de taille nfilter.

med_err

MEDfilterBlockOfEntityCr (const med_idt fid, const med_int nbofentity, const med_int nbofvaluesperentity, const med_int nbofconstituentpervalue, const med_int constituentselect, const med_switch_mode switchmode, const med_storage_mode storagemode, const char *const profilename, const med_size start, const med_size stride, const med_size count, const med_size blocksize, const med_size lastblocksize, med_filter *const filter)

| Crée un filtre en selectionnant les entités par blocs continus de taille constante pour lesquelles on veut lire/écrire des valeurs. Cette sélection permet une lecture/écriture avancée vers/depuis les emplacements mémoire sélectionnés. Elle s'utilise aussi bien en mode séquentiel qu'en mode parallèle (un ou plusieurs processus).
med_err | MEDfilterClose (med_filter *const filter)
| Désalloue les ressources hdf détenues par un filtre.
med_err | MEDfilterDeAllocate (const int nfilter, med_filter *filter)
| Desalloue un tableau de filtre de taille nfilter.
med_err | MEDfilterEntityCr (const med_idt fid, const med_int nbofentity, const med_int nbofvaluesperentity, const med_int nbofconstituentpervalue, const med_int constituentselect, const med_switch_mode switchmode, const med_storage_mode storagemode, const char *const profilename, const med_int filterarraysize, const med_int *filterarray, med_filter *const filter)

## Documentation des fonctions

med_filter* MEDfilterAllocate | ( | const int | nfilter | ) |

Alloue un tableau de filtres de taille nfilter.

Paramètres:

  | nfilter | Nombre de filtres.

Renvoie:
  Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La déallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).

Remarques
  - Ne pas oublier d'appeler MEDfilterDeAllocate pour libérer les ressources hdf et la mémoire utilisée.
  - En C, il est possible de déclarer directement une variable de type med_filter que l'on initialise à MED_FILTER_INIT. Il sera alors necessaire d'appeler MEDfilterClose pour libérer correctement les ressources détenues par le filtre.

Définition à la ligne 35 du fichier MEDfilterAllocate.c.

med_err MEDfilterBlockOfEntityCr | ( | const med_idt | fid,
|  | const med_int | nbofentity,
|  | const med_int | nbofvaluesperentity,
|  | const med_int | nbofconstituentpervalue,
|  | const med_int | constituentselect,
|  | const med_switch_mode | switchmode,
|  | const med_storage_mode | storagemode,
|  | const char *const | profilename,
|  | const med_size | start,
|  | const med_size | stride,
|  | const med_size | count,
|  | const med_size | blocksize,
|  | const med_size | lastblocksize,
|  | med_filter *const | filter |
| ) |  |  |

Crée un filtre en selectionnant les entités par blocs continus de taille constante pour lesquelles on veut lire/écrire des valeurs. Cette sélection permet une lecture/écriture avancée vers/depuis les emplacements mémoire sélectionnés. Elle s'utilise aussi bien en mode séquentiel qu'en mode parallèle (un ou plusieurs processus).

Paramètres:

  | fid | Identificateur du fichier.
  | nbofentity | Nombre d'entités de même type géométrique constituant globalement le maillage. Ce paramètre ne prend pas en compte nbofvaluesperentity et nbofconstituentpervalue.
  | nbofvaluesperentity | Nombre de valeurs par entité. Utiliser la valeur 1 pour un filtre d'éléments de maillage. Cela peut être le nombre de points d'intégration utilisé dans un champ résultat.
  | nbofconstituentpervalue | Nombre de constituants par valeur. Cela peut être le nombre de coordonnées des noeuds, le nombre de noeuds d'une connectivité, le nombre de composantes d'un champ résultat.
  | constituentselect | Numéro de constituant des valeurs à filtrer (commence à 1). Le mot clé MED_ALL_CONSTITUENT permet de selectionner tous les constituants. Cela peut être le numéro de coordonnées des noeuds, le numéro de noeuds d'une connectivité, le numéro de composantes d'un champ résultat.
  | switchmode | Mode d'entrelacement utilisé pour le stockage de valeurs med_switch_mode.
  | storagemode | Indique le mode de stockage en mémoire med_storage_mode des valeurs associées au profil utilisé.
  | profilename | Nom du profil utilisé (de taille maximum MED_NAME_SIZE ) ou (MED_NO_PROFILE | MED_ALLENTITIES_PROFILE ) s'il n'y a pas de profil.
  | start | Index de départ du premier bloc. L'index est relatif à un profil.
  | stride | Ecart constant en nombre d'entités entre les blocs (en comptant à partir de l'indice de départ du bloc précédent). En particulier, écart entre start et l'index de départ du second bloc.
  | count | Nombre de blocs à sélectionner (0 est possible).
  | blocksize | Taille constante en nombre d'entités de chaque bloc.
  | lastblocksize | Taille en nombre d'entités du dernier bloc (0 possible).

Valeurs retournées:

  | filter | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La déallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).

Renvoie:
  retour négatif en cas d'erreur, Zéro sinon.

La sélection s'opère dans l'espace mémoire d'un ou plusieurs processus ou les constituants sont stockés en mode MED_FULL_INTERLACE|MED_NO_INTERLACE (med_switch_mode) avec ou sans profil. Le mode de stockage peut être MED_GLOBAL ou MED_COMPACT (med_storage_mode).

- En mode MED_GLOBAL, il n'est pas possible d'utiliser un profil utilisateur (la sélection ne serait plus par bloc). Les seuls profils possibles sont MED_ALLENTITIES_PROFILE ou MED_NO_PROFILE . Chacun des processus possède l'espace mémoire des valeurs associés à la totalité des entités d'un même type. La numérotation des index commence à 1.
- En mode MED_COMPACT, il est possible d'utiliser un profil utilisateur ou MED_ALLENTITIES_PROFILE. les blocks d'index crées indiquent les numéros d'entités à selectionner dans le tableau profil.

Remarques
  Le filtre crée prend en compte les paramètres nbofvaluesperentity et nbofconstituentpervalue pour selectionner les emplacements en mémoire.

Définition à la ligne 50 du fichier MEDfilterBlockOfEntityCr.c.

med_err MEDfilterClose | ( | med_filter *const | filter | ) |

Désalloue les ressources hdf détenues par un filtre.

Paramètres:

  | filter | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs.

Renvoie:
  retour négatif en cas d'erreur, Zéro sinon.

Remarques
  MEDfilterClose est surtout destinée à être appelée en C, pour une variable de type med_filter déclarée directement et initialisée à MED_FILTER_INIT.

Définition à la ligne 35 du fichier MEDfilterClose.c.

med_err MEDfilterDeAllocate | ( | const int | nfilter,
|  | med_filter * | filter |
| ) |  |  |

Desalloue un tableau de filtre de taille nfilter.

Paramètres:

  | nfilter | Nombre de filtres.

Valeurs retournées:

  | filter | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs.

Renvoie:
  retour négatif en cas d'erreur, Zéro sinon.

Remarques
  MEDfilterDeAllocate appelle MEDfilterClose.

Définition à la ligne 33 du fichier MEDfilterDeAllocate.c.

med_err MEDfilterEntityCr | ( | const med_idt | fid,
|  | const med_int | nbofentity,
|  | const med_int | nbofvaluesperentity,
|  | const med_int | nbofconstituentpervalue,
|  | const med_int | constituentselect,
|  | const med_switch_mode | switchmode,
|  | const med_storage_mode | storagemode,
|  | const char *const | profilename,
|  | const med_int | filterarraysize,
|  | const med_int * | filterarray,
|  | med_filter *const | filter |
| ) |  |  |

Crée un filtre élémentaire en selectionnant les entités pour lesquelles on veut lire/écrire des valeurs. Le tableau filterarray contient des index croissants d'un tableau de profil. Cette sélection permet une lecture/écriture avancée vers/depuis les emplacements mémoire sélectionnés. Elle s'utilise uniquement en mode séquentiel (un seul processus).

Paramètres:

  | fid | Identificateur du fichier.
  | nbofentity | Nombre d'entités de même type géométrique constituant globalement le maillage. Ce paramètre ne prend pas en compte nbofvaluesperentity et nbofconstituentpervalue.
  | nbofvaluesperentity | Nombre de valeurs par entité. Utiliser la valeur 1 pour un filtre d'éléments de maillage. Cela peut être le nombre de points d'intégration utilisé dans un champ résultat.
  | nbofconstituentpervalue | Nombre de constituants par valeur. Cela peut être le nombre de coordonnées des noeuds, le nombre de noeuds d'une connectivité, le nombre de composantes d'un champ résultat.
  | constituentselect | Numéro de constituant des valeurs à filtrer (commence à 1). Le mot clé MED_ALL_CONSTITUENT permet de selectionner tous les constituants. Cela peut être le numéro de coordonnées des noeuds, le numéro de noeuds d'une connectivité, le numéro de composantes d'un champ résultat.
  | switchmode | Mode d'entrelacement utilisé pour le stockage de valeurs med_switch_mode.
  | storagemode | Indique le mode de stockage en mémoire med_storage_mode des valeurs associées au profil utilisé.
  | profilename | Nom du profil utilisé (de taille maximum MED_NAME_SIZE ) ou (MED_NO_PROFILE | MED_ALLENTITIES_PROFILE ) s'il n'y a pas de profil.
  | filterarraysize | Nombre d'entités à filtrer et taille du tableau filterarray. Ne prend pas en compte nbofvaluesperentity et nbofconstituentpervalue.
  | filterarray | Tableau d'index du profil des numéros d'entités associées aux valeurs à sélectionner.

Valeurs retournées:

  | filter | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La déallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).

Renvoie:
  retour négatif en cas d'erreur, Zéro sinon.

La sélection s'opère dans l'espace mémoire d'un seul processus ou les constituants sont stockés en mode MED_FULL_INTERLACE|MED_NO_INTERLACE (med_switch_mode) avec ou sans profil. Le mode de stockage peut être MED_GLOBAL ou MED_COMPACT (med_storage_mode). Les index définis dans le tableau de filtre (filterarray) sont des index relatifs à un tableau profil (eventuellement le tableau virtuel MED_ALLENTITIES_PROFILE ou MED_NO_PROFILE ). La numérotation des index commence à 1. Les index se définissent de la façon suivante :

- Si le filtre opère sur un tableau de valeurs sans profil, les index sont les numéros d'entités utilisées selon la numérotation MED relative au type géométrique de l'entité (équivaut aux index d'un profil MED_ALLENTITIES_PROFILE).
- Si le filtre opère sur un tableau de valeurs avec profil en mode MED_GLOBAL, les index du tableau filterarray indiquent les numéros d'entités à selectionner dans le tableau profil.
- Si le filtre opère sur un tableau de valeurs avec profil en mode MED_COMPACT, les index du tableau filterarray indiquent les numéros d'entités à selectionner dans le tableau profil.

Remarques:
  Le filtre crée prend en compte les paramètres nbofvaluesperentity et nbofconstituentpervalue pour selectionner les emplacements en mémoire.

Définition à la ligne 49 du fichier MEDfilterEntityCr.c.