39class RealArray2Variant
43 static const Integer MAX_DIM1_SIZE = 3;
44 static const Integer MAX_DIM2_SIZE = 3;
46 RealArray2Variant() =
default;
48 : RealArray2Variant(v.constView())
52 _setValue(v.
data(), v.dim1Size(), v.dim2Size());
56 _setValue(
reinterpret_cast<Real*
>(&r), 2, 2);
60 _setValue(
reinterpret_cast<Real*
>(&r), 3, 3);
63#if defined(ARCANE_HAS_ACCELERATOR_API)
64 template <
typename LayoutType>
66 : RealArray2Variant(v.mdspan())
68 template <
typename LayoutType>
73 template <
typename LayoutType>
80 RealArray2Variant& operator=(
const RealArray2Variant& rhs) =
default;
83 _setValue(v.
data(), v.dim1Size(), v.dim2Size());
86 RealArray2Variant& operator=(
Real2x2 r)
88 _setValue(
reinterpret_cast<Real*
>(&r), 2, 2);
91 RealArray2Variant& operator=(
Real3x3 r)
93 _setValue(
reinterpret_cast<Real*
>(&r), 3, 3);
99 ARCANE_ASSERT(index < m_nb_dim1, (
"Index out of range"));
100 return m_value[index];
104 ARCANE_ASSERT(index < m_nb_dim1, (
"Index out of range"));
105 return m_value[index];
110 ARCANE_ASSERT(i < m_nb_dim1, (
"Index i out of range"));
111 ARCANE_ASSERT(j < m_nb_dim2, (
"Index j out of range"));
112 return m_value[i][j];
116 ARCANE_ASSERT(i < m_nb_dim1, (
"Index i out of range"));
117 ARCANE_ASSERT(j < m_nb_dim2, (
"Index j out of range"));
118 return m_value[i][j];
121 Int32 dim1Size()
const {
return m_nb_dim1; }
122 Int32 dim2Size()
const {
return m_nb_dim2; }
123 Real* data() {
return reinterpret_cast<Real*
>(&m_value[0]); }
124 const Real* data()
const {
return reinterpret_cast<const Real*
>(m_value); }
131 return Real2x2::fromLines(m_value[0][0], m_value[0][1], m_value[1][0], m_value[1][1]);
136 m_value[1][0], m_value[1][1], m_value[1][2],
137 m_value[2][0], m_value[2][1], m_value[2][2]);
139#if defined(ARCANE_HAS_ACCELERATOR_API)
140 template <
typename LayoutType>
144 for (
Integer i = 0, m = m_nb_dim1; i < m; ++i)
145 for (
Integer j = 0, n = m_nb_dim2; j < n; ++j)
146 v(i, j) = m_value[i][j];
153 Real m_value[MAX_DIM1_SIZE][MAX_DIM2_SIZE];
162 ARCANE_ASSERT(nb_dim1 <= MAX_DIM1_SIZE, (
"Dim1 size too large"));
164 ARCANE_ASSERT(nb_dim2 <= MAX_DIM2_SIZE, (
"Dim2 size too large"));
165 for (
Integer i = 0; i < nb_dim1; ++i)
166 for (
Integer j = 0; j < nb_dim2; ++j)
167 m_value[i][j] = v[i * nb_dim2 + j];
constexpr __host__ static __device__ Real2x2 fromLines(Real ax, Real bx, Real ay, Real by)
Constructs the pair ((ax,bx),(ay,by)).
constexpr __host__ static __device__ Real3x3 fromLines(Real ax, Real bx, Real cx, Real ay, Real by, Real cy, Real az, Real bz, Real cz)
Constructs the matrix ((ax,bx,cx),(ay,by,cy),(az,bz,cz)).