Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ParticleFamily.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* ParticleFamily.h (C) 2000-2021 */
9/* */
10/* Famille de particules. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_PARTICLEFAMILY_H
13#define ARCANE_MESH_PARTICLEFAMILY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/MultiBuffer.h"
18
19#include "arcane/VariableTypes.h"
20#include "arcane/IParticleFamily.h"
21
22#include "arcane/mesh/ItemFamily.h"
23#include "arcane/mesh/ItemInternalConnectivityIndex.h"
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27
28namespace Arcane::mesh
29{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
39class ARCANE_MESH_EXPORT ParticleFamily
40: public ItemFamily
41, public IParticleFamily
42{
43 private:
44
46 typedef ItemFamily BaseClass;
47
48 public:
49
50 static String const defaultFamilyName() {
51 return "Particle" ;
52 }
53
54 ParticleFamily(IMesh* mesh,const String& name);
55 virtual ~ParticleFamily(); //<! Libère les ressources
56
57 public:
58
59 virtual void build() override;
60
61 void setEnableGhostItems(bool value) override {
62 m_enable_ghost_items = value ;
63 }
64 bool getEnableGhostItems() const override {
65 return m_enable_ghost_items ;
66 }
67
69 String name() const override { return BaseClass::name(); }
70 String fullName() const override { return BaseClass::fullName(); }
71 Integer nbItem() const override { return BaseClass::nbItem(); }
72 ItemGroup allItems() const override { return BaseClass::allItems(); }
73
74 ParticleVectorView addParticles(Int64ConstArrayView unique_ids,
75 Int32ArrayView items) override;
76 ParticleVectorView addParticles2(Int64ConstArrayView unique_ids,
78 Int32ArrayView items) override;
79
80 ParticleVectorView addParticles(Int64ConstArrayView unique_ids,
81 Int32ConstArrayView cells_local_id,
82 Int32ArrayView items_local_id) override;
83 void removeParticles(Int32ConstArrayView items_local_id) override;
84
85 void addItems(Int64ConstArrayView unique_ids,Int32ConstArrayView owners,Int32ArrayView items);
86
87 void internalRemoveItems(Int32ConstArrayView local_ids,bool keep_ghost) override;
88 void exchangeParticles() override;
89
90 void setParticleCell(Particle particle,Cell new_cell) override;
91 void setParticlesCell(ParticleVectorView particles,CellVectorView new_cells) override;
92
93 void endUpdate() override { ItemFamily::endUpdate(); }
94
95 public:
96
97 void preAllocate(Integer nb_item);
98
99 public:
100
101 void prepareForDump() override;
102 void readFromDump() override;
103
104 public:
105
106 void setHasUniqueIdMap(bool v) override;
107 bool hasUniqueIdMap() const override;
108
109 public:
110
112 {
113 if(m_enable_ghost_items)
115 }
116 IItemFamily* itemFamily() override { return this; }
117 IParticleFamily* toParticleFamily() override { return this; }
118
119 void checkValidConnectivity() override;
120 void removeNeedRemoveMarkedItems() override;
121
122 private:
123
124 ItemTypeInfo* m_particle_type_info;
125 ItemSharedInfoWithType* m_particle_shared_info;
126 Int32 m_sub_domain_id;
127 bool m_enable_ghost_items;
128 CellConnectivity* m_cell_connectivity;
129
130 inline ItemInternal* _allocParticle(Int64 uid,bool& need_alloc);
131 inline ItemInternal* _findOrAllocParticle(Int64 uid,bool& is_alloc);
132
133 void _printInfos(Integer nb_added);
134 void _setSharedInfo();
135 inline void _setCell(ItemLocalId particle,ItemLocalId cell);
136 inline void _initializeNewlyAllocatedParticle(ItemInternal* particle,Int64 uid);
137 void _addItems(Int64ConstArrayView unique_ids,Int32ArrayView items);
138};
139
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142
143} // End namespace Arcane::mesh
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
148#endif
Informations sur la connectivité d'une maille.
Maille d'un maillage.
Definition Item.h:1191
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Interface d'une famille de particules.
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Structure interne d'une entité de maillage.
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Infos sur un type d'entité du maillage.
Particule.
Definition Item.h:1397
Chaîne de caractères unicode.
Connectivité incrémentale item->item[].
Sélection entre les connectivités historiques et à la demande.
IMesh * mesh() const override
Maillage associé
String fullName() const override
Nom complet de la famille (avec celui du maillage)
Definition ItemFamily.h:131
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.
void computeSynchronizeInfos() override
Construit les structures nécessaires à la synchronisation.
String name() const override
Nom de la famille.
Definition ItemFamily.h:130
Classe temporaire pour conserver un ItemSharedInfo et un type d'entité.
IItemFamily * itemFamily() override
Interface sur la famille.
Integer nbItem() const override
Nombre d'entités.
String name() const override
Nom de la famille.
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.
void setEnableGhostItems(bool value) override
set le flag pour gérer les particules ghost de la famille
bool getEnableGhostItems() const override
récupère le flag pour gérer les particules ghost de la famille
IParticleFamily * toParticleFamily() override
Retourne l'interface de la famille de particule de cette famille.
void computeSynchronizeInfos() override
Construit les structures nécessaires à la synchronisation.
ItemGroup allItems() const override
Groupe de toutes les entités.
ItemVectorViewT< Cell > CellVectorView
Vue sur un vecteur de mailles.
Definition ItemTypes.h:304
ItemVectorViewT< Particle > ParticleVectorView
Vue sur un vecteur de particules.
Definition ItemTypes.h:309
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.
Definition UtilsTypes.h:569
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:567
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:540
std::int32_t Int32
Type entier signé sur 32 bits.