Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ConstituentConnectivityList.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* ConstituentConnectivityList.h (C) 2000-2024 */
9/* */
10/* Gestion des listes de connectivité des constituants. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_COMPONENTCONNECTIVITYLIST_H
13#define ARCANE_MATERIALS_INTERNAL_COMPONENTCONNECTIVITYLIST_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/Array.h"
19#include "arcane/utils/Ref.h"
20#include "arcane/utils/DualUniqueArray.h"
21
22#include "arcane/core/VariableTypes.h"
23#include "arcane/core/IIncrementalItemConnectivity.h"
24
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30namespace Arcane::Materials
31{
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
40: public TraceAccessor
41, public ReferenceCounterImpl
42, public IIncrementalItemSourceConnectivity
43{
44 ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS();
45
47 class Container;
49
50 public:
51
52 explicit ConstituentConnectivityList(MeshMaterialMng* mm);
53 ~ConstituentConnectivityList();
54
55 public:
56
57 ConstituentConnectivityList(ConstituentConnectivityList&&) = delete;
58 ConstituentConnectivityList(const ConstituentConnectivityList&) = delete;
59 ConstituentConnectivityList& operator=(ConstituentConnectivityList&&) = delete;
60 ConstituentConnectivityList& operator=(const ConstituentConnectivityList&) = delete;
61
62 public:
63
64 void endCreate(bool is_continue);
65
66 void addCellsToEnvironment(Int16 env_id, SmallSpan<const Int32> cell_ids, RunQueue& queue);
67 void removeCellsToEnvironment(Int16 env_id, SmallSpan<const Int32> cell_ids, RunQueue& queue);
68
69 void addCellsToMaterial(Int16 mat_id, SmallSpan<const Int32> cell_ids, RunQueue& queue);
70 void removeCellsToMaterial(Int16 mat_id, SmallSpan<const Int32> cell_ids, RunQueue& queue);
71
76
78 Int16 cellNbMaterial(CellLocalId cell_id, Int16 env_id) const;
79
82
86 void fillCellsNbMaterial(SmallSpan<const Int32> cells_local_id, Int16 env_id,
87 SmallSpan<Int16> cells_nb_material, RunQueue& queue);
88
95 SmallSpan<bool> cells_do_transform, bool is_add, RunQueue& queue);
96
100 void fillCellsIsPartial(SmallSpan<const Int32> cells_local_id, Int16 env_id,
101 SmallSpan<bool> cells_is_partial, RunQueue& queue);
102
104 SmallSpan<bool> is_modified_materials,
105 SmallSpan<bool> is_modified_environments,
106 int modified_mat_id, bool is_add, const RunQueue& queue);
107
108 void printConstituents(SmallSpan<const Int32> cells_local_id) const;
109
117 bool isActive() const { return m_is_active; }
118
119 public:
120
121 // Implémentation de IIncrementalItemSourceConnectivity
123 IItemFamily* sourceFamily() const override { return m_cell_family; }
126 void reserveMemoryForNbSourceItems(Int32 n, bool pre_alloc_connectivity) override;
127 void notifyReadFromDump() override;
130
131 private:
132
133 MeshMaterialMng* m_material_mng = nullptr;
134 IItemFamily* m_cell_family = nullptr;
135 Container* m_container = nullptr;
136
139 bool m_is_active = false;
140 bool m_is_force_transform_all_constituants = false;
141
142 public:
143
144 void _addCells(Int16 env_id, SmallSpan<const Int32> cell_ids,
145 ConstituentContainer& component, RunQueue& queue);
146 void _removeCells(Int16 env_id, SmallSpan<const Int32> cell_ids,
147 ConstituentContainer& component, RunQueue& queue);
148};
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152
153} // namespace Arcane::Materials
154
155/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
157
158#endif
File d'exécution pour un accélérateur.
Vue constante d'un tableau de type T.
Représente un tableau ayant une vue à la fois sur CPU et accélérateur.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Conteneur des données de connectivité pour un type de constituant.
Gestion des listes de connectivité des constituants.
ConstArrayView< Int16 > cellsNbMaterial() const
Tableaux du nombre total de matériaux par maille (indexé par localId())
void printConstituents(SmallSpan< const Int32 > cells_local_id) const
Affiche les constituants d'une liste d'entités.
void fillCellsNbMaterial(SmallSpan< const Int32 > cells_local_id, Int16 env_id, SmallSpan< Int16 > cells_nb_material, RunQueue &queue)
Remplit cells_nb_material avec le nombre de matériaux du milieu env_id.
void fillModifiedConstituents(SmallSpan< const Int32 > cells_local_id, SmallSpan< bool > is_modified_materials, SmallSpan< bool > is_modified_environments, int modified_mat_id, bool is_add, const RunQueue &queue)
Remplit les constituants concernés par une modification.
void notifySourceItemAdded(ItemLocalId item) override
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
Int16 cellNbMaterial(CellLocalId cell_id, Int16 env_id)
Nombre de matériaux de la maille cell_id pour le milieu d'indice env_id.
ConstArrayView< Int16 > cellsNbEnvironment() const
Tableaux du nombre total de milieux par maille (indexé par localId())
void notifyReadFromDump() override
Notifie la connectivité qu'on a effectué une relecture à partir d'une protection.
UniqueArray< Int16 > m_environment_for_materials
Indice du milieu auquel appartient un matériau.
void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override
Notifie la connectivité que la famille source est compactée.
bool isActive() const
Indique si l'instance est activée.
IItemFamily * sourceFamily() const override
Famille source.
void removeAllConnectivities()
Supprime toutes les entités connectées.
Int32 fillCellsToTransform(SmallSpan< const Int32 > cells_local_id, Int16 env_id, SmallSpan< bool > cells_do_transform, bool is_add, RunQueue &queue)
Replit cells_do_transform en indiquant is la maille passe de pure à partielle.
Ref< IIncrementalItemSourceConnectivity > toSourceReference() override
Retourne une référence sur l'instance.
void reserveMemoryForNbSourceItems(Int32 n, bool pre_alloc_connectivity) override
Réserve la mémoire pour n entités sources.
void fillCellsIsPartial(SmallSpan< const Int32 > cells_local_id, Int16 env_id, SmallSpan< bool > cells_is_partial, RunQueue &queue)
Replit cells_is_partial en indiquant is la maille est partielle pour le milieu env_id.
Implémentation d'un gestion des matériaux.
Référence à une instance.
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
Active toujours les traces dans les parties Arcane concernant les matériaux.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
std::int16_t Int16
Type entier signé sur 16 bits.
std::int32_t Int32
Type entier signé sur 32 bits.