12#ifndef ARCANE_MESH_DOFFAMILY_H
13#define ARCANE_MESH_DOFFAMILY_H
18#include "arcane/core/IMesh.h"
19#include "arcane/core/IParallelMng.h"
20#include "arcane/core/IDoFFamily.h"
22#include "arcane/mesh/ItemFamily.h"
25#include "arcane/mesh/DynamicMeshIncrementalBuilder.h"
45 static Int64 uid(
Int64 connected_item_uid) {
return connected_item_uid; }
49 Int64 max_connected_item_family_uid,
50 Int64 connected_item_uid,
51 Int32 dof_index_in_item)
53 return connected_item_uid + (max_connected_item_family_uid + 1) * dof_index_in_item + max_dof_family_uid + 1;
88 return _allocDoF(uid);
93 return _allocDoF(uid);
99 auto dof = _findOrAllocDoF(uid, is_alloc);
103 ItemInternal* findOrAllocOne(Int64 uid,
bool& is_alloc)
105 return _findOrAllocDoF(uid, is_alloc);
109 IItemFamily* family()
override {
return this; }
120 void computeSynchronizeInfos()
override;
123 DoFGroup ownDoFs() {
return ItemFamily::allItems().own(); }
124 DoFGroup ghostDoFs() {
return ItemFamily::allItems().ghost(); }
126 void removeDoFs(Int32ConstArrayView items_local_id)
override;
130 void build()
override;
131 void _addItems(Int64ConstArrayView unique_ids, Int32ArrayView items);
132 void addGhostItems(Int64ConstArrayView unique_ids, Int32ArrayView items, Int32ConstArrayView owners)
override;
133 void _removeItems(Int32ConstArrayView local_ids,
bool keep_ghost =
false) { internalRemoveItems(local_ids, keep_ghost); };
134 void internalRemoveItems(Int32ConstArrayView local_ids,
bool keep_ghost =
false)
override;
138 void _printInfos(Integer nb_added);
142 void preAllocate(Integer nb_item);
143 ItemInternal* _allocDoF(
const Int64 uid);
144 ItemInternal* _allocDoFGhost(
const Int64 uid,
const Int32 owner);
145 ItemInternal* _findOrAllocDoF(
const Int64 uid,
bool& is_alloc);
147 ItemSharedInfoWithType* m_shared_info;
149 friend class DynamicMesh;
Déclarations de types sur les entités.
Interface d'une famille de DoF.
Interface de modification d'une famille.
Interface d'une famille d'entités.
Groupe d'entités de maillage.
Structure interne d'une entité de maillage.
Type d'une entité (Item).
Classe de base d'un élément de maillage.
Chaîne de caractères unicode.
void endUpdate() override
Notifie la fin de modification de la liste des entités.
DoFFamily(IMesh *mesh, const String &name)
La famille ne peut pas etre cree directement, il faut utiliser le DoFManager.
String fullName() const override
Nom complet de la famille (avec celui du maillage)
Integer nbItem() const override
Nombre d'entités.
ItemGroup allItems() const override
Groupe de toutes les entités.
IDoFFamily * toDoFFamily() override
Retourne l'interface de la famille de particule de cette famille.
Item allocOne(Int64 uid, ItemTypeId, MeshInfos &) override
Alloue un élément dans la famille et met à jour le mesh_info correspondant.
String name() const override
Nom de la famille.
static Int64 uid(Int64 connected_item_uid)
Implémentation d'un maillage.
IMesh * mesh() const override
Maillage associé
String fullName() const override
Nom complet de la famille (avec celui du maillage)
void endUpdate() override
Notifie la fin de modification de la liste des entités.
ItemGroup allItems() const override
Groupe de toutes les entités.
Integer nbItem() const override
Nombre d'entités.
String name() const override
Nom de la famille.
Classe factorisant des informations sur le maillage.
ItemVectorViewT< DoF > DoFVectorView
Vue sur un vecteur de degre de liberte.
ItemGroupT< DoF > DoFGroup
Groupe de Degre de Liberte.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.