Arcane  v3.14.10.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{
30class IncrementalItemConnectivity;
31class OneItemIncrementalItemConnectivity;
32class ItemSharedInfoWithType;
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
75 Int32ArrayView items) override;
78 Int32ArrayView items) override;
79
83 void removeParticles(Int32ConstArrayView items_local_id) override;
84
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)
114 ItemFamily::computeSynchronizeInfos() ;
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:1178
Interface d'une famille d'entités.
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:40
Infos sur un type d'entité du maillage.
Vue sur un tableau typé d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Particule.
Definition Item.h:1383
Famille d'entités.
Definition ItemFamily.h:76
Classe temporaire pour conserver un ItemSharedInfo et un type d'entité.
Famille de particules.
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.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.