Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
Référence de la classe Arcane::Materials::IMeshMaterialMngabstract

Interface du gestionnaire des matériaux et des milieux d'un maillage. Plus de détails...

#include <arcane/core/materials/IMeshMaterialMng.h>

+ Graphe de collaboration de Arcane::Materials::IMeshMaterialMng:

Classes

class  IFactory
 

Fonctions membres publiques

virtual IMeshmesh ()=0
 Maillage associé.
 
virtual ITraceMngtraceMng ()=0
 Gestionnaire de traces.
 
virtual MeshMaterialInforegisterMaterialInfo (const String &name)=0
 Enregistre les infos du matériau de nom name.
 
virtual IMeshEnvironmentcreateEnvironment (const MeshEnvironmentBuildInfo &infos)=0
 Créé un milieu avec les infos infos.
 
virtual IMeshBlockcreateBlock (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 IMeshEnvironmentfindEnvironment (const String &name, bool throw_exception=true)=0
 Retourne le milieux de nom name.
 
virtual IMeshBlockfindBlock (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 IMeshMaterialVariablefindVariable (const String &name)=0
 Variable de nom name ou nullptr si aucune de ce nom existe.
 
virtual IMeshMaterialVariablecheckVariable (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 MutexvariableLock ()=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 IMeshMaterialVariableFactoryMngvariableFactoryMng () 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 IMeshMaterialMnggetReference (const MeshHandleOrMesh &mesh_handle, bool create=true)
 Récupère ou créé la référence associée à mesh.
 
static Ref< IMeshMaterialMnggetTrueReference (const MeshHandle &mesh_handle, bool create=true)
 Récupère ou créé la référence associée à mesh.
 

Amis

class MeshMaterialMngFactory
 

Description détaillée

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.

Documentation des fonctions membres

◆ addEnvironmentToBlock()

virtual void Arcane::Materials::IMeshMaterialMng::addEnvironmentToBlock ( IMeshBlock block,
IMeshEnvironment env 
)
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()).

Avertissement
Cette méthode ne modifie pas le groupe block->cells() et c'est donc à l'appelant d'ajouter au groupe les mailles du milieu si besoin.

◆ checkMaterialsInCells()

virtual void Arcane::Materials::IMeshMaterialMng::checkMaterialsInCells ( Integer  max_print = 10)
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.

◆ components()

virtual MeshComponentList Arcane::Materials::IMeshMaterialMng::components ( ) const
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é.

◆ createBlock()

virtual IMeshBlock * Arcane::Materials::IMeshMaterialMng::createBlock ( const MeshBlockBuildInfo infos)
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.

◆ createEnvironment()

virtual IMeshEnvironment * Arcane::Materials::IMeshMaterialMng::createEnvironment ( const MeshEnvironmentBuildInfo infos)
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.

◆ enableCellToAllEnvCellForRunCommand()

virtual void Arcane::Materials::IMeshMaterialMng::enableCellToAllEnvCellForRunCommand ( bool  is_enable,
bool  force_create = false 
)
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()

◆ endCreate()

virtual void Arcane::Materials::IMeshMaterialMng::endCreate ( bool  is_continue = false)
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.

◆ fillWithUsedVariables()

virtual void Arcane::Materials::IMeshMaterialMng::fillWithUsedVariables ( Array< IMeshMaterialVariable * > &  variables)
pure virtual

Remplit le tableau variables avec la liste des variables matériaux utilisés.

La tableau variables est vidé avant l'appel.

◆ findBlock()

virtual IMeshBlock * Arcane::Materials::IMeshMaterialMng::findBlock ( const String name,
bool  throw_exception = true 
)
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.

◆ findEnvironment()

virtual IMeshEnvironment * Arcane::Materials::IMeshMaterialMng::findEnvironment ( const String name,
bool  throw_exception = 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.

◆ forceRecompute()

virtual void Arcane::Materials::IMeshMaterialMng::forceRecompute ( )
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.

◆ getReference()

IMeshMaterialMng * Arcane::Materials::IMeshMaterialMng::getReference ( const MeshHandleOrMesh mesh_handle,
bool  create = true 
)
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().

◆ getTrueReference()

Ref< IMeshMaterialMng > Arcane::Materials::IMeshMaterialMng::getTrueReference ( const MeshHandle mesh_handle,
bool  create = true 
)
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().

◆ recreateFromDump()

virtual void Arcane::Materials::IMeshMaterialMng::recreateFromDump ( )
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.

◆ registerMaterialInfo()

virtual MeshMaterialInfo * Arcane::Materials::IMeshMaterialMng::registerMaterialInfo ( const String name)
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().

◆ removeEnvironmentToBlock()

virtual void Arcane::Materials::IMeshMaterialMng::removeEnvironmentToBlock ( IMeshBlock block,
IMeshEnvironment env 
)
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()).

Avertissement
Cette méthode ne modifie pas le groupe block->cells() et c'est donc à l'appelant d'ajouter au groupe les mailles du milieu si besoin.

◆ setAllocateScalarEnvironmentVariableAsMaterial()

virtual void Arcane::Materials::IMeshMaterialMng::setAllocateScalarEnvironmentVariableAsMaterial ( bool  v)
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.

◆ setDataCompressorServiceName()

virtual void Arcane::Materials::IMeshMaterialMng::setDataCompressorServiceName ( const String name)
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.

◆ setDataInitialisationWithZero()

virtual void Arcane::Materials::IMeshMaterialMng::setDataInitialisationWithZero ( bool  v)
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.

◆ setKeepValuesAfterChange()

virtual void Arcane::Materials::IMeshMaterialMng::setKeepValuesAfterChange ( bool  v)
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.

◆ setMeshModificationNotified()

virtual void Arcane::Materials::IMeshMaterialMng::setMeshModificationNotified ( bool  v)
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.

◆ setModificationFlags()

virtual void Arcane::Materials::IMeshMaterialMng::setModificationFlags ( int  v)
pure virtual

Positionner les flags pour paramêtrer les modifications de matériaux/milieux.

Les flags possibles sont une combinaison de eModificationFlags.

Par exemple:

IMeshMaterialMng* mm = ...;
Interface du gestionnaire des matériaux et des milieux d'un maillage.
virtual void setModificationFlags(int v)=0
Positionner les flags pour paramêtrer les modifications de matériaux/milieux.
@ GenericOptimize
Active les optimisations génériques.
@ OptimizeMultiAddRemove
Active les optimisations pour les ajouts/supressions multiples.

Cette méthode doit être activé avant l'appel à endCreate() pour être prise en compte.

◆ setUseMaterialValueWhenRemovingPartialValue()

virtual void Arcane::Materials::IMeshMaterialMng::setUseMaterialValueWhenRemovingPartialValue ( bool  v)
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 (

Voir également
modificationFlags()). Sans optimisation, c'est la valeur matériau qui est utilisée. Si l'optimisation eModificationFlags::GenericOptimize est active, c'est la valeur milieu.

Cette propriété, si elle vrai, permet d'utiliser la valeur matériau dans tous les cas.

◆ synchronizeMaterialsInCells()

virtual bool Arcane::Materials::IMeshMaterialMng::synchronizeMaterialsInCells ( )
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.

◆ timestamp()

virtual Int64 Arcane::Materials::IMeshMaterialMng::timestamp ( ) const
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.

Note
Actuellement, ce compteur n'est pas sauvegardé lors d'une protection et vaudra donc 0 en reprise.

Documentation des fonctions amies et associées

◆ MeshMaterialMngFactory

friend class MeshMaterialMngFactory
friend

Définition à la ligne 59 du fichier core/materials/IMeshMaterialMng.h.


La documentation de cette classe a été générée à partir des fichiers suivants :