12#ifndef ARCANE_UTILS_REAL3X3_H
13#define ARCANE_UTILS_REAL3X3_H
17#include "arcane/utils/Real3.h"
110 :
x(av[0], av[1], av[2])
111 ,
y(av[3], av[4], av[5])
112 ,
z(av[6], av[7], av[8])
157 constexpr ARCCORE_HOST_DEVICE
Real3x3 copy()
const {
return (*
this); }
202 std::istream& assign(std::istream& i);
204 std::ostream& print(std::ostream& o)
const;
206 std::ostream& printXyz(std::ostream& o)
const;
273 return x == b.
x &&
y == b.
y &&
z == b.
z;
293 ARCCORE_CHECK_AT(i, 3);
303 ARCCORE_CHECK_AT(i, 3);
314 ARCCORE_CHECK_AT(i, 3);
315 ARCCORE_CHECK_AT(j, 3);
325 ARCCORE_CHECK_AT(i, 3);
335 ARCCORE_CHECK_AT(i, 3);
346 ARCCORE_CHECK_AT(i, 3);
347 ARCCORE_CHECK_AT(j, 3);
354 return (
x.x * (
y.y *
z.z -
y.z *
z.y) +
x.y * (
y.z *
z.x -
y.x *
z.z) +
x.z * (
y.x *
z.y -
y.y *
z.x));
372 return Real3x3(vec.
x * sca, vec.
y * sca, vec.
z * sca);
378 return Real3x3(vec.
x * sca, vec.
y * sca, vec.
z * sca);
384 return Real3x3(vec.
x / sca, vec.
y / sca, vec.
z / sca);
401 return (v1.
x < v2.
x);
407 inline constexpr ARCCORE_HOST_DEVICE
bool isNearlyZero()
const;
416 constexpr ARCCORE_HOST_DEVICE
static bool _eq(
Real a,
Real b)
438 inline constexpr ARCCORE_HOST_DEVICE
bool isNearlyZero(
const Real3x3& v)
440 return isNearlyZero(v.
x) && isNearlyZero(v.
y) && isNearlyZero(v.
z);
447inline constexpr ARCCORE_HOST_DEVICE
bool Real3x3::
450 return math::isNearlyZero(*
this);
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Classe gérant un vecteur de réel de dimension 3.
Classe gérant une matrice de réel de dimension 3x3.
constexpr __host__ __device__ Real3x3 operator-(Real3x3 b) const
Créé un triplet qui vaut b soustrait de ce triplet.
constexpr __host__ static __device__ Real3x3 null()
Construit le tenseur nul.
Real3x3(const Real3x3 &f)=default
Construit un triplet identique à f.
friend constexpr __host__ __device__ Real3x3 operator*(Real sca, Real3x3 vec)
Multiplication par un scalaire.
constexpr __host__ __device__ Real3x3 & add(Real3x3 b)
Ajoute b au triplet.
constexpr __host__ static __device__ Real3x3 identity()
Construit la matrice identité
constexpr __host__ __device__ Real3x3 & subSame(Real3 b)
Soustrait b à chaque composante du triplet.
std::ostream & printXyz(std::ostream &o) const
Ecrit le triplet sur le flot o sous la forme (x,y,z)
constexpr __host__ __device__ Real3x3 & assign(Real3 ax, Real3 ay, Real3 az)
Affecte à l'instance les lignes (ax,ay,az)
Real3 z
premier élément du triplet
constexpr __host__ __device__ bool operator==(Real3x3 b) const
Compare composant pas composante l'instance courante à b.
friend constexpr __host__ __device__ bool operator<(Real3x3 v1, Real3x3 v2)
Opérateur de comparaison.
constexpr __host__ __device__ Real3x3 & sub(Real3x3 b)
Soustrait b au triplet.
constexpr __host__ static __device__ Real3x3 fromLines(Real ax, Real bx, Real cx, Real ay, Real by, Real cy, Real az, Real bz, Real cz)
Construit la matrice ((ax,bx,cx),(ay,by,cy),(az,bz,cz)).
constexpr __host__ __device__ Real3x3 & operator=(Real v)
Affecte à l'instance le triplet (v,v,v).
constexpr __host__ __device__ Real3x3 & reset()
Remet à zéro les coefficients de la matrice.
Real3 y
premier élément du triplet
constexpr __host__ __device__ Real3x3 & assign(Real3x3 f)
Copie la matrice f.
constexpr __host__ __device__ Real determinant() const
Déterminant de la matrice.
__host__ __device__ Real3 operator()(Integer i) const
Accès en lecture seule à la i-ème (entre 0 et 2 inclus) ligne de l'instance.
constexpr __host__ static __device__ Real3x3 fromColumns(Real ax, Real ay, Real az, Real bx, Real by, Real bz, Real cx, Real cy, Real cz)
Construit la matrice ((ax,bx,cx),(ay,by,cy),(az,bz,cz)).
constexpr __host__ __device__ Real3x3()
Construit la matrice avec tous les coefficiants nuls.
constexpr __host__ __device__ Real3x3(ConstArrayView< Real > av)
Construit le triplet ((av[0], av[1], av[2]), (av[3], av[4], av[5]), (av[6], av[7],...
__host__ __device__ Real3 operator[](Integer i) const
Accès en lecture seule à la i-ème (entre 0 et 2 inclus) ligne de l'instance.
constexpr __host__ __device__ Real3x3 & addSame(Real3 b)
Ajoute b à chaque composante du triplet.
Real3x3 & operator=(const Real3x3 &f)=default
Opérateur de recopie.
constexpr __host__ __device__ ArrayView< Real > view()
constexpr __host__ __device__ ConstArrayView< Real > constView() const
constexpr __host__ __device__ Real3x3(const Real3x3POD &f)
Construit un triplet identique à f.
constexpr __host__ __device__ bool operator!=(Real3x3 b) const
Compare deux triplets. Pour la notion d'égalité, voir operator==()
Real3 x
premier élément du triplet
constexpr __host__ __device__ Real3x3(Real v)
Construit l'instance avec le triplet (v,v,v).
friend std::ostream & operator<<(std::ostream &o, Real3x3 t)
Ecrit le triplet t sur le flot o.
__host__ __device__ Real3 & operator[](Integer i)
Accès à la i-ème ligne (entre 0 et 2 inclus) de l'instance.
constexpr __host__ static __device__ Real3x3 zero()
Construit la matrice nulle.
__host__ __device__ Real operator()(Integer i, Integer j) const
Accès en lecture seule à la i-ème ligne et j-ème colonne.
friend std::istream & operator>>(std::istream &i, Real3x3 &t)
Lit le triplet t à partir du flot o.
constexpr __host__ __device__ Real3x3(Real3 ax, Real3 ay, Real3 az)
Construit la matrice avec les lignes (ax,ay,az)
constexpr __host__ __device__ Real3x3 & operator+=(Real3x3 b)
Ajoute b au triplet.
constexpr __host__ __device__ void operator/=(Real b)
Divise chaque composante de la matrice par le réel b.
constexpr __host__ __device__ Real3x3 copy() const
Retourne une copie de la matrice.
constexpr __host__ __device__ Real3x3 operator-() const
Créé un tenseur opposé au tenseur actuel.
constexpr __host__ __device__ Real3x3 operator+(Real3x3 b) const
Créé un triplet qui vaut ce triplet ajouté à b.
ARCANE_DEPRECATED_116 Real3x3(Real ax, Real ay, Real az, Real bx, Real by, Real bz, Real cx, Real cy, Real cz)
Construit le tenseur ((ax,bx,cx),(ay,by,cy),(az,bz,cz)).
constexpr __host__ __device__ void operator*=(Real b)
Multiple chaque composante de la matrice par le réel b.
__host__ __device__ Real & operator()(Integer i, Integer j)
Accès à la i-ème ligne et j-ème colonne.
constexpr __host__ __device__ Real3x3 & operator-=(Real3x3 b)
Soustrait b au triplet.
friend constexpr __host__ __device__ Real3x3 operator/(Real3x3 vec, Real sca)
Division par un scalaire.
friend constexpr __host__ __device__ Real3x3 operator*(Real3x3 vec, Real sca)
Multiplication par un scalaire.
__host__ __device__ Real3 & operator()(Integer i)
Accès à la i-ème ligne (entre 0 et 2 inclus) de l'instance.
constexpr __host__ static __device__ bool isEqual(const T &a, const T &b)
Compare a à b.
Espace de nom pour les fonctions mathématiques.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.
Structure POD pour un Real3x3.