Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemConnectedEnumerator.h
Aller à la documentation de ce fichier.
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ItemConnectedEnumerator.h (C) 2000-2023 */
9/* */
10/* Enumérateurs sur les entités connectées du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMCONNECTEDENUMERATOR_H
13#define ARCANE_ITEMCONNECTEDENUMERATOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/Item.h"
18#include "arcane/core/ItemConnectedEnumeratorBase.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22/*!
23 * \file ItemConnectedEnumerator.h
24 *
25 * \brief Types et macros pour itérer sur les entités du maillage connectées
26 * à une autre entité.
27 */
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36/*!
37 * \brief Enumérateur sur une liste d'entités connectées à une autre.
38 */
41{
42 friend class ItemGroup;
43 friend class ItemVector;
44 friend class ItemVectorView;
45 friend class ItemPairEnumerator;
46 template<int Extent> friend class ItemConnectedListView;
47 // NOTE: Normalement il suffirait de faire cela:
48 // template<class T> friend class ItemConnectedEnumeratorBase;
49 // mais cela ne fonctionne pas avec GCC 8. On fait donc la spécialisation
50 // à la main
59
60 public:
61
63
64 public:
65
66 ItemConnectedEnumerator() = default;
67
68 public:
69
71 : BaseClass(rhs)
72 {}
73
74 template<int E> ItemConnectedEnumerator(const ItemConnectedListView<E>& rhs)
76
77 protected:
78
80 : BaseClass(s, local_ids)
81 {}
82
83 private:
84
85 ItemConnectedEnumerator(const Int32* local_ids, Int32 index, Int32 n, Item item_base)
86 : BaseClass(local_ids, index, n, item_base)
87 {}
88};
89
90/*---------------------------------------------------------------------------*/
91/*---------------------------------------------------------------------------*/
92/*!
93 * \brief Enumérateur sur une liste typée d'entités connectées de type \a ItemType
94 */
95template<typename ItemType>
97: public ItemConnectedEnumeratorBaseT<ItemType>
98{
100
101 public:
102
103 ItemConnectedEnumeratorT() = default;
104 template<int E> ItemConnectedEnumeratorT(const ItemConnectedListView<E>& rhs) : BaseClass(rhs){}
106
107 private:
108
110 : BaseClass(s,local_ids){}
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116/*!
117 * \def ENUMERATE_CONNECTED_(type,iterator_name,item,connectivity_func)
118 *
119 * \brief Macro pour itérer sur une liste d'entité connectées à une autre entité.
120 *
121 * \warning API expérimentale. Ne pas utiliser en dehors de %Arcane.
122 *
123 * \param type type de l'entité connectée (Node, Face, Cell, Edge, Particle, DoF )
124 * \param iterator_name nom de l'énumérateur
125 * \param item nom de l'entité dont on souhaite avoir les connectivités
126 * \param connectivity_func méthode de \a item pour récupérer la connectivité.
127 *
128 * Exemple pour itérer sur les noeuds de la mailles:
129 * \code
130 * Arcane::Cell cell = ...;
131 * ENUMERATE_CONNECTED_(Node,inode,cell,nodes()){
132 * Arcane::Node node(*inode);
133 * info() << "Node local_id=" << node.localId()
134 * }
135 * \endcode
136 */
137#ifdef ARCANE_USE_SPECIFIC_ITEMCONNECTED
138
139#define ENUMERATE_CONNECTED_(type,iterator_name,item,connectivity_func) \
140 for( ::Arcane::ItemConnectedEnumeratorT< type > iterator_name( (item) . connectivity_func ); iterator_name . hasNext(); ++iterator_name )
141
142#else
143
144#define ENUMERATE_CONNECTED_(type,iterator_name,item,connectivity_func) \
145 for( ::Arcane::ItemEnumeratorT< type > iterator_name( (item) . connectivity_func ); iterator_name . hasNext(); ++iterator_name )
146
147#endif
148
149/*---------------------------------------------------------------------------*/
150/*---------------------------------------------------------------------------*/
151
152} // End namespace
153
154/*---------------------------------------------------------------------------*/
155/*---------------------------------------------------------------------------*/
156
157#endif
Maille d'un maillage.
Definition Item.h:1178
classe degré de liberté.
Definition Item.h:1488
Arête d'une maille.
Definition Item.h:798
Face d'une maille.
Definition Item.h:932
Classe de base typeé des énumérateurs sur une liste d'entité connectées.
constexpr Int32 index() const
Indice courant de l'énumérateur.
Enumérateur sur une liste typée d'entités connectées de type ItemType.
Enumérateur sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Enumérateur sur un tableau de tableaux d'entités du maillage.
Vue sur un vecteur d'entités.
Vecteur d'entités.
Definition ItemVector.h:59
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
Definition Item.h:714
Classe de base d'un élément de maillage.
Definition Item.h:83
Noeud d'un maillage.
Definition Dom.h:204
Particule.
Definition Item.h:1383
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-