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

Tableau de listes d'entités. Plus de détails...

#include <arcane/core/ItemPairGroup.h>

+ Graphe d'héritage de Arcane::ItemPairGroup:
+ Graphe de collaboration de Arcane::ItemPairGroup:

Classes

class  CustomFunctorWrapper
 

Types publics

typedef IFunctorWithArgumentT< ItemPairGroupBuilder & > CustomFunctor
 Functor pour un calcul personnalisé des connectivités.
 

Fonctions membres publiques

 ItemPairGroup ()
 Construit un tableau vide.
 
 ItemPairGroup (ItemPairGroupImpl *prv)
 Construit un groupe à partir de la représentation interne prv.
 
 ItemPairGroup (const ItemGroup &group, const ItemGroup &sub_item_group, eItemKind link_kind)
 Construit une instance en spécifiant le voisinage via les entités de genre link_kind.
 
 ItemPairGroup (const ItemGroup &group, const ItemGroup &sub_item_group, CustomFunctor *functor)
 Construit une instance avec un fonctor particulier.
 
 ItemPairGroup (const ItemPairGroup &from)
 Constructeur de recopie.
 
const ItemPairGroupoperator= (const ItemPairGroup &from)
 
bool null () const
 true is le groupe est le groupe nul
 
eItemKind itemKind () const
 Type des entités du groupe.
 
eItemKind subItemKind () const
 Type des sous-entités du groupe.
 
ItemPairGroupImplinternal () const
 Retourne l'implémentation du groupe.
 
IItemFamilyitemFamily () const
 Famille d'entité à laquelle appartient ce groupe (0 pour une liste nulle)
 
IItemFamilysubItemFamily () const
 Famille d'entité à laquelle appartient ce groupe (0 pour une liste nulle)
 
IMeshmesh () const
 Maillage auquel appartient cette liste (0 pour une liste nulle)
 
const ItemGroupitemGroup () const
 Groupe des items initiaux.
 
const ItemGroupsubItemGroup () const
 Groupe des items finaux (après rebond)
 
void invalidate (bool force_recompute=false)
 Invalide la liste.
 
void checkValid ()
 Vérification interne de la validité du groupe.
 
ItemPairEnumerator enumerator () const
 

Fonctions membres protégées statiques

static ItemPairGroupImpl_check (ItemPairGroupImpl *impl, eItemKind ik, eItemKind aik)
 Retourne le groupe impl s'il est du genre kt, le groupe nul sinon.
 

Attributs protégés

AutoRefT< ItemPairGroupImplm_impl
 Représentation interne du groupe.
 

Description détaillée

Tableau de listes d'entités.

Cette classe permet de gérer une liste d'entités associée à chaque entité d'un groupe d'entité (ItemGroup). Par exemple pour chaque noeud d'un groupe l'ensemble des mailles connectées à ce noeud par les faces.

Cette classe a une sémantique par référence de la même manière que la classe ItemGroup.

Arcane fournit un ensemble prédéfini de méthodes pour calculer les connectivités des entités connectées à d'autres entités par un genre spécifique d'entité. Pour utiliser ces méthodes il faut utiliser le constructeur suivant: ItemPairGroup(const ItemGroup& group,const ItemGroup& sub_item_group, eItemKind link_kind). link_kind indique alors le genre d'entité qui le lien. Par exemple:

CellGroup cells1;
CellGroup cells2;
// g1 contient pour chaque maille de \a cells1 les mailles qui lui
// sont connectés par les noeuds et qui appartiennent au groupe \a cells2
CellCellGroup g1(cells1,cells2,IK_Node);
ENUMERATE_ITEMPAIR(Cell,Cell,iitem,ad_list){
Cell cell = *iitem;
// Itère sur les mailles connectées à 'cell'
ENUMERATE_SUB_ITEM(Cell,isubitem,iitem){
Cell sub_cell = *iitem;
...
}
}
#define ENUMERATE_ITEMPAIR(_item_type1, _item_type2, _name, _array)
Enumérateur sur un ItemPairGroup.
#define ENUMERATE_SUB_ITEM(_item_type, _name, _parent_item)
Enumérateur sur sous-élément d'un ItemPairGroup.
Maille d'un maillage.
Definition Item.h:1178
@ IK_Node
Entité de maillage de genre noeud.
ItemPairGroupT< Cell, Cell > CellCellGroup
Groupe de mailles connectées à des mailles.
Definition ItemTypes.h:158

Il est possible pour l'utilisateur de spécifier une manière particulière de calcul des connectivités en spécifiant un fonctor de type ItemPairGroup::CustomFunctor comme argument du constructeur.

Avertissement
Le fonctor passé en argument doit être alloué par l'opérateur new et sera détruit en même temps que le ItemPairGroup associé.

Voici un exemple complet qui calcule les mailles connectées aux mailles via les faces:

auto f = [](ItemPairGroupBuilder& builder)
{
const ItemPairGroup& pair_group = builder.group();
const ItemGroup& items = pair_group.itemGroup();
const ItemGroup& sub_items = pair_group.subItemGroup();
// Marque toutes les entités qui n'ont pas le droit d'appartenir à
// la liste des connectivités car elles ne sont pas dans \a sub_items;
std::set<Int32> allowed_ids;
ENUMERATE_CELL(iitem,sub_items) {
allowed_ids.insert(iitem.itemLocalId());
}
Int32Array local_ids;
local_ids.reserve(8);
// Liste des entités déjà traitées pour la maille courante
std::set<Int32> already_in_list;
ENUMERATE_CELL(icell,items){
Cell cell = *icell;
local_ids.clear();
Int32 current_local_id = icell.itemLocalId();
already_in_list.clear();
// Pour ne pas s'ajouter à sa propre liste de connectivité
already_in_list.insert(current_local_id);
for( FaceEnumerator iface(cell.faces()); iface.hasNext(); ++iface ){
Face face = *iface;
for( CellEnumerator isubcell(face.cells()); isubcell.hasNext(); ++isubcell ){
const Int32 sub_local_id = isubcell.itemLocalId();
// Vérifie qu'on est dans la liste des mailles autorisées et qu'on
// n'a pas encore été traité.
if (allowed_ids.find(sub_local_id)==allowed_ids.end())
continue;
if (already_in_list.find(sub_local_id)!=already_in_list.end())
continue;
// Cette maille doit être ajoutée. On la marque pour ne pas
// la parcourir et on l'ajoute à la liste.
already_in_list.insert(sub_local_id);
local_ids.add(sub_local_id);
}
}
builder.addNextItem(local_ids);
}
};
// Créé un groupe qui calcule les connectivités sur toutes les mailles.
ItemPairGroupT<Cell,Cell> ad_list(allCells(),allCells(),functor::makePointer(f));
#define ENUMERATE_CELL(name, group)
Enumérateur générique d'un groupe de mailles.
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Definition Item.h:1258
Face d'une maille.
Definition Item.h:932
CellConnectedListViewType cells() const
Liste des mailles de la face.
Definition Item.h:1012
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Construction des listes des entités des ItemPairGroup.
Tableau de listes d'entités.
const ItemGroup & itemGroup() const
Groupe des items initiaux.
const ItemGroup & subItemGroup() const
Groupe des items finaux (après rebond)
Classe de base des vecteurs 1D de données.
void reserve(Int64 new_capacity)
Réserve le mémoire pour new_capacity éléments.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
void clear()
Supprime les éléments du tableau.
ItemEnumeratorT< Face > FaceEnumerator
Enumérateurs sur des faces.
Definition ItemTypes.h:265
ItemEnumeratorT< Cell > CellEnumerator
Enumérateurs sur des mailles.
Definition ItemTypes.h:271

Définition à la ligne 41 du fichier ItemPairGroup.h.

Documentation des définitions de type membres

◆ CustomFunctor

Functor pour un calcul personnalisé des connectivités.

Définition à la ligne 47 du fichier ItemPairGroup.h.

Documentation des constructeurs et destructeur

◆ ItemPairGroup() [1/5]

Arcane::ItemPairGroup::ItemPairGroup ( )

Construit un tableau vide.

Définition à la ligne 196 du fichier ItemPairGroup.cc.

◆ ItemPairGroup() [2/5]

Arcane::ItemPairGroup::ItemPairGroup ( ItemPairGroupImpl prv)

Construit un groupe à partir de la représentation interne prv.

Définition à la ligne 187 du fichier ItemPairGroup.cc.

◆ ItemPairGroup() [3/5]

Arcane::ItemPairGroup::ItemPairGroup ( const ItemGroup group,
const ItemGroup sub_item_group,
eItemKind  link_kind 
)

Construit une instance en spécifiant le voisinage via les entités de genre link_kind.

Définition à la ligne 159 du fichier ItemPairGroup.cc.

Références Arcane::IItemFamily::findAdjencyItems(), internal(), Arcane::ItemGroup::itemFamily(), et m_impl.

◆ ItemPairGroup() [4/5]

Arcane::ItemPairGroup::ItemPairGroup ( const ItemGroup group,
const ItemGroup sub_item_group,
CustomFunctor functor 
)

Construit une instance avec un fonctor particulier.

Définition à la ligne 172 du fichier ItemPairGroup.cc.

Références ARCANE_CHECK_POINTER, et m_impl.

◆ ItemPairGroup() [5/5]

Arcane::ItemPairGroup::ItemPairGroup ( const ItemPairGroup from)
inline

Constructeur de recopie.

Définition à la ligne 64 du fichier ItemPairGroup.h.

◆ ~ItemPairGroup()

virtual Arcane::ItemPairGroup::~ItemPairGroup ( )
inlinevirtual

Définition à la ligne 72 du fichier ItemPairGroup.h.

Documentation des fonctions membres

◆ _check()

static ItemPairGroupImpl * Arcane::ItemPairGroup::_check ( ItemPairGroupImpl impl,
eItemKind  ik,
eItemKind  aik 
)
inlinestaticprotected

Retourne le groupe impl s'il est du genre kt, le groupe nul sinon.

Définition à la ligne 133 du fichier ItemPairGroup.h.

Références Arcane::ItemPairGroupImpl::itemKind(), et Arcane::ItemPairGroupImpl::subItemKind().

◆ checkValid()

void Arcane::ItemPairGroup::checkValid ( )
inline

Vérification interne de la validité du groupe.

Définition à la ligne 119 du fichier ItemPairGroup.h.

◆ enumerator()

ItemPairEnumerator Arcane::ItemPairGroup::enumerator ( ) const

Définition à la ligne 205 du fichier ItemPairGroup.cc.

◆ internal()

ItemPairGroupImpl * Arcane::ItemPairGroup::internal ( ) const
inline

Retourne l'implémentation du groupe.

Avertissement
Cette méthode retourne un pointeur sur la représentation interne du groupe et ne doit pas être utilisée en dehors d'Arcane.

Définition à la ligne 92 du fichier ItemPairGroup.h.

Référencé par ItemPairGroup(), Arcane::operator!=(), et Arcane::operator==().

◆ invalidate()

void Arcane::ItemPairGroup::invalidate ( bool  force_recompute = false)
inline

Invalide la liste.

Définition à la ligne 113 du fichier ItemPairGroup.h.

◆ itemFamily()

IItemFamily * Arcane::ItemPairGroup::itemFamily ( ) const
inline

Famille d'entité à laquelle appartient ce groupe (0 pour une liste nulle)

Définition à la ligne 95 du fichier ItemPairGroup.h.

◆ itemGroup()

const ItemGroup & Arcane::ItemPairGroup::itemGroup ( ) const
inline

Groupe des items initiaux.

Définition à la ligne 104 du fichier ItemPairGroup.h.

◆ itemKind()

eItemKind Arcane::ItemPairGroup::itemKind ( ) const
inline

Type des entités du groupe.

Définition à la ligne 79 du fichier ItemPairGroup.h.

◆ mesh()

IMesh * Arcane::ItemPairGroup::mesh ( ) const
inline

Maillage auquel appartient cette liste (0 pour une liste nulle)

Définition à la ligne 101 du fichier ItemPairGroup.h.

◆ null()

bool Arcane::ItemPairGroup::null ( ) const
inline

true is le groupe est le groupe nul

Définition à la ligne 77 du fichier ItemPairGroup.h.

◆ operator=()

const ItemPairGroup & Arcane::ItemPairGroup::operator= ( const ItemPairGroup from)
inline

Définition à la ligne 67 du fichier ItemPairGroup.h.

◆ subItemFamily()

IItemFamily * Arcane::ItemPairGroup::subItemFamily ( ) const
inline

Famille d'entité à laquelle appartient ce groupe (0 pour une liste nulle)

Définition à la ligne 98 du fichier ItemPairGroup.h.

◆ subItemGroup()

const ItemGroup & Arcane::ItemPairGroup::subItemGroup ( ) const
inline

Groupe des items finaux (après rebond)

Définition à la ligne 107 du fichier ItemPairGroup.h.

◆ subItemKind()

eItemKind Arcane::ItemPairGroup::subItemKind ( ) const
inline

Type des sous-entités du groupe.

Définition à la ligne 81 du fichier ItemPairGroup.h.

Documentation des données membres

◆ m_impl

AutoRefT<ItemPairGroupImpl> Arcane::ItemPairGroup::m_impl
protected

Représentation interne du groupe.

Définition à la ligne 128 du fichier ItemPairGroup.h.

Référencé par ItemPairGroup(), et ItemPairGroup().


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