Interface d'une famille d'entités. Plus de détails...
#include <arcane/core/IItemFamily.h>
Fonctions membres publiques | |
virtual void | build ()=0 |
virtual String | name () const =0 |
Nom de la famille. | |
virtual String | fullName () const =0 |
Nom complet de la famille (avec celui du maillage) | |
virtual eItemKind | itemKind () const =0 |
Genre des entités. | |
virtual Integer | nbItem () const =0 |
Nombre d'entités. | |
virtual Int32 | maxLocalId () const =0 |
virtual ItemInternalArrayView | itemsInternal ()=0 |
Tableau interne des entités. | |
virtual ItemInfoListView | itemInfoListView ()=0 |
Vue sur la liste d'informations sur les entités. | |
virtual IItemFamily * | parentFamily () const =0 |
IItemFamily parent. | |
virtual void | setParentFamily (IItemFamily *parent)=0 |
virtual Integer | parentFamilyDepth () const =0 |
Donne la profondeur d'imbrication du maillage courant. | |
virtual void | addChildFamily (IItemFamily *family)=0 |
virtual IItemFamilyCollection | childFamilies ()=0 |
Familles enfantes de cette famille. | |
virtual VariableItemInt32 & | itemsNewOwner ()=0 |
Variable contenant le numéro du nouveau sous-domaine propriétaire de l'entité. | |
virtual void | checkValid ()=0 |
Vérification de la validité des structures internes (interne) | |
virtual void | checkValidConnectivity ()=0 |
Vérification de la validité des structures internes concernant la connectivité. | |
virtual void | checkUniqueIds (Int64ConstArrayView unique_ids)=0 |
Vérifie que les identifiants unique_ids sont bien uniques pour tous les sous-domaines. | |
virtual ItemVectorView | view (Int32ConstArrayView local_ids)=0 |
Vue sur les entités. | |
virtual ItemVectorView | view ()=0 |
Vue sur toutes les entités de la famille. | |
virtual void | removeItems2 (mesh::ItemDataList &item_data_list)=0 |
Supprime des entités. | |
virtual void | removeNeedRemoveMarkedItems ()=0 |
virtual ItemInternal * | findOneItem (Int64 unique_id)=0 |
Entité de numéro unique unique_id. | |
virtual void | endUpdate ()=0 |
Notifie la fin de modification de la liste des entités. | |
virtual void | partialEndUpdate ()=0 |
Mise à jour partielle. | |
virtual void | partialEndUpdateGroup (const ItemGroup &group)=0 |
Met à jour un groupe. | |
virtual void | partialEndUpdateVariable (IVariable *variable)=0 |
Met à jour une variable. | |
virtual void | notifyItemsOwnerChanged ()=0 |
Notifie que les entités propres au sous-domaine de la famille ont été modifiées. | |
virtual void | notifyItemsUniqueIdChanged ()=0 |
Notifie que les numéros uniques des entités ont été modifiées. | |
virtual IItemConnectivityInfo * | localConnectivityInfos () const =0 |
Informations sur la connectivité locale au sous-domaine pour à cette famille. | |
virtual IItemConnectivityInfo * | globalConnectivityInfos () const =0 |
Informations sur la connectivité globales à tous les sous-domaines. | |
virtual void | setHasUniqueIdMap (bool v)=0 |
Indique si la famille possède une table de conversion uniqueId vers localId. | |
virtual bool | hasUniqueIdMap () const =0 |
Indique si la famille possède une table de conversion uniqueId vers localId. | |
virtual void | itemsUniqueIdToLocalId (Int32ArrayView local_ids, Int64ConstArrayView unique_ids, bool do_fatal=true) const =0 |
Converti un tableau de numéros uniques en numéros locaux. | |
virtual void | itemsUniqueIdToLocalId (Int32ArrayView local_ids, ConstArrayView< ItemUniqueId > unique_ids, bool do_fatal=true) const =0 |
Converti un tableau de numéros uniques en numéros locaux. | |
virtual void | setItemSortFunction (IItemInternalSortFunction *sort_function)=0 |
Positionne la fonction de tri des entités. | |
virtual IItemInternalSortFunction * | itemSortFunction () const =0 |
Fonction de tri des entités. | |
virtual ISubDomain * | subDomain () const =0 |
Sous-domaine associé | |
virtual ITraceMng * | traceMng () const =0 |
Gestionnaire de trace associé | |
virtual IMesh * | mesh () const =0 |
Maillage associé | |
virtual IParallelMng * | parallelMng () const =0 |
Gestionnaire de parallélisme associé | |
virtual ItemGroup | allItems () const =0 |
Groupe de toutes les entités. | |
virtual ItemGroupCollection | groups () const =0 |
Liste des groupes de cette famille. | |
opérations sur des groupes | |
virtual ItemGroup | findGroup (const String &name) const =0 |
Recherche un groupe. | |
virtual ItemGroup | findGroup (const String &name, bool create_if_needed)=0 |
Recherche un groupe. | |
virtual ItemGroup | createGroup (const String &name, Int32ConstArrayView local_ids, bool do_override=false)=0 |
Créé un groupe d'entités de nom name contenant les entités local_ids. | |
virtual ItemGroup | createGroup (const String &name)=0 |
Créé un groupe d'entités de nom name. | |
virtual void | destroyGroups ()=0 |
Supprime tous les groupes de cette famille. | |
virtual ItemGroup | createGroup (const String &name, const ItemGroup &parent, bool do_override=false)=0 |
virtual IVariable * | findVariable (const String &name, bool throw_exception=false)=0 |
Recherche la variable de nom name associée à cette famille. | |
virtual void | usedVariables (VariableCollection collection)=0 |
Ajoute à la collection collection la liste des variables utilisés de cette famille. | |
virtual void | prepareForDump ()=0 |
Prépare les données pour une protection. | |
virtual void | readFromDump ()=0 |
Relit les données à partir d'une protection. | |
virtual void | copyItemsValues (Int32ConstArrayView source, Int32ConstArrayView destination)=0 |
virtual void | copyItemsMeanValues (Int32ConstArrayView first_source, Int32ConstArrayView second_source, Int32ConstArrayView destination)=0 |
virtual void | clearItems ()=0 |
Supprime toutes les entités de la famille. | |
virtual void | compactItems (bool do_sort)=0 |
Compacte les entités. | |
virtual void | computeSynchronizeInfos ()=0 |
Construit les structures nécessaires à la synchronisation. | |
virtual void | getCommunicatingSubDomains (Int32Array &sub_domains) const =0 |
Liste des sous-domaines communiquants pour les entités. | |
opérations de synchronisation d'une variable | |
virtual IVariableSynchronizer * | allItemsSynchronizer ()=0 |
Synchroniseur sur toutes les entités de la famille. | |
virtual void | synchronize (VariableCollection variables)=0 |
Synchronise les variables variables. | |
virtual void | synchronize (VariableCollection variables, Int32ConstArrayView local_ids) |
Synchronise les variables variables sur une liste d'entités. | |
virtual void | reduceFromGhostItems (IVariable *v, IDataOperation *operation)=0 |
Applique une opération de réduction depuis les entités fantômes. | |
virtual void | reduceFromGhostItems (IVariable *v, Parallel::eReduceType operation)=0 |
Applique une opération de réduction depuis les entités fantômes. | |
virtual ItemPairGroup | findAdjencyItems (const ItemGroup &group, const ItemGroup &sub_group, eItemKind link_kind, Integer nb_layer)=0 |
Cherche une liste d'adjacence. | |
virtual IParticleFamily * | toParticleFamily ()=0 |
Retourne l'interface de la famille de particule de cette famille. | |
virtual IDoFFamily * | toDoFFamily () |
Retourne l'interface de la famille de particule de cette famille. | |
virtual void | internalRemoveItems (Int32ConstArrayView local_ids, bool keep_ghost=false)=0 |
Enregistre/Supprime un gestionnaire de connectivité. | |
Permet de répercuter les évolutions de la famille dans les connectivites "externes" ou elle est impliquée. Ces connectivites "externes" sont aujourd'hui les connectivités utilisant les degres de liberté.
| |
virtual void | addSourceConnectivity (IItemConnectivity *connectivity)=0 |
virtual void | addTargetConnectivity (IItemConnectivity *connectivity)=0 |
virtual void | removeSourceConnectivity (IItemConnectivity *connectivity)=0 |
virtual void | removeTargetConnectivity (IItemConnectivity *connectivity)=0 |
virtual void | setConnectivityMng (IItemConnectivityMng *connectivity_mng)=0 |
virtual void | addGhostItems (Int64ConstArrayView unique_ids, Int32ArrayView items, Int32ConstArrayView owners)=0 |
Alloue des entités fantômes. | |
virtual IItemFamilyPolicyMng * | policyMng ()=0 |
Interface des comportements/politiques associées à cette famille. | |
virtual Properties * | properties ()=0 |
Propriétés associées à cette famille. | |
virtual void | resizeVariables (bool force_resize)=0 |
Redimensionne les variables de cette famille. | |
virtual IItemFamilyTopologyModifier * | _topologyModifier ()=0 |
Interface du modificateur de topologie. | |
virtual IItemFamilyInternal * | _internalApi ()=0 |
API interne à Arcane. | |
Amis | |
class | mesh::DynamicMesh |
class | mesh::ItemFamily |
Interface d'une famille d'entités.
Une famille d'entité gère toutes les entités de même genre (Item::kind()) et est attachée à un maillage (IMesh).
Pour tout maillage, il existe une et une seule famille de noeuds (Node), arêtes (Edge), faces (Face) et mailles (Cell). Ces entités sont appelées des entités de base du maillage et les familles associées les familles de base du maillage.
Suivant l'implémentation, il peut aussi y avoir des familles de particules (Particle), de noeuds duaux (DualNode) ou de liens (Link). Suivant la connectivité demandée, une famille peut ne pas avoir d'éléments. Par exemple, par défaut en 3D, les arêtes (Edge) ne sont pas créées.
Chaque entité de la famille possède un identifiant local dans la famille, donnée par Item::localId(). Lorsqu'une famille évolue, cet identifiant peut être modifié. Les Item::localId() des entités d'une famille ne sont pas nécessairement contigus. La méthode maxLocalId() permet de connaître le maximum de ces valeurs. Le compactage permet de garantir que les localId() sont renumérotés de 0 à (nbItem()-1). Pour les entités de base du maillage, le compactage est automatique si le maillage à la propriété "sort" à vrai. Pour les autres, il faut appeler compactItems().
Par défaut, une famille possède une table de conversion des uniqueId() vers les localId(). Cette table doit exister pour permettre les opérations suivantes:
Il est possible d'activer ou désactiver cette table de conversion via la méthode setHasUniqueIdMap() uniquement si aucune entité n'a été créée. Cette opération n'est pas possible sur les familles de noeuds, arêtes, faces et mailles.
Lorsqu'on modifie une famille par ajout ou suppression d'entités, les variables et les groupes qui reposent sur cette famille ne sont plus utilisables tant qu'on a pas fait d'appel à endUpdate(). Il est possible pour des raisons d'optimisation de faire des mise à jour de certaines variables ou groupes via partialEndUpdateVariable() ou partialEndUpdateGroup(). ATTENTION, un appel à l'une de ces 3 méthodes de mise à jour invalide les instances des entités (Item). Pour conserver une référence sur une entité, il faut soit utiliser un groupe (ItemGroup), soit conserver son numéro unique et utiliser itemsUniqueIdToLocalId().
Définition à la ligne 110 du fichier IItemFamily.h.
|
inlinevirtual |
Définition à la ligne 117 du fichier IItemFamily.h.
|
pure virtual |
Alloue des entités fantômes.
Après appel à cette opération, il faut appeler endUpdate() pour notifier à l'instance la fin des modifications. Il est possible d'enchaîner plusieurs allocations avant d'appeler endUpdate().
Les unique_ids sont ceux d'items présents sur un autre sous-domaine, dont le numéro est dans le tableau owners (de même taille que le tableau unique_ids). items doit avoir le même nombre d'éléments que unique_ids et sera remplit en retour avec les numéros locaux des entités créées.
|
pure virtual |
Vérifie que les identifiants unique_ids sont bien uniques pour tous les sous-domaines.
Cette méthode NE vérifie PAS que les unique_ids sont identiques à ceux des entités déjà créées. Elle vérifie uniquement l'ensemble des unique_ids passés en argument par tous les sous-domaines.
Cette opération est collective et doit être appelée par tous les sous-domaines.
|
pure virtual |
Supprime toutes les entités de la famille.
|
pure virtual |
Construit les structures nécessaires à la synchronisation.
Cette opération doit être effectuée à chaque fois que les entités du maillage changent de propriétaire (par exemple lors d'un équilibrage de charge).
Cette opération est collective.
|
pure virtual |
Copie les moyennes des valeurs des entités numéros first_source et second_source dans les entités numéros destination
first_source | liste des localId de la 1ère source |
second_source | liste des localId de la 2ème source |
destination | liste des localId destination |
|
pure virtual |
Copie les valeurs des entités numéros source dans les entités numéros destination
source | liste des localId source |
destination | liste des localId destination |
Créé un groupe d'entités de nom name.
Le groupe ne doit pas déjà exister sinon une exception est levée.
name | nom du groupe |
|
pure virtual |
Créé un groupe d'entités de nom name contenant les entités local_ids.
name | nom du groupe |
local_ids | liste des localId() des entités composant le groupe. |
do_override | si true et q'un groupe de même nom existe déjà, ses éléments sont remplacés par ceux donnés dans local_ids. Si false, alors une exception est levée. |
Référencé par Arcane::ItemGroupImpl::createSubGroup().
|
pure virtual |
Notifie la fin de modification de la liste des entités.
Cette méthode doit être appelée après modification de la liste des entités (après ajout ou suppression). Elle met à jour les groupes et redimensionne les variables sur cette famille.
|
pure virtual |
Cherche une liste d'adjacence.
Cherche la liste d'entités de type sub_kind, liées par le type d'entité link_kind du groupe group, sur un nombre de couche nb_layer.
Si group et sub_group sont de même genre, une entité est toujours dans sa liste d'adjacence, en tant que premier élément.
Si la liste n'existe pas, elle est créée.
Référencé par Arcane::ItemPairGroup::ItemPairGroup().
Recherche un groupe.
name | nom du groupe à rechercher |
Référencé par ItemGroupBuilder< T >::buildGroup(), et Arcane::CartesianMeshImpl::recreateFromDump().
|
pure virtual |
Recherche un groupe.
name | nom du groupe à rechercher |
|
pure virtual |
Entité de numéro unique unique_id.
Si aucune entité avec cet unique_id n'est trouvé, retourne nullptr.
|
pure virtual |
Recherche la variable de nom name associée à cette famille.
Si aucune variable de nom name n'existe, si throw_exception vaut false, retourne 0, sinon lève une exception.
Référencé par Arcane::Hdf5VariableReaderHelper::open().
|
pure virtual |
Variable contenant le numéro du nouveau sous-domaine propriétaire de l'entité.
Cette variable n'est utilisée que pour un repartitionnement du maillage.
Référencé par Arcane::BasicRayMeshIntersection::compute().
|
pure virtual |
Fonction de tri des entités.
L'instance de cette classe reste propriétaire de l'objet retournée qui ne doit pas être détruit ni modifié.
|
pure virtual |
Converti un tableau de numéros uniques en numéros locaux.
Cette opération prend en entrée le tableau unique_ids contenant les numéros uniques des entités du type item_kind et retourne dans local_ids le numéro local à ce sous-domaine correspondant.
La complexité de cette opération dépend de l'implémentation. L'implémentation par défaut utilise une table de hachage. La complexité moyenne est donc constante.
Si do_fatal est vrai, une erreur fatale est générée si une entité n'est pas n'est trouvée, sinon l'élément non trouvé a pour valeur NULL_ITEM_ID.
|
pure virtual |
Converti un tableau de numéros uniques en numéros locaux.
Cette opération prend en entrée le tableau unique_ids contenant les numéros uniques des entités du type item_kind et retourne dans local_ids le numéro local à ce sous-domaine correspondant.
La complexité de cette opération dépend de l'implémentation. L'implémentation par défaut utilise une table de hachage. La complexité moyenne est donc constante.
Si do_fatal est vrai, une erreur fatale est générée si une entité n'est pas n'est trouvée, sinon l'élément non trouvé a pour valeur NULL_ITEM_ID.
Référencé par Arcane::CartesianMeshCoarsening::createCoarseCells().
|
pure virtual |
Taille nécessaire pour dimensionner les variables sur ces entités.
Il s'agit du maximum des Item::localId() des entités de cette famille plus 1.
Référencé par Arcane::BasicRayMeshIntersection::compute(), Arcane::ItemItemGroupComputeFunctor< ItemType >::executeFunctor(), Arcane::InnerFaceItemGroupComputeFunctor::executeFunctor(), Arcane::OuterFaceItemGroupComputeFunctor::executeFunctor(), Arcane::ActiveFaceItemGroupComputeFunctor::executeFunctor(), Arcane::OwnActiveFaceItemGroupComputeFunctor::executeFunctor(), Arcane::InnerActiveFaceItemGroupComputeFunctor::executeFunctor(), Arcane::OuterActiveFaceItemGroupComputeFunctor::executeFunctor(), et Arcane::Variable::resizeFromGroup().
|
pure virtual |
IItemFamily parent.
Issue des imbrications de sous-maillages
|
pure virtual |
Mise à jour partielle.
Met à jour les structures internes après une modification de la famille. Il s'agit d'une version optimisée de endUpdate() lorsqu'on souhaite faire de multiples modifications de maillage. Cette méthode NE met PAS à jour les groupes ni les variables associées à cette famille. Seul le groupe allItems() est disponible. Il est possible de mettre à jour un groupe via partialEndUpdateGroup() et une variable via partialEndUpdateVariable().
Cette méthode est réservée aux utilisateurs expérimentés. Pour les autres, il vaut mieux utiliser endUpdate().
|
pure virtual |
Met à jour un groupe.
Met à jour le groupe group après une modification de la famille. La mise à jour consiste à supprimer du groupe les entités de la famille éventuellement détruites lors de la modification.
|
pure virtual |
Met à jour une variable.
Met à jour la variable variable après une modification de la famille. La mise à jour consiste à redimensionner la variable après un éventuel ajout d'entités.
|
pure virtual |
Applique une opération de réduction depuis les entités fantômes.
Cette opération est l'opération inverse de la synchronisation.
Le sous-domaine récupère les valeurs de la variable v sur les entités qu'il partage avec d'autres sous-domaines et l'opération de réduction operation est appliquée sur cette variable.
|
pure virtual |
Applique une opération de réduction depuis les entités fantômes.
Cette opération est l'opération inverse de la synchronisation.
Le sous-domaine récupère les valeurs de la variable v sur les entités qu'il partage avec d'autres sous-domaines et l'opération de réduction operation est appliquée sur cette variable.
|
pure virtual |
Supprime des entités.
Utilise le graphe (Familles, Connectivités) ItemFamilyNetwork
TODO: A mettre dans l'API interne
|
pure virtual |
Redimensionne les variables de cette famille.
Cette méthode est interne à Arcane.
|
pure virtual |
Indique si la famille possède une table de conversion uniqueId vers localId.
La table de conversion permet d'utiliser les méthodes itemsUniqueIdToLocalId() ou findOneItem().
Cette méthode ne peut être appelée que lorsqu'il n'y a aucune entité de la famille.
Les familles de noeuds, arêtes, faces et mailles du maillage ont obligatoirement une table de conversion.
|
pure virtual |
Positionne la fonction de tri des entités.
La méthode par défaut est de trier les entités par uniqueId() croissant. Si sort_function est nul, c'est la méthode par défaut qui sera utilisée. Sinon, sort_function remplace la fonction précédente qui est détruite (via delete). Le tri est effectué via l'appel à compactItems().
|
pure virtual |
Synchronise les variables variables.
Les variables variables doivent être toutes être issues de cette famille et ne pas être partielles.
|
virtual |
Synchronise les variables variables sur une liste d'entités.
Les variables variables doivent être toutes être issues de cette famille et ne pas être partielles.
Seules les entités listées dans local_ids seront synchronisées. Attention : une entité présente dans cette liste sur un sous-domaine doit être présente dans cette liste pour tout autre sous-domaine qui possède cette entité.
Définition à la ligne 290 du fichier InterfaceImpl.cc.
Références ARCANE_THROW.
|
inlinevirtual |
Retourne l'interface de la famille de particule de cette famille.
L'interface IParticleFamily n'existe que si cette famille est une famille de particules (itemKind()==IK_Particle). Pour les autres genres de famille, 0 est retourné.
Définition à la ligne 648 du fichier IItemFamily.h.
|
pure virtual |
Retourne l'interface de la famille de particule de cette famille.
L'interface IParticleFamily n'existe que si cette famille est une famille de particules (itemKind()==IK_Particle). Pour les autres genres de famille, 0 est retourné.
Référencé par Arcane::BasicRayMeshIntersection::compute().
|
pure virtual |
Vue sur les entités.
Retourne une vue sur les entités de numéro locaux local_ids.
Référencé par Arcane::CartesianMeshCoarsening::createCoarseCells(), Arcane::Materials::ItemMaterialVariableScalar< DataType >::serialize(), et Arcane::Materials::ItemMaterialVariableArray< DataType >::serialize().
|
friend |
Définition à la ligne 112 du fichier IItemFamily.h.
|
friend |
Définition à la ligne 113 du fichier IItemFamily.h.