Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ConstituentItemVectorImpl.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/* ConstituentItemVectorImpl.h (C) 2000-2024 */
9/* */
10/* Implémentation de 'IConstituentItemVectorImpl'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_CONSTITUENTITEMVECTORIMPL_H
13#define ARCANE_MATERIALS_INTERNAL_CONSTITUENTITEMVECTORIMPL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arcane/utils/TraceAccessor.h"
20#include "arcane/utils/Functor.h"
21
22#include "arcane/core/materials/ComponentItemVector.h"
23#include "arcane/core/materials/internal/ConstituentItemLocalIdList.h"
24
25#include "arcane/materials/internal/MeshComponentPartData.h"
26
27#include <tuple>
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32namespace Arcane::Materials
33{
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
43{
44 ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS();
45
46 public:
47
48 explicit ConstituentItemVectorImpl(IMeshComponent* component);
50
51 public:
52
56
57 private:
58
59 ComponentItemVectorView _view() const override;
60 ComponentPurePartItemVectorView _pureItems() const override
61 {
62 return m_part_data->pureView();
63 }
64
65 ComponentImpurePartItemVectorView _impureItems() const override
66 {
67 return m_part_data->impureView();
68 }
69 ConstArrayView<Int32> _localIds() const override { return m_items_local_id.constView(); }
70 IMeshMaterialMng* _materialMng() const override { return m_material_mng; }
71 IMeshComponent* _component() const override { return m_component; }
72 ConstituentItemLocalIdListView _constituentItemListView() const override
73 {
74 return m_constituent_list->view();
75 }
76 ConstArrayView<MatVarIndex> _matvarIndexes() const override
77 {
78 return m_matvar_indexes;
79 }
80
81 public:
82
83 class SetItemHelper;
84 // Méthodes devant être publiques pour compilation avec NVCC.
86 void _computeNbPureAndImpure(SmallSpan<const Int32> local_ids, RunQueue& queue);
87
88 private:
89
90 void _recomputePartData();
91
92 public:
93
94 IMeshMaterialMng* m_material_mng = nullptr;
95 IMeshComponent* m_component = nullptr;
96 UniqueArray<MatVarIndex> m_matvar_indexes;
97 UniqueArray<Int32> m_items_local_id;
98 std::unique_ptr<MeshComponentPartData> m_part_data;
99 std::unique_ptr<ConstituentItemLocalIdList> m_constituent_list;
100 ComponentItemSharedInfo* m_component_shared_info = nullptr;
101
102 FunctorT<ConstituentItemVectorImpl> m_recompute_part_data_functor;
103 // Seulement utile pour le re-calcul à la volée
104 Int32 m_nb_pure = 0;
105 // Seulement utile pour le re-calcul à la volée
106 Int32 m_nb_impure = 0;
107};
108
109/*---------------------------------------------------------------------------*/
110/*---------------------------------------------------------------------------*/
111
112} // End namespace Arcane::Materials
113
114/*---------------------------------------------------------------------------*/
115/*---------------------------------------------------------------------------*/
116
117#endif
118
File d'exécution pour un accélérateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Informations partagées sur les 'ComponentItem'.
Vue sur un vecteur sur les entités d'un composant.
Vue sur une instance de ConstituentItemLocalIdList.
Implémentation de ComponentItemVector.
void _setItems(SmallSpan< const Int32 > local_ids) override
Positionne les entités du vecteur.
Interface pour l'implémentation de ComponentItemVector.
Interface d'un composant (matériau ou milieu) d'un maillage.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
ConstArrayView< T > constView() const
Vue constante sur ce tableau.
Implémentation thread-safe d'un compteur de référence.
Active toujours les traces dans les parties Arcane concernant les matériaux.