|
◆ mfrblc()
subroutine mfrblc |
( |
integer*8 |
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 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. |
nent | 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. |
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 bloc suivant. |
count | Nombre de blocs à sélectionner (0 est possible). |
bsize | Taille de chaque bloc en nombre d'entités. |
lbsize | Taille en nombre d'entités du dernier bloc du dernier processus utilisé (inutilisé si count < 2 ). |
flt | Filtre sur entités (med_filter) appliqué en lecture/écriture de valeurs. La désallocation est à la charge de l'utilisateur (cf. MEDfilterClose MEDfilterDeAllocate). |
cret | retour négatif en cas d'erreur (MED_ERR_HOWTO), Zéro sinon. |
- Voir également
- MEDfilterBlockOfEntity
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_STMODE ou MED_COMPACT_STMODE (med_storage_mode) :
- En mode MED_GLOBAL_STMODE, 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_STMODE, 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
- Les numéros d'entités selon la numérotation MED implicite sont relatifs au type géométrique de l'entité (la numérotation implicite commence à 1 pour chaque type géométrique différent).
- Les numéros d'entités/index de profil doivent apparaître en ordre croissant.
- Un numéro d'entité/index de profil peut aparaître plusieurs fois (ils sont alors consécutifs).
- Le filtre créé prend en compte les paramètres nvaluesperentity et nconstituentpervalue pour selectionner les emplacements en mémoire en fonction du mode de stockage utilisé (med_storage_mode).
- La sélection des emplacements mémoire lus/écrits s'opère dans l'espace mémoire d'un seul processus.
- Le filtre créé s'utilise uniquement en mode séquentiel (le fid utilisé lors de la lecture/écriture doit provenir d'une ouverture séquentielle).
Définition à la ligne 78 du fichier medfilter.f.
|