12#ifndef ARCANE_MESH_ITEMCONNECTIVITY_H
13#define ARCANE_MESH_ITEMCONNECTIVITY_H
17#include "arcane/utils/FatalErrorException.h"
18#include "arcane/utils/ITraceMng.h"
20#include "arcane/IItemFamily.h"
21#include "arcane/ItemVector.h"
22#include "arcane/VariableTypes.h"
23#include "arcane/ItemInternal.h"
24#include "arcane/IItemConnectivity.h"
25#include "arcane/ConnectivityItemVector.h"
27#include "arcane/mesh/DoFFamily.h"
28#include "arcane/mesh/ItemProperty.h"
51 , m_name(connectivity_name)
53 m_families.add(m_source_family);
54 m_families.add(m_target_family);
79 IItemFamily* _sourceFamily()
const {
return m_source_family;}
80 IItemFamily* _targetFamily()
const {
return m_target_family;}
84 IItemFamily* m_source_family;
85 IItemFamily* m_target_family;
86 SharedArray<IItemFamily*> m_families;
118 ARCANE_ASSERT((
con_items.accessor()==
this),(
"Bad connectivity"));
119 return con_items.setItem(m_item_property[item]);
125 auto apply = [
this,item](ConnectivityItemVector& civ){this->_connectedItems(item,civ);};
129 virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items);
133 const Item operator() (ItemLocalId item)
const
142 if (m_item_property[item] != NULL_ITEM_LOCAL_ID)
143 return _targetFamily()->itemInfoListView()[m_item_property[item]];
147 ItemScalarProperty<Int32>& itemProperty() {
return m_item_property;}
149 void updateItemProperty(
const ItemScalarProperty<Int32>& item_property) {m_item_property.copy(item_property);}
159 ARCANE_ASSERT((index==0),(
"Invalid value for index"))
160 return m_item_property[
lid];
185template <
class FromItemType,
class ToItemType>
191 typedef typename FromItemType::LocalIdType FromLocalIdType;
203 const ToItemType operator()(FromLocalIdType item)
const
205 return ItemConnectivity::operator ()(item).itemBase();
245 virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items);
249 ItemArrayProperty<Int32>& itemProperty() {
return m_item_property; }
251 void updateItemProperty(
const ItemArrayProperty<Int32>& item_property) {m_item_property.copy(item_property);}
253 ItemVectorView operator() (ItemLocalId item,ConnectivityItemVector& con_items)
const
255 ARCANE_ASSERT((con_items.accessor()==
this),(
"Bad connectivity"));
256 return con_items.resizeAndCopy(m_item_property[item]);
259 ConnectivityItemVectorCatalyst operator()(ItemLocalId item)
const
261 auto set = [
this](ConnectivityItemVector& civ)
mutable{civ = ConnectivityItemVector((ItemConnectivity*)
this);};
262 auto apply = [
this,item](ConnectivityItemVector& civ){this->operator ()(item,civ);};
269 return m_nb_dof_per_item;
274 return m_item_property[
lid][index];
288 Integer m_nb_dof_per_item;
299template<
class FromItemType,
class ToItemType>
305 typedef typename FromItemType::LocalIdType FromLocalIdType;
317 return ItemArrayConnectivity::operator()(item,
con_items);
322 return ItemArrayConnectivity::operator()(item);
360 virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items);
364 ItemMultiArrayProperty<Int32>& itemProperty() {
return m_item_property;}
366 void updateItemProperty(ItemMultiArrayProperty<Int32>& item_property) {m_item_property.copy(item_property);}
368 ItemVectorView operator() (ItemLocalId item,ConnectivityItemVector& con_items)
const
370 ARCANE_ASSERT((con_items.accessor()==
this),(
"Bad connectivity"));
371 return con_items.resizeAndCopy(m_item_property[item]);
374 ConnectivityItemVectorCatalyst operator()(ItemLocalId item)
const
376 auto set = [
this](ConnectivityItemVector& civ)
mutable{civ = ConnectivityItemVector((ItemConnectivity*)
this);};
377 auto apply = [
this,item](ConnectivityItemVector& civ){this->operator ()(item,civ);};
384 return m_item_property[
lid].size();
389 return m_item_property[
lid][index];
413template<
class FromItemType,
class ToItemType>
419 typedef typename FromItemType::LocalIdType FromLocalIdType;
433 return ItemMultiArrayConnectivity::operator() (item,
con_items);
438 return ItemMultiArrayConnectivity::operator() (item);
Classe abstraite de gestion des connectivités.
virtual ConstArrayView< IItemFamily * > families() const
Liste des familles (sourceFamily() + targetFamily())
virtual void _initializeStorage(ConnectivityItemVector *)
Implémente l'initialisation de civ pour cette connectivitée.
virtual IItemFamily * sourceFamily() const
Famille source.
virtual const String & name() const
Nom de la connectivité
virtual IItemFamily * targetFamily() const
Famille cible.
Gère la récupération des informations de connectivité.
Interface pour gérer une connectivité.
Interface d'une famille d'entités.
virtual void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids)
Notifie la connectivité que la famille source est compactée.
virtual Int32 connectedItemLocalId(ItemLocalId lid, Integer index) const
localId() de la index-ième entitée connectées à l'entité source de numéro local lid
virtual Integer nbConnectedItem(ItemLocalId lid) const
Nombre d'entité connectées à l'entité source de numéro local lid.
virtual ItemVectorView _connectedItems(ItemLocalId item, ConnectivityItemVector &con_items) const
Remplit con_items avec les entités connectées à item.
Connectivite item->item, exactement 1 item connecté par item (0 non admis).
virtual void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids)
Notifie la connectivité que la famille source est compactée.
virtual Integer nbConnectedItem(ItemLocalId lid) const
Nombre d'entité connectées à l'entité source de numéro local lid.
virtual Int32 connectedItemLocalId(ItemLocalId lid, Integer index) const
localId() de la index-ième entitée connectées à l'entité source de numéro local lid
virtual ItemVectorView _connectedItems(ItemLocalId item, ConnectivityItemVector &con_items) const
Remplit con_items avec les entités connectées à item.
Index d'un Item dans une variable.
virtual Int32 connectedItemLocalId(ItemLocalId lid, Integer index) const
localId() de la index-ième entitée connectées à l'entité source de numéro local lid
virtual ItemVectorView _connectedItems(ItemLocalId item, ConnectivityItemVector &con_items) const
Remplit con_items avec les entités connectées à item.
virtual Integer nbConnectedItem(ItemLocalId lid) const
Nombre d'entité connectées à l'entité source de numéro local lid.
virtual void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids)
Notifie la connectivité que la famille source est compactée.
Vue sur un vecteur d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Type temporaire automatiquement casté en ConnectivityItemVector.