# Guide de référence du module fortran MEDfilter

## Fonctions

subroutine | mfrcre (fid, nent, nvent, ncent, cs, swm, stm, pname, fltas, flta, flt, cret)
| 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).
subroutine | mfrall (nflt, flt, cret)
| Alloue un tableau de filtres de taille nfilter.
subroutine | mfrdea (nflt, flt, cret)
| Desalloue un tableau de filtre de taille nfilter.
subroutine | mfrblc (fid, nent, nvent, ncent, cs, swm, stm, pname, start, stride, count, bsize, lbsize, flt, cret)
| 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).

## Documentation des fonctions

subroutine mfrall | ( | integer | nflt,
|  | integer*8:dimension(*) | flt,
|  | integer | cret |
| ) |  |  |

Alloue un tableau de filtres de taille nfilter.

Paramètres:

  | nflt | Nombre de filtres.
  | flt | La déallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).
  | cret | retour négatif en cas d'erreur, Zéro sinon.

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 41 du fichier medfilter.f.

subroutine mfrblc | ( | integer | fid,
|  | integer | nent,
|  | integer | nvent,
|  | integer | ncent,
|  | integer | cs,
|  | integer | swm,
|  | integer | stm,
|  | character*(*) | pname,
|  | integer | start,
|  | integer | stride,
|  | integer | count,
|  | integer | bsize,
|  | integer | lbsize,
|  | integer*8 | flt,
|  | integer | cret |
| ) |  |  |

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.
  | nent | 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.
  | nvent | 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.
  | ncent | 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.
  | cs | 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.
  | swm | Mode d'entrelacement utilisé pour le stockage de valeurs med_switch_mode.
  | stm | Indique le mode de stockage en mémoire med_storage_mode des valeurs associées au profil utilisé.
  | pname | 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).
  | bsize | Taille constante en nombre d'entités de chaque bloc.
  | lbsize | Taille en nombre d'entités du dernier bloc (0 possible).
  | flt | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La déallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).
  | cret | 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 71 du fichier medfilter.f.

subroutine mfrcre | ( | integer | fid,
|  | integer | nent,
|  | integer | nvent,
|  | integer | ncent,
|  | integer | cs,
|  | integer | swm,
|  | integer | stm,
|  | character*(*) | pname,
|  | integer | fltas,
|  | integer:dimension(*) | flta,
|  | integer*8 | flt,
|  | integer | cret |
| ) |  |  |

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.
  | nent | 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.
  | nvent | 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.
  | ncent | 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.
  | cs | 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.
  | swm | Mode d'entrelacement utilisé pour le stockage de valeurs med_switch_mode.
  | stm | Indique le mode de stockage en mémoire med_storage_mode des valeurs associées au profil utilisé.
  | pname | 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.
  | fltas | Nombre d'entités à filtrer et taille du tableau filterarray. Ne prend pas en compte nbofvaluesperentity et nbofconstituentpervalue.
  | flta | Tableau d'index du profil des numéros d'entités associées aux valeurs à sélectionner.
  | flt | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La déallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).
  | cret | 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 20 du fichier medfilter.f.

subroutine mfrdea | ( | integer | nflt,
|  | integer*8:dimension(*) | flt,
|  | integer | cret |
| ) |  |  |

Desalloue un tableau de filtre de taille nfilter.

Paramètres:

  | nflt | Nombre de filtres.
  | flt | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs.
  | cret | retour négatif en cas d'erreur, Zéro sinon.

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 56 du fichier medfilter.f.