Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IParticleFamily.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/* IParticleFamily.h (C) 2000-2022 */
9/* */
10/* Interface d'une famille de particules. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IPARTICLEFAMILY_H
13#define ARCANE_IPARTICLEFAMILY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18#include "arcane/ItemTypes.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28/*!
29 * \ingroup Mesh
30 * \brief Interface d'une famille de particules.
31 *
32 * Une famille de particle est une famille d'entité (IItemFamily).
33 * Cette interface ne contient que les méthodes spécifiques aux particules.
34 * Pour les opérations génériques aux entités, il faut passer par
35 * l'interface IItemFamily via itemFamily().
36 *
37 * Il peut y a voir plusieurs famille de particule par maillage.
38 * Contrairement aux entités classiques du maillage (noeud, maille, ...),
39 * les particules peuvent être créées directement.
40 *
41 */
42class ARCANE_CORE_EXPORT IParticleFamily
43{
44 public:
45
46 virtual ~IParticleFamily() {} //<! Libère les ressources
47
48 public:
49
50 virtual void build() = 0;
51
52 //! set le flag pour gérer les particules ghost de la famille
53 virtual void setEnableGhostItems(bool value) = 0;
54
55 //! récupère le flag pour gérer les particules ghost de la famille
56 virtual bool getEnableGhostItems() const = 0;
57
58 public:
59
60 //! Nom de la famille
61 virtual String name() const = 0;
62
63 //! Nom complet de la famille (avec celui du maillage)
64 virtual String fullName() const = 0;
65
66 //! Nombre d'entités
67 virtual Integer nbItem() const = 0;
68
69 //! Groupe de toutes les particules
70 virtual ItemGroup allItems() const = 0;
71
72 public:
73
74 /*!
75 * \brief Alloue des particules
76 *
77 * Alloue les particules dont les uniqueId() sont données par le
78 * tablea \a unique_ids.
79 *
80 * Après appel à cette opération, il faut appeler endUpdate() pour notifier
81 * à l'instance la fin des modifications. Il est possible d'enchaîner plusieurs
82 * allocations avant d'appeler endUpdate(). Attention, la vue retournée
83 * peut être invalidée après l'appel à endUpdate() si la compression est active.
84 * \a items_local_id doit avoir le même nombre d'éléments que unique_ids.
85 */
87 Int32ArrayView items_local_id) = 0;
88 virtual ParticleVectorView addParticles2(Int64ConstArrayView unique_ids,
90 Int32ArrayView items) = 0;
91
92 /*!
93 * \brief Alloue des particules dans des mailles.
94 *
95 * Cette méthode est similaire à addParticles() mais permet de spécifier
96 * directement les mailles dans lesquelles seront créées les particules.
97 */
99 Int32ConstArrayView cells_local_id,
100 Int32ArrayView items_local_id) = 0;
101
102 virtual void removeParticles(Int32ConstArrayView items_local_id) = 0;
103
104 /*!
105 * \sa IItemFamily::endUpdate().
106 */
107 virtual void endUpdate() = 0;
108
109 /*!
110 * \brief Déplace la particule \a particle dans la maille \a new_cell.
111 */
112 virtual void setParticleCell(Particle particle, Cell new_cell) = 0;
113
114 /*!
115 * \brief Déplace la list de particules \a particles dans les nouvelles mailles \a new_cells.
116 */
117 virtual void setParticlesCell(ParticleVectorView particles, CellVectorView new_cells) = 0;
118
119 public:
120
121 /*!
122 * \brief Échange des entités.
123 *
124 * Cette méthode n'est supportée que pour les familles de particule.
125 * Pour les éléments du maillage comme les noeuds, faces ou maille, il faut utiliser IMesh::exchangeItems().
126 *
127 * Les nouveaux propriétaires des entités sont données par la itemsNewOwner().
128 *
129 * Cette opération est bloquante et collective.
130 */
131 virtual void exchangeParticles() = 0;
132
133 public:
134
135 //! Interface sur la famille
136 virtual IItemFamily* itemFamily() = 0;
137};
138
139/*---------------------------------------------------------------------------*/
140/*---------------------------------------------------------------------------*/
141
142}
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146
147#endif
Maille d'un maillage.
Definition Item.h:1178
Interface d'une famille d'entités.
Interface d'une famille de particules.
virtual Integer nbItem() const =0
Nombre d'entités.
virtual String name() const =0
Nom de la famille.
virtual void setParticleCell(Particle particle, Cell new_cell)=0
Déplace la particule particle dans la maille new_cell.
virtual void setEnableGhostItems(bool value)=0
set le flag pour gérer les particules ghost de la famille
virtual void endUpdate()=0
virtual bool getEnableGhostItems() const =0
récupère le flag pour gérer les particules ghost de la famille
virtual void exchangeParticles()=0
Échange des entités.
virtual ParticleVectorView addParticles(Int64ConstArrayView unique_ids, Int32ArrayView items_local_id)=0
Alloue des particules.
virtual ItemGroup allItems() const =0
Groupe de toutes les particules.
virtual IItemFamily * itemFamily()=0
Interface sur la famille.
virtual void setParticlesCell(ParticleVectorView particles, CellVectorView new_cells)=0
Déplace la list de particules particles dans les nouvelles mailles new_cells.
virtual ParticleVectorView addParticles(Int64ConstArrayView unique_ids, Int32ConstArrayView cells_local_id, Int32ArrayView items_local_id)=0
Alloue des particules dans des mailles.
virtual String fullName() const =0
Nom complet de la famille (avec celui du maillage)
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Vue sur un tableau typé d'entités.
Particule.
Definition Item.h:1383
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
ItemVectorViewT< Particle > ParticleVectorView
Vue sur un vecteur de particules.
Definition ItemTypes.h:309
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-