Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ComponentItemListBuilder.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/* ComponentItemListBuilder.h (C) 2000-2024 */
9/* */
10/* Classe d'aide à la construction d'une liste de ComponentItem. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_COMPONENTITEMLISTBUILDER_H
13#define ARCANE_MATERIALS_INTERNAL_COMPONENTITEMLISTBUILDER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18#include "arcane/utils/NumArray.h"
19
20#include "arcane/core/materials/MatVarIndex.h"
21
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane::Materials
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
36class ARCANE_MATERIALS_EXPORT ComponentItemListBuilder
37{
38 public:
39
41
42 public:
43
44 void preAllocate(Int32 nb_item)
45 {
46 m_partial_local_ids.resize(nb_item);
47 m_pure_indexes.resize(nb_item);
48 m_partial_indexes.resize(nb_item);
49 }
50
51 void resize(Int32 nb_pure, Int32 nb_partial)
52 {
53 m_partial_local_ids.resize(nb_partial);
54 m_pure_indexes.resize(nb_pure);
55 m_partial_indexes.resize(nb_partial);
56 }
57
58 public:
59
60 SmallSpan<Int32> pureIndexes() { return m_pure_indexes; }
61 SmallSpan<Int32> partialIndexes() { return m_partial_indexes; }
62 SmallSpan<Int32> partialLocalIds() { return m_partial_local_ids; }
63
64 SmallSpan<const Int32> pureIndexes() const { return m_pure_indexes; }
65 SmallSpan<const Int32> partialIndexes() const { return m_partial_indexes; }
66 SmallSpan<const Int32> partialLocalIds() const { return m_partial_local_ids; }
67
68 MeshMaterialVariableIndexer* indexer() const { return m_indexer; }
69 void setIndexer(MeshMaterialVariableIndexer* indexer) { m_indexer = indexer; }
70
71 private:
72
73 NumArray<Int32, MDDim1> m_partial_local_ids;
74 NumArray<Int32, MDDim1> m_pure_indexes;
75 NumArray<Int32, MDDim1> m_partial_indexes;
76
77 MeshMaterialVariableIndexer* m_indexer = nullptr;
78};
79
80/*---------------------------------------------------------------------------*/
81/*---------------------------------------------------------------------------*/
86class ARCANE_MATERIALS_EXPORT ComponentItemListBuilderOld
87{
88 public:
89
92
93 public:
94
96 void addPureItem(Int32 local_id)
97 {
98 m_pure_matvar_indexes.add(MatVarIndex(0, local_id));
99 }
100
102 void addPartialItem(Int32 local_id)
103 {
104 //TODO: lorsqu'il y aura la suppression incrémentalle, il faudra
105 // aller chercher le bon index dans la liste des index libres de l'indexeur.
106 m_partial_matvar_indexes.add(MatVarIndex(m_component_index, m_index_in_partial));
107 m_partial_local_ids.add(local_id);
108 ++m_index_in_partial;
109 }
110
111 public:
112
113 ConstArrayView<MatVarIndex> pureMatVarIndexes() const { return m_pure_matvar_indexes; }
114 ConstArrayView<MatVarIndex> partialMatVarIndexes() const { return m_partial_matvar_indexes; }
115 ConstArrayView<Int32> partialLocalIds() const { return m_partial_local_ids; }
116 MeshMaterialVariableIndexer* indexer() const { return m_indexer; }
117
118 private:
119
120 Integer m_component_index = -1;
121 Integer m_index_in_partial = -1;
122
123 UniqueArray<MatVarIndex> m_pure_matvar_indexes;
124
125 UniqueArray<MatVarIndex> m_partial_matvar_indexes;
126 UniqueArray<Int32> m_partial_local_ids;
127
128 MeshMaterialVariableIndexer* m_indexer = nullptr;
129};
130
131/*---------------------------------------------------------------------------*/
132/*---------------------------------------------------------------------------*/
133
134} // End namespace Arcane::Materials
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
138
139#endif
140
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Classe d'aide à la construction d'une liste de ComponentItem pour un MeshMaterialVariableIndexer.
void addPureItem(Int32 local_id)
Ajoute l'entité de localId() local_id à la liste des entités pure.
void addPartialItem(Int32 local_id)
Ajoute l'entité de localId() local_id à la liste des entités partielles.
Classe d'aide à la construction d'une liste de ComponentItem pour un MeshMaterialVariableIndexer.
Représente un index sur les variables matériaux et milieux.
Active toujours les traces dans les parties Arcane concernant les matériaux.
Int32 Integer
Type représentant un entier.