Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
internal/MeshComponentPartData.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/* MeshComponentPartData.h (C) 2000-2024 */
9/* */
10/* Données séparées en parties pures et impures d'un constituant. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MESHCOMPONENTPARTDATA_H
13#define ARCANE_MATERIALS_INTERNAL_MESHCOMPONENTPARTDATA_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/UniqueArray.h"
19#include "arcane/utils/FixedArray.h"
20
21#include "arcane/core/materials/MatVarIndex.h"
22#include "arcane/core/materials/ComponentItemInternal.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane::Materials
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
38class MeshComponentPartData
39: public TraceAccessor
40{
41 public:
42
43 MeshComponentPartData(IMeshComponent* component,const String& debug_name);
44
45 public:
46
47 Int32 impureVarIdx() const { return m_impure_var_idx; }
48
49 IMeshComponent* component() const { return m_component; }
50
51 void checkValid();
52
55
58
61
62 /*
63 * \brief Fonctor pour recalculer les parties pures et impures suite à une modification.
64 *
65 * Si ce fonctor n'est pas positionné, alors il faut mettre à jour manuellement
66 * l'instance via l'appel à _setFromMatVarIndexes(). \a func doit rester valide
67 * durant toute la durée de vie de cette instance
68 */
69 void setRecomputeFunctor(IFunctor* func) { m_compute_functor = func; }
70
71 void setNeedRecompute() { m_is_need_recompute = true; }
72
73 public:
74
75 void _setConstituentListView(const ConstituentItemLocalIdListView& v);
76 void _setFromMatVarIndexes(ConstArrayView<MatVarIndex> matvar_indexes, RunQueue& queue);
77 void _setFromMatVarIndexes(ConstArrayView<MatVarIndex> globals,
79
80 private:
81
84
87
90
93
96
97 IFunctor* m_compute_functor = nullptr;
98 bool m_is_need_recompute = false;
99
100 public:
101
102 // Cette fonction est privée mais doit être rendue publique pour compiler avec CUDA.
104
105 private:
106
107 void _checkNeedRecompute();
108};
109
110/*---------------------------------------------------------------------------*/
111/*---------------------------------------------------------------------------*/
112
113} // End namespace Arcane::Materials
114
115/*---------------------------------------------------------------------------*/
116/*---------------------------------------------------------------------------*/
117
118#endif
File d'exécution pour un accélérateur.
Vue constante d'un tableau de type T.
Tableau 1D de taille fixe.
Definition FixedArray.h:45
Vue sur une partie pure ou partielles des entités d'un composant.
Vue sur une instance de ConstituentItemLocalIdList.
Interface d'un composant (matériau ou milieu) d'un maillage.
FixedArray< UniqueArray< Int32 >, 2 > m_items_internal_indexes
Liste des indices dans m_items_internal de chaque maille matériau.
ComponentPurePartItemVectorView pureView()
Vue sur la partie pure.
ConstituentItemLocalIdListView m_constituent_list_view
Liste des ComponentItem pour ce constituant.
Int32 m_impure_var_idx
Indice du constituant pour l'accès aux valeurs partielles.
FixedArray< UniqueArray< Int32 >, 2 > m_value_indexes
Liste des valueIndex() de chaque partie.
void _notifyValueIndexesChanged(RunQueue *queue)
Notification de changement des m_values_indexes.
ComponentImpurePartItemVectorView impureView()
Vue sur la partie impure.
IMeshComponent * m_component
Gestionnaire de constituants.
ComponentPartItemVectorView partView(eMatPart part)
Vue sur la partie part.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Active toujours les traces dans les parties Arcane concernant les matériaux.
eMatPart
Partie d'un composant.
std::int32_t Int32
Type entier signé sur 32 bits.