Arcane  v3.16.0.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>

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:1191
ItemGroupT< Cell > CellGroup
Groupe de mailles.
Definition ItemTypes.h:183
@ 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.
void clear()
Supprime les éléments du tableau.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
void reserve(Int64 new_capacity)
Réserve le mémoire pour new_capacity éléments.
FaceConnectedListViewType faces() const
Liste des faces de la maille.
Definition Item.h:1272
Face d'une maille.
Definition Item.h:944
CellConnectedListViewType cells() const
Liste des mailles de la face.
Definition Item.h:1025
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Construction des listes des entités des ItemPairGroup.
const ItemGroup & itemGroup() const
Groupe des items initiaux.
ItemPairGroup()
Construit un tableau vide.
const ItemGroup & subItemGroup() const
Groupe des items finaux (après rebond)
ItemEnumeratorT< Face > FaceEnumerator
Enumérateurs sur des faces.
Definition ItemTypes.h:265
ItemEnumeratorT< Cell > CellEnumerator
Enumérateurs sur des mailles.
Definition ItemTypes.h:271
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:214
std::int32_t Int32
Type entier signé sur 32 bits.

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.

Références m_impl.

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

◆ 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.

Références m_impl.

◆ 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::findAdjacencyItems(), internal(), Arcane::ItemGroup::itemFamily(), ItemPairGroup(), 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.

Références ItemPairGroup(), et m_impl.

◆ ~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.

◆ checkValid()

void Arcane::ItemPairGroup::checkValid ( )
inline

Vérification interne de la validité du groupe.

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

Références m_impl.

◆ 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érences m_impl.

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.

Références m_impl.

◆ 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.

Références m_impl.

◆ itemGroup()

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

Groupe des items initiaux.

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

Références m_impl.

◆ itemKind()

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

Type des entités du groupe.

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

Références m_impl.

◆ 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.

Références m_impl.

◆ null()

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

true is le groupe est le groupe nul

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

Références m_impl.

◆ 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.

Références m_impl.

◆ subItemGroup()

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

Groupe des items finaux (après rebond)

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

Références m_impl.

◆ subItemKind()

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

Type des sous-entités du groupe.

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

Références m_impl.

Documentation des données membres

◆ m_impl

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

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