14#include "arcane/mesh/ItemConnectivity.h"
15#include "arcane/mesh/ExtraGhostItemsManager.h"
28void ItemConnectivity::
31 ItemVectorView from_items = _sourceFamily()->allItems().own().view();
32 ItemVectorView to_items = _targetFamily()->allItems().own().view();
33 ARCANE_ASSERT((from_items.size() == to_items.size()),
34 (
"Connected families must have the same number of items "))
35 m_item_property.resize(_sourceFamily(), NULL_ITEM_LOCAL_ID);
39 m_item_property[iitem] = to_items[i++].localId();
46void ItemArrayConnectivity::
49 ItemVectorView from_items = _sourceFamily()->allItems().own().view();
50 ItemVectorView to_items = _targetFamily()->allItems().own().view();
51 ARCANE_ASSERT((from_items.size() * m_nb_dof_per_item == to_items.size()),
52 (
"Incorrect connected family size. Should be FromFamily.own.size * nb_element_per_item"))
53 m_item_property.resize(_sourceFamily(), m_nb_dof_per_item, NULL_ITEM_LOCAL_ID);
56 for (
Integer j = 0; j < m_nb_dof_per_item; ++j)
57 m_item_property[iitem][j] = to_items[i++].localId();
64void ItemMultiArrayConnectivity::
67 ItemVectorView from_items = _sourceFamily()->allItems().own().view();
68 DoFVectorView to_items = _targetFamily()->allItems().own().view();
69 Integer total_nb_dof_per_item = 0;
70 for (
Integer i = 0; i < nb_dof_per_item.size(); ++i)
71 total_nb_dof_per_item += nb_dof_per_item[i];
73 ARCANE_ASSERT((total_nb_dof_per_item == to_items.size()),
74 (
"Incorrect connected family size. Should be equal to the sum of array nb_element_per_item elements"))
76 m_item_property.resize(_sourceFamily(), nb_dof_per_item, NULL_ITEM_LOCAL_ID);
80 for (
Integer j = 0; j < nb_dof_per_item[iitem->localId()]; ++j)
81 m_item_property[iitem][j] = to_items[i++].localId();
91 ARCANE_ASSERT((from_items.
size() == to_items.
size()), (
"from_items and to_items arrays must have the same size to update connectivity"))
93 m_item_property.resize(_sourceFamily(), NULL_ITEM_LOCAL_ID);
94 ItemVectorView from_items_view = _sourceFamily()->view(from_items);
95 for (
Integer i = 0; i < from_items_view.
size(); ++i)
96 m_item_property[from_items_view[i]] = to_items[i];
105 ARCANE_ASSERT((from_items.
size() == to_items.
size()), (
"from_items and to_items arrays must have the same size to update connectivity"))
107 m_item_property.resize(_sourceFamily(), m_nb_dof_per_item, NULL_ITEM_LOCAL_ID);
109 std::set<Int32> from_items_set;
110 ItemVectorView from_items_view = _sourceFamily()->view(from_items);
112 if (!from_items_set.insert(from_items[i]).second)
113 ++to_items_index[from_items[i]];
114 m_item_property[from_items_view[i]][to_items_index[from_items[i]]] = to_items[i];
124 ARCANE_ASSERT((from_items.
size() == to_items.
size()),
125 (
"from_items and to_items arrays must have the same size to update connectivity"))
130 nb_connected_element_per_item.
resize(_sourceFamily()->maxLocalId(), 0);
134 nb_connected_element_per_item[from_items[i]] = 0;
136 ++nb_connected_element_per_item[from_items[i]];
137 m_item_property.
resize(_sourceFamily(), nb_connected_element_per_item, NULL_ITEM_LOCAL_ID);
141 std::set<Int32> from_items_set;
142 ItemVectorView from_items_view = _sourceFamily()->view(from_items);
144 if (!from_items_set.insert(from_items[i]).second)
145 ++to_items_index[from_items[i]];
146 m_item_property[from_items_view[i]][to_items_index[from_items[i]]] = to_items[i];
156 m_item_property.resize(_sourceFamily(), NULL_ITEM_LOCAL_ID);
158 if (m_item_property[item] != NULL_ITEM_LOCAL_ID)
159 m_item_property[item] = old_to_new_ids[m_item_property[item]];
170 for (
Integer i = 0; i < m_nb_dof_per_item; ++i) {
171 if (m_item_property[item][i] != NULL_ITEM_LOCAL_ID)
172 m_item_property[item][i] = old_to_new_ids[m_item_property[item][i]];
184 for (
Integer i = 0; i < m_item_property.dim2Sizes()[item.localId()]; ++i) {
185 if (m_item_property[item][i] != NULL_ITEM_LOCAL_ID)
186 m_item_property[item][i] = old_to_new_ids[m_item_property[item][i]];
void resize(Int64 s)
Changes the number of elements in the array to s.
constexpr Integer size() const noexcept
Number of elements in the array.
virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items)
Update of the connectivity.
virtual void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids)
Notifies the connectivity that the target family has been compacted.
virtual void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids)
Notifies the connectivity that the target family has been compacted.
virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items)
Update of the connectivity.
virtual void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids)
Notifies the connectivity that the target family has been compacted.
virtual void updateConnectivity(Int32ConstArrayView from_items, Int32ConstArrayView to_items)
Update of the connectivity.
View on a vector of entities.
Int32 size() const
Number of elements in the vector.
ItemVectorViewT< DoF > DoFVectorView
View over a vector of degrees of freedom.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
ConstArrayView< Int32 > Int32ConstArrayView
C equivalent of a 1D array of 32-bit integers.
SharedArray< Integer > IntegerSharedArray
Dynamic 1D array of integers.
ConstArrayView< Integer > IntegerConstArrayView
C equivalent of a 1D array of integers.