Arcane  v3.14.10.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/*---------------------------------------------------------------------------*/
39class ConstituentConnectivityList
40: public TraceAccessor
41, public ReferenceCounterImpl
42, public IIncrementalItemSourceConnectivity
43{
44 ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS();
45
46 class ConstituentContainer;
47 class Container;
48 class NumberOfMaterialComputer;
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
87 SmallSpan<Int16> cells_nb_material, RunQueue& queue);
88
96
102
106 int modified_mat_id, bool is_add, const RunQueue& queue);
107
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; }
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.
Interface d'une famille d'entités.
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Conteneur des données de connectivité pour un type de constituant.
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.
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.
DualUniqueArray< Int16 > m_environment_for_materials
Indice du milieu auquel appartient un matériau.
Implémentation d'un gestion des matériaux.
Vue constante d'un tableau de type T.
Active toujours les traces dans les parties Arcane concernant les matériaux.