Interface du gestionnaire des matériaux et des milieux d'un maillage. Plus de détails...
#include <arcane/core/materials/IMeshMaterialMng.h>
Classes | |
class | IFactory |
Fonctions membres publiques | |
virtual IMesh * | mesh ()=0 |
Maillage associé. | |
virtual ITraceMng * | traceMng ()=0 |
Gestionnaire de traces. | |
virtual MeshMaterialInfo * | registerMaterialInfo (const String &name)=0 |
Enregistre les infos du matériau de nom name. | |
virtual IMeshEnvironment * | createEnvironment (const MeshEnvironmentBuildInfo &infos)=0 |
Créé un milieu avec les infos infos. | |
virtual IMeshBlock * | createBlock (const MeshBlockBuildInfo &infos)=0 |
Créé un bloc. | |
virtual void | addEnvironmentToBlock (IMeshBlock *block, IMeshEnvironment *env)=0 |
Ajoute un milieu à un bloc existant. | |
virtual void | removeEnvironmentToBlock (IMeshBlock *block, IMeshEnvironment *env)=0 |
Supprime un milieu à un bloc existant. | |
virtual void | endCreate (bool is_continue=false)=0 |
Indique qu'on a fini de créer les milieux. | |
virtual void | recreateFromDump ()=0 |
Recréé les infos des matériaux et milieux à partir des infos de la protection. | |
virtual void | setKeepValuesAfterChange (bool v)=0 |
Positionne la sauvegarde des valeurs entre deux modifications des matériaux. | |
virtual bool | isKeepValuesAfterChange () const =0 |
Indique si les valeurs des variables sont conservées entre les modifications. | |
virtual void | setDataInitialisationWithZero (bool v)=0 |
Indique comment initialiser les nouvelles valeurs dans les mailles matériaux et milieux. | |
virtual bool | isDataInitialisationWithZero () const =0 |
Indique comment initialiser les nouvelles valeurs dans les mailles matériaux et milieux. | |
virtual void | setMeshModificationNotified (bool v)=0 |
Indique si les milieux et matériaux suivent les changements de topologie dans le maillage. | |
virtual bool | isMeshModificationNotified () const =0 |
Indique si les milieux et matériaux suivent les changements de topologie dans le maillage. | |
virtual void | setModificationFlags (int v)=0 |
Positionner les flags pour paramêtrer les modifications de matériaux/milieux. | |
virtual int | modificationFlags () const =0 |
Flags pour paramêtrer les modifications. | |
virtual void | setAllocateScalarEnvironmentVariableAsMaterial (bool v)=0 |
Positionne l'option indiquant si les variables scalaires milieux sont allouées sur les matériaux. | |
virtual bool | isAllocateScalarEnvironmentVariableAsMaterial () const =0 |
Indique si les variables scalaires milieux sont allouées sur les matériaux. | |
virtual String | name () const =0 |
Nom du gestionnaire. | |
virtual void | setDataCompressorServiceName (const String &name)=0 |
virtual String | dataCompressorServiceName () const =0 |
virtual Nom du service utilisé pour compresser les données | |
virtual ConstArrayView< IMeshMaterial * > | materials () const =0 |
Liste des matériaux. | |
virtual MeshComponentList | materialsAsComponents () const =0 |
Liste des matériaux vus comme composants. | |
virtual ConstArrayView< IMeshEnvironment * > | environments () const =0 |
Liste des milieux. | |
virtual MeshComponentList | environmentsAsComponents () const =0 |
Liste des milieux vus comme composants. | |
virtual MeshComponentList | components () const =0 |
Liste de tous les composants. | |
virtual ConstArrayView< IMeshBlock * > | blocks () const =0 |
Liste des blocs. | |
virtual IMeshEnvironment * | findEnvironment (const String &name, bool throw_exception=true)=0 |
Retourne le milieux de nom name. | |
virtual IMeshBlock * | findBlock (const String &name, bool throw_exception=true)=0 |
Retourne le bloc de nom name. | |
virtual void | fillWithUsedVariables (Array< IMeshMaterialVariable * > &variables)=0 |
Remplit le tableau variables avec la liste des variables matériaux utilisés. | |
virtual IMeshMaterialVariable * | findVariable (const String &name)=0 |
Variable de nom name ou nullptr si aucune de ce nom existe. | |
virtual IMeshMaterialVariable * | checkVariable (IVariable *global_var)=0 |
Variable aux matériaux associé à la variable global global_var (nullptr si aucune) | |
virtual void | dumpInfos (std::ostream &o)=0 |
Ecrit les infos des matériaux et milieux sur le flot o. | |
virtual void | dumpCellInfos (Cell cell, std::ostream &o)=0 |
Ecrit les infos de la maille cell sur le flot o. | |
virtual void | checkValid ()=0 |
Vérifie la validité des structures internes. | |
virtual AllEnvCellVectorView | view (const CellGroup &cells)=0 |
Vue sur les mailles milieux correspondant au groupe cells. | |
virtual AllEnvCellVectorView | view (CellVectorView cells)=0 |
Vue sur les mailles milieux correspondant au groupe cells. | |
virtual AllEnvCellVectorView | view (SmallSpan< const Int32 > cell_local_id)=0 |
Vue sur les mailles milieux correspondant aux mailles de numéro locaux cells_local_id. | |
virtual CellToAllEnvCellConverter | cellToAllEnvCellConverter ()=0 |
Créée une instance pour convertir de 'Cell' en 'AllEnvCell'. | |
virtual void | forceRecompute ()=0 |
Force le recalcul des informations des matériaux. | |
virtual Mutex * | variableLock ()=0 |
Verrou utilisé pour le multi-threading. | |
virtual bool | synchronizeMaterialsInCells ()=0 |
Synchronise les mailles des matériaux. | |
virtual void | checkMaterialsInCells (Integer max_print=10)=0 |
Vérifie que les mailles des matériaux sont cohérentes entre les sous-domaines. | |
virtual void | visitVariables (IFunctorWithArgumentT< IMeshMaterialVariable * > *functor)=0 |
Applique le fonctor functor sur l'ensemble des variables matériaux. | |
virtual Int64 | timestamp () const =0 |
Compteur du nombre de modifications de la liste des matériaux et des milieux. | |
virtual void | setSynchronizeVariableVersion (Integer version)=0 |
Positionne la version de l'implémentation pour la synchronisation des variables matériaux. | |
virtual Integer | synchronizeVariableVersion () const =0 |
Version de l'implémentation pour la synchronisation des variables matériaux. | |
virtual bool | isInMeshMaterialExchange () const =0 |
Vrai si on est en train de faire un échange de maillage avec gestion des matériaux. | |
virtual IMeshMaterialVariableFactoryMng * | variableFactoryMng () const =0 |
Interface de la fabrique de variables. | |
virtual void | enableCellToAllEnvCellForRunCommand (bool is_enable, bool force_create=false)=0 |
Active ou désactive la construction et la mise à jour de la table de "connectivité" CellLocalId -> AllEnvCell pour les RUNCOMMAND. | |
virtual bool | isCellToAllEnvCellForRunCommand () const =0 |
virtual void | setUseMaterialValueWhenRemovingPartialValue (bool v)=0 |
Indique si on utilise la valeur matériau ou milieu lorsqu'on transforme une maille partielle en maille pure. | |
virtual bool | isUseMaterialValueWhenRemovingPartialValue () const =0 |
virtual IMeshMaterialMngInternal * | _internalApi () const =0 |
API interne à Arcane. | |
virtual IMeshMaterialVariableSynchronizer * | _allCellsMatEnvSynchronizer ()=0 |
virtual IMeshMaterialVariableSynchronizer * | _allCellsEnvOnlySynchronizer ()=0 |
Fonctions membres publiques statiques | |
static IMeshMaterialMng * | getReference (const MeshHandleOrMesh &mesh_handle, bool create=true) |
Récupère ou créé la référence associée à mesh. | |
static Ref< IMeshMaterialMng > | getTrueReference (const MeshHandle &mesh_handle, bool create=true) |
Récupère ou créé la référence associée à mesh. | |
Amis | |
class | MeshMaterialMngFactory |
Interface du gestionnaire des matériaux et des milieux d'un maillage.
Cette interface gère les différents composants (IMeshComponent) multi-matériaux d'un maillage ainsi que leurs variables associées. Ces composants peuvent être soit des matériaux (IMeshMaterial), soit des milieux (IMeshEnvironment). Il est possible de récupérer la liste des matériaux via materials() et la liste des milieux par environments(). Il est aussi possible de récupérer l'une de ces deux listes sous forme
L'implémentation actuelle ne gère que les matériaux et les milieux aux mailles.
Une fois cette instance créé, via getReference(), la première chose à faire est d'enregistrer la liste des matériaux via registerMaterialInfo(). Il est ensuite possible de créer chaque milieu en indiquant la liste des matériaux qui le compose via createEnvironment(). Une fois ceci terminé, il faut appeler endCreate() pour terminer l'initialisation. La liste des matériaux et des milieux ne peut être modifiée que lors de l'initialisation. Elle ne doit plus évoluer par la suite.
Toute modification de la liste des mailles d'un milieu ou d'un matériau doit se faire via une instance de MeshMaterialModifier.
Définition à la ligne 57 du fichier core/materials/IMeshMaterialMng.h.
|
pure virtual |
Ajoute un milieu à un bloc existant.
Ajoute le milieu env au bloc block.
La modification d'un bloc ne peut avoir lieu que lors de l'initialisation, (donc avant l'appel à endCreate()).
|
pure virtual |
Vérifie que les mailles des matériaux sont cohérentes entre les sous-domaines.
Cette méthode permet de vérifier que toutes les mailles fantômes de notre sous-domaine ont bien la même liste de matériaux que les mailles propres associées.
En cas d'erreur, on affiche la liste des mailles qui ne sont pas cohérentes et on lève une exception de type FatalErrorException.
max_print indique en cas d'erreur le nombre maximal d'erreur à afficher. S'il est négatif, on affiche toutes les mailles.
|
pure virtual |
Liste de tous les composants.
Cette liste est la concaténation de environmentsAsComponents() et materialsAsComponents(). Elle n'est valide qu'une fois endCreate() appelé.
|
pure virtual |
Créé un bloc.
Créé un bloc avec les infos infos.
La création d'un bloc ne peut avoir lieu que lors de l'initialisation, (donc avant l'appel à endCreate()), mais après la création des milieux.
|
pure virtual |
Créé un milieu avec les infos infos.
La création d'un milieu ne peut avoir lieu que lors de l'initialisation. Les matériaux constituant le milieu doivent avoir auparavant été enregistrés via registerMaterialInfo(). Un matériau peut appartenir à plusieurs milieux.
|
pure virtual |
Active ou désactive la construction et la mise à jour de la table de "connectivité" CellLocalId -> AllEnvCell pour les RUNCOMMAND.
On peut activer également par la variable d'environnement ARCANE_ALLENVCELL_FOR_RUNCOMMAND. En option, on peut forcer la création de la table, ce qui peut être util lors d'un appel tardif de cette méthode par rapport à celui du ForceRecompute()
|
pure virtual |
Indique qu'on a fini de créer les milieux.
L'instance n'est pas utilisable tant que cette méthode n'a pas été appelée.
Si is_continue est vrai, recontruit pour chaque matériau et milieu la liste de leurs mailles à partir des informations de reprise.
|
pure virtual |
Remplit le tableau variables avec la liste des variables matériaux utilisés.
La tableau variables est vidé avant l'appel.
|
pure virtual |
Retourne le bloc de nom name.
Si aucune bloc de ce nom n'existe, retourne null si throw_exception est false et lève une exception si throw_exception vaut true.
|
pure virtual |
Retourne le milieux de nom name.
Si aucune milieu de ce nom n'existe, retourne null si throw_exception est false et lève une exception si throw_exception vaut true.
|
pure virtual |
Force le recalcul des informations des matériaux.
Cette méthode permet de forcer le recalcul les informations sur les mailles mixtes par exemple suite à un changement de maillage. Il s'agit d'une méthode temporaire qui sera supprimée à terme. Les valeurs mixtes sont invalidés après appel à cette méthode.
|
static |
Récupère ou créé la référence associée à mesh.
Si aucun gestionnaire de matériau n'est associé à mesh, il sera créé lors de l'appel à cette méthode si create vaut true. Si create vaut false est qu'aucune gestionnaire n'est associé au maillage, un pointeur nul est retourné. L'instance retournée reste valide tant que le maillage mesh existe.
Définition à la ligne 64 du fichier IMeshMaterialMng.cc.
Références getTrueReference(), et Arcane::MeshHandleOrMesh::handle().
|
static |
Récupère ou créé la référence associée à mesh.
Si aucun gestionnaire de matériau n'est associé à mesh, il sera créé lors de l'appel à cette méthode si create vaut true. Si create vaut false est qu'aucune gestionnaire n'est associé au maillage, un pointeur nul est retourné. L'instance retournée reste valide tant que le maillage mesh existe.
Définition à la ligne 47 du fichier IMeshMaterialMng.cc.
Références ARCANE_FATAL, et Arcane::MeshHandle::isNull().
Référencé par getReference().
|
pure virtual |
Recréé les infos des matériaux et milieux à partir des infos de la protection.
Cette méthode remplace le endCreate() et ne peut être utilisée qu'en reprise et lors de l'initialisation.
|
pure virtual |
Enregistre les infos du matériau de nom name.
Cette opération ne fait que enregistrer les informations d'un matériau. Ces informations sont ensuite utilisés lors de la création du milieu via createEnvironment().
|
pure virtual |
Supprime un milieu à un bloc existant.
Supprime le milieu env au bloc block.
La modification d'un bloc ne peut avoir lieu que lors de l'initialisation, (donc avant l'appel à endCreate()).
|
pure virtual |
Positionne l'option indiquant si les variables scalaires milieux sont allouées sur les matériaux.
Si actif, alors les variables scalaires milieux sont tout de même allouées aussi sur les matériaux. Cela permet de déclarer la même variable à la fois comme une variable matériau et milieu (par exemple MaterialVariableCellReal et EnvironmentVariableCellReal).
Par défaut cette option n'est pas active.
Cette méthode doit être activé avant l'appel à endCreate() pour être prise en compte.
|
pure virtual |
\ brief Nom du service utilisé pour compresser les données lors du forceRecompute().
Si null (le défaut), aucune compression n'est effectuée.
|
pure virtual |
Indique comment initialiser les nouvelles valeurs dans les mailles matériaux et milieux.
Si vrai, les nouvelles valeurs sont initialisées à zéro ou le vecteur nul suivant le type de la donnée. Si faux, l'initialisation se fait avec la valeur globale.
|
pure virtual |
Positionne la sauvegarde des valeurs entre deux modifications des matériaux.
Si actif, les valeurs des variables partielles sont conservées entre deux modifications de la liste des matériaux.
|
pure virtual |
Indique si les milieux et matériaux suivent les changements de topologie dans le maillage.
Cette méthode doit être apellée avant toute création de matériau.
Si v vaut false, les milieux et les matériaux ne sont pas notifiés des changements de la topologie du maillage. Dans ce cas, toutes les données associées sont invalidées.
|
pure virtual |
Positionner les flags pour paramêtrer les modifications de matériaux/milieux.
Les flags possibles sont une combinaison de eModificationFlags.
Par exemple:
Cette méthode doit être activé avant l'appel à endCreate() pour être prise en compte.
|
pure virtual |
Indique si on utilise la valeur matériau ou milieu lorsqu'on transforme une maille partielle en maille pure.
Lors du passage d'une maille partielle en maille pure, il faut recopier la valeur partielle dans la valeur globale. Par défaut, le comportement n'est pas le même suivant que les optimisations sont actives ou non (
Cette propriété, si elle vrai, permet d'utiliser la valeur matériau dans tous les cas.
|
pure virtual |
Synchronise les mailles des matériaux.
Cette méthode permet de synchroniser entre les sous-domaines les mailles de chaque matériau. Elle est collective
Lors de cet appel, le sous-domaine propriétaire de N mailles envoie aux sous-domaines qui possède ces N mailles en tant que mailles fantômes la liste des matériaux qu'il possède. Ces derniers sous-domaines mettent à jour cette liste en ajoutant ou supprimant au besoin les matériaux nécessaires.
Après cet appel, il est garanti que les mailles fantômes d'un sous-domaine ont bien la même liste de matériaux et milieux que cells du sous-domaine qui est propriétaire de ces mailles. Il est notamment possible de synchroniser des variables via MeshMaterialVariableRef::synchronize().
Retourne true si les matériaux de ce sous-domaine ont été modifiés suite à la synchronisation, false sinon.
|
pure virtual |
Compteur du nombre de modifications de la liste des matériaux et des milieux.
Ce compteur augmente à chaque fois que des matériaux sont ajoutés ou supprimés. L'incrément n'est pas forcément constant.
|
friend |
Définition à la ligne 59 du fichier core/materials/IMeshMaterialMng.h.