med_err MEDfilterBlockOfEntityCr ( const med_idt  fid,
const med_int  nentity,
const med_int  nvaluesperentity,
const med_int  nconstituentpervalue,
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 par blocs les entités 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.
nentity Nombre d'entités de même type géométrique constituant globalement le maillage. Ce paramètre ne doit pas prendre en compte nvaluesperentity et nconstituentpervalue.
nvaluesperentity 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.
nconstituentpervalue 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 bloc suivant.
count Nombre de blocs à sélectionner (0 est possible).
blocksize Taille de chaque bloc en nombre d'entités.
lastblocksize Taille en nombre d'entités du dernier bloc du dernier processus utilisé (inutilisé si count < 2 ).
Valeurs retournées:
filter Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La désallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate).
Renvoie:
retour négatif en cas d'erreur, Zéro sinon.

La sélection des emplacements mémoire lus/écrits s'opère dans l'espace mémoire du processus appelant. Les entités sélectionnées le sont avec toutes leurs valeurs (nvaluesperentity). Il est possible de sélectionner l'ensemble des constituants par valeur ( MED_ALL_CONSTITUENT ) ou uniquement les constituants n°constituentselect . Les constituants sont lus/écrits en mode MED_FULL_INTERLACE|MED_NO_INTERLACE (med_switch_mode). Le mode de stockage peut être MED_GLOBAL ou MED_COMPACT (med_storage_mode) :

  • En mode MED_GLOBAL, chacun des processus possède l'espace mémoire des valeurs associés à la totalité des entités d'un même type. Dans ce mode, il n'est pas possible d'utiliser un profil utilisateur (car la sélection ne serait plus par bloc). Les seuls profils disponibles sont MED_ALLENTITIES_PROFILE ou MED_NO_PROFILE .
  • En mode MED_COMPACT, chacun des processus possède un espace mémoire contigü pour lire/écrire les valeurs des entités selectionnées par des blocks d'index. Les blocks décrivent les parties du profil à utiliser. Autrement dit, les blocks d'index créés indiquent les numéros d'entités à selectionner dans le tableau profil. La numérotation des index commence à 1. Il est possible d'utiliser un profil utilisateur ou MED_ALLENTITIES_PROFILE. Si le profil MED_ALLENTITIES_PROFILE est utilisé, les index sont directement les numéros des entités.
Remarques
  • Le filtre créé prend en compte les paramètres nvaluesperentity et nconstituentpervalue pour sélectionner les emplacements en mémoire.
  • Si count vaut 0 ou 1, lastblocksize n'est pas utilisé, le paramètre blocksize peut avoir des valeurs différentes par processus.
  • Si count > 2, chaque processus sélectionne count blocks de taille blocksize. En utilisant le stride il est possible de mettre en oeuvre une sélection par block cyclique. Seul le processus de plus haut rang utilisé (dernier processus utilisé) peut définir une valeur non nulle de lastblocksize. Ce paramètre vaudra alors blocksize auquel il sera ajouté un résidu non nul. Par exemple : lastblocksize= blocksize + (nentities - blocksize*nproc*nblocks_pproc).
  • Il est possible de ne pas faire participer certains processus en indiquant un count == 0. Cependant tous les processus du communicateur utilisé doivent faire appel aux même fonctions MED. Il s'agit d'opérations collectives.

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


Généré le Thu Oct 8 14:27:15 2015 pour MED fichier par  doxygen 1.6.1