Il est possible d'utiliser l'API accélérateur de Arcane pour gérer les constituants. Les instances du gestionnaire de matériaux IMeshMaterialMng utilisent le gestionnaire d'exécution (Runner) associé au sous-domaine dont est issu le maillage. La gestion des constituants se fera donc automatiquement avec le même environnement d'exécution que les opérations sur les entités classiques du maillage.
L'utilisation de l'API accélérateur pour les matériaux est similaire à l'utilisation sur les entités du maillage. La macro RUNCOMMAND_MAT_ENUMERATE() permet d'itérer sur un milieu IMeshEnvironment ou un matériau IMeshMaterial.
Les valeurs possibles pour cette macro sont:
Type d'itération | Valeur de l'itérateur | Type du conteneur | Description |
---|---|---|---|
EnvAndGlobalCell | EnvAndGlobalCellIteratorValue | IMeshEnvironment EnvCellVectorView | Itération sur un milieu permettant de récupérer pour chaque itération le numéro local de la maille milieu, l'index de l'itération et le numéro local de la maille globale associée |
MatAndGlobalCell | MatAndGlobalCellIteratorValue | IMeshMaterial MatCellVectorView | Itération sur un matériau permettant de récupérer pour chaque itération le numéro local de la maille matériau, l'index de l'itération et le numéro local de la maille globale associée |
AllEnvCell | AllEnvCell | AllEnvCellVectorView | Itération sur les AllEnvCell |
EnvCell | EnvCellLocalId | IMeshEnvironment EnvCellVectorView | Itération sur un milieu permettant de récupérer pour chaque itération uniquement le numéro local de la maille milieu |
MatCell | MatCellLocalId | IMeshMaterial MatCellVectorView | Itération sur un matériau permettant de récupérer pour chaque itération uniquement le numéro local de la maille matériau |
Si on souhaite uniquement accéder aux numéros locaux des mailles matériaux ou milieux il est préférable pour des raisons de performance d'utiliser la version avec EnvCell
ou MatCell
comme type d'itérateur.
Voici un exemple de code pour itérer sur une maille milieu avec l'information de l'index de l'itération et de la maille globale associée
Voici un autre exemple pour itérer sur les AllEnvCell et récupérer les informations sur les milieux et matériaux présents dans chaque AllEnvCell
La classe ComponentCellVector et les classes qui en dérivent (MatCellVector et EnvCellVector) sont supportées par l'API accélérateur et leur création ou modification utilise l'environnement d'exécution par défaut.
A partir de la version 3.16 de Arcane, si l'environnement d'exécution par défaut est un accélérateur, il est possible de spécifier une politique d'exécution sur l'hôte via la méthode IMeshComponent::setSpecificExecutionPolicy(). Cette politique sera utilisée pour créer et modifier les instances de ComponentCellVector, MatCellVector et EnvCellVector.