14#include "arcane/mesh/DoFFamily.h"
16#include "arcane/core/IMesh.h"
17#include "arcane/core/ItemTypeMng.h"
18#include "arcane/core/ItemTypeInfo.h"
19#include "arcane/core/IExtraGhostItemsBuilder.h"
21#include "arcane/mesh/ExtraGhostItemsManager.h"
30getMaxItemUid(IItemFamily* family)
36 item_family->itemsMap().eachItem([&](Item item) {
37 if (max_uid < item.uniqueId().asInt64())
38 max_uid = item.uniqueId().asInt64();
40 Int64 pmax_uid = family->mesh()->parallelMng()->reduce(Parallel::ReduceMax, max_uid);
73 ARCANE_ASSERT((
dof_uids.size() ==
dof_lids.size()),(
"in addDofs(uids,lids) given uids and lids array must have same size"))
85 ARCANE_ASSERT((
dof_uids.size() ==
dof_lids.size() && (
dof_uids.size() ==
owners.size())),(
"in addGhostDofs given uids, lids and owners array must have same size"))
100 for( Integer i=0; i<
nb_item; ++i ){
103 items[i] =
ii->localId();
106 m_need_prepare_dump =
true;
119 for( Integer i=0; i<
nb_item; ++i ){
123 items[i] =
ii->localId();
126 m_need_prepare_dump =
true;
138 m_need_prepare_dump =
true;
159 debug() <<
"Creating the list of ghosts dofs";
174 <<
" map_nb_bucket=" << itemsMap().
nbBucket()
194ItemInternal* DoFFamily::
195_allocDoF(
const Int64 uid)
199 ItemInternal* item_internal = ItemFamily::_findOrAllocOne(uid,need_alloc);
201 item_internal->setUniqueId(uid);
203 _allocateInfos(item_internal,uid,m_shared_info);
206 item_internal->setOwner(m_sub_domain_id,m_sub_domain_id);
207 return item_internal;
213ItemInternal* DoFFamily::
214_allocDoFGhost(
const Int64 uid,
const Int32 owner)
218 ItemInternal* item_internal = ItemFamily::_findOrAllocOne(uid,need_alloc);
221 item_internal->setUniqueId(uid);
223 _allocateInfos(item_internal,uid,m_shared_info);
226 item_internal->setOwner(owner,m_sub_domain_id);
227 return item_internal;
230ItemInternal* DoFFamily::
231_findOrAllocDoF(
const Int64 uid,
bool& is_alloc)
233 ItemInternal* item_internal = ItemFamily::_findOrAllocOne(uid,is_alloc);
235 item_internal->setUniqueId(uid);
238 _allocateInfos(item_internal,uid,m_shared_info);
240 item_internal->setOwner(m_sub_domain_id,m_sub_domain_id);
242 return item_internal;
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
virtual ItemTypeMng * itemTypeMng() const =0
Gestionnaire de types d'entités associé
virtual Int32 subDomainId() const =0
Numéro du sous-domaine associé à ce gestionnaire.
Structure interne d'une entité de maillage.
Infos sur un type d'entité du maillage.
Gestionnaire des types d'entités de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
DoFVectorView addGhostDoFs(Int64ConstArrayView dof_uids, Int32ArrayView dof_lids, Int32ConstArrayView owners) override
L'ajout de fantomes doit etre suivi d'un appel de computeSynchronizeInfos.
void computeSynchronizeInfos() override
Operation collective.
DoFFamily(IMesh *mesh, const String &name)
La famille ne peut pas etre cree directement, il faut utiliser le DoFManager.
DoFVectorView addDoFs(Int64ConstArrayView dof_uids, Int32ArrayView dof_lids) override
En entree les uids des dofs et on recupere leurs lids.
void internalRemoveItems(Int32ConstArrayView local_ids, bool keep_ghost=false) override
Supprime les entités donnés par local_ids.
void addGhostItems(Int64ConstArrayView unique_ids, Int32ArrayView items, Int32ConstArrayView owners) override
Alloue des entités fantômes.
Integer nbItem() const override
Nombre d'entités.
void _addItems(Int64ConstArrayView unique_ids, Int32ArrayView items)
Construction de l'item Family. C'est le DoFManager qui en a la responsabilite.
UniqueArray< ItemInternal * > m_internals
ItemInternal des entités.
Int32UniqueArray m_free_internals
Liste des ItemInternal de m_item_internals_buffer libres.
ItemVectorView view() override
Vue sur toutes les entités de la famille.
void computeSynchronizeInfos() override
Construit les structures nécessaires à la synchronisation.
ISubDomain * subDomain() const override
Sous-domaine associé
Int32 nbBucket() const
Nombre de buckets.
void resize(Int32 new_size, bool use_prime=false)
Redimensionne la table de hachage.
Int32 count() const
Nombre d'éléments de la table.
Integer size() const
Nombre d'éléments du vecteur.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium) const
Flot pour un message de debug.
TraceMessage info() const
Flot pour un message d'information.
@ IK_DoF
Entité de maillage de genre degre de liberte.