Arcane  v3.15.0.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/MatVarIndex.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/* MatVarIndex.h (C) 2000-2024 */
9/* */
10/* Index sur les variables matériaux. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_MATVARINDEX_H
13#define ARCANE_CORE_MATERIALS_MATVARINDEX_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/materials/MaterialsCoreGlobal.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane::Materials
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Représente un index sur les variables matériaux et milieux.
29 *
30 * L'index comprend 2 valeurs:
31 * - la première (arrayIndex()) est le numéro dans la liste des tableaux de la variable.
32 * - le deuxième (valueIndex()) est l'indice dans le tableau des valeurs de cette variable.
33 *
34 * \note Pour des raisons de performance, le constructeur par défaut
35 * n'initialise par les membres de cette classe. Il faut donc appeler
36 * reset() pour initialiser à une valeur invalide.
37 */
39{
40 public:
41
42 constexpr ARCCORE_HOST_DEVICE MatVarIndex(Int32 array_index, Int32 value_index)
43 : m_array_index(array_index)
44 , m_value_index(value_index)
45 {
46 }
47 ARCCORE_HOST_DEVICE MatVarIndex() {}
48
49 public:
50
51 //! Retourne l'indice du tableau de valeur dans la liste des variables.
52 constexpr ARCCORE_HOST_DEVICE Int32 arrayIndex() const { return m_array_index; }
53
54 //! Retourne l'indice dans le tableau de valeur
55 constexpr ARCCORE_HOST_DEVICE Int32 valueIndex() const { return m_value_index; }
56
57 //! Positionne l'index
58 constexpr ARCCORE_HOST_DEVICE void setIndex(Int32 array_index, Int32 value_index)
59 {
60 m_array_index = array_index;
61 m_value_index = value_index;
62 }
63
64 //! Positionne l'entité à l'instance nulle.
65 constexpr ARCCORE_HOST_DEVICE void reset()
66 {
67 m_array_index = (-1);
68 m_value_index = (-1);
69 }
70
71 //! Indique si l'instance représente l'entité nulle
72 constexpr ARCCORE_HOST_DEVICE bool null() const
73 {
74 return m_value_index == (-1);
75 }
76
77 //! Indique si l'instance représente l'entité nulle
78 constexpr ARCCORE_HOST_DEVICE bool isNull() const
79 {
80 return m_value_index == (-1);
81 }
82
83 //! Opérateur de comparaison
84 constexpr ARCCORE_HOST_DEVICE friend bool
86 {
87 if (mv1.arrayIndex() != mv2.arrayIndex())
88 return false;
89 return mv1.valueIndex() == mv2.valueIndex();
90 }
91
92 //! Opérateur de comparaison
93 constexpr ARCCORE_HOST_DEVICE friend bool
95 {
96 return !(operator==(mv1, mv2));
97 }
98
99 //! Opérateur d'écriture
100 ARCANE_CORE_EXPORT friend std::ostream&
101 operator<<(std::ostream& o, const MatVarIndex& mvi);
102
103 private:
104
105 Int32 m_array_index;
106 Int32 m_value_index;
107};
108
109/*---------------------------------------------------------------------------*/
110/*---------------------------------------------------------------------------*/
111/*!
112 * \ingroup ArcaneMaterials
113 * \brief Index d'un Item matériaux pure dans une variable.
114 */
116{
117 public:
118
119 explicit ARCCORE_HOST_DEVICE PureMatVarIndex(Int32 idx)
120 : m_index(idx)
121 {}
122
123 public:
124
125 Int32 ARCCORE_HOST_DEVICE valueIndex() const { return m_index; }
126
127 private:
128
129 Int32 m_index;
130};
131
132/*---------------------------------------------------------------------------*/
133/*---------------------------------------------------------------------------*/
134
135} // namespace Arcane::Materials
136
137/*---------------------------------------------------------------------------*/
138/*---------------------------------------------------------------------------*/
139
140#endif
Représente un index sur les variables matériaux et milieux.
constexpr __host__ __device__ friend bool operator==(MatVarIndex mv1, MatVarIndex mv2)
Opérateur de comparaison.
constexpr __host__ __device__ friend bool operator!=(MatVarIndex mv1, MatVarIndex mv2)
Opérateur de comparaison.
constexpr __host__ __device__ Int32 arrayIndex() const
Retourne l'indice du tableau de valeur dans la liste des variables.
constexpr __host__ __device__ bool isNull() const
Indique si l'instance représente l'entité nulle.
constexpr __host__ __device__ void reset()
Positionne l'entité à l'instance nulle.
constexpr __host__ __device__ void setIndex(Int32 array_index, Int32 value_index)
Positionne l'index.
constexpr __host__ __device__ bool null() const
Indique si l'instance représente l'entité nulle.
friend std::ostream & operator<<(std::ostream &o, const MatVarIndex &mvi)
Opérateur d'écriture.
constexpr __host__ __device__ Int32 valueIndex() const
Retourne l'indice dans le tableau de valeur.
Index d'un Item matériaux pure dans une variable.
Active toujours les traces dans les parties Arcane concernant les matériaux.