12#ifndef ARCANE_UTILS_REAL3PROXY_H
13#define ARCANE_UTILS_REAL3PROXY_H
17#include "arcane/utils/Real3.h"
18#include "arcane/utils/BuiltInProxy.h"
28typedef BuiltInProxy<Real> RealProxy;
42 : x(value.x,info), y(value.y,info), z(value.z,info), m_value(value), m_info(info) {}
45 : x(f.x), y(f.y), z(f.z), m_value(f.m_value), m_info(f.m_info) {}
47 { x = f.
x; y = f.
y; z = f.
z;
return m_value; }
48 Real3 operator=(Real3 f)
49 { x = f.x; y = f.y; z = f.z;
return m_value; }
52 { x = v; y = v; z = v;
return m_value; }
53 operator Real3()
const
80 { x =
ax; y =
ay; z =
az;
return (*
this); }
83 { x = f.
x; y = f.
y; z = f.
z;
return (*
this); }
101 return math::isNearlyZero(x.getValue()) && math::isNearlyZero(y.getValue()) && math::isNearlyZero(z.getValue());
105 {
return x*x + y*y + z*
z; }
108 {
return _sqrt(abs2()); }
114 std::istream& assign(std::istream& i);
116 std::ostream& print(std::ostream& o)
const;
118 std::ostream& printXyz(std::ostream& o)
const;
175 if (!math::isZero(d))
197 {
return _eq(a.x,
b.x) && _eq(a.y,
b.y) && _eq(a.z,
b.z); }
208 Real3 getValue()
const
213 Real3& getValueMutable()
215 m_info.setReadOrWrite();
274 return v1.getValue()<v2.getValue();
286 return t.printXyz(o);
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Real3Proxy & assign(Real3 f)
Copie le triplet f.
RealProxy x
première composante du triplet
Real3Proxy & reset()
Réinitialise le triplet avec les constructeurs par défaut.
Real abs2() const
Retourne la norme au carré du triplet .
friend bool operator!=(Real3Proxy a, Real3Proxy b)
Compare deux triplets. Pour la notion d'égalité, voir operator==()
RealProxy z
troisième composante du triplet
Real3 operator/(Real3 b) const
Créé un triplet qui vaut ce triplet dont chaque composant a été divisée par la composante corresponda...
bool isNearlyZero() const
Compare le triplet avec le triplet nul.
Real3 copy() const
Retourne une copie du triplet.
Real3Proxy(Real3 &value, const MemoryAccessInfo &info)
Construit le triplet (ax,ay,az)
RealProxy y
deuxième composante du triplet
Real3Proxy & addSame(Real b)
Ajoute b à chaque composante du triplet.
Real3 operator-() const
Créé un triplet opposé au triplet actuel.
Real3Proxy & assign(Real ax, Real ay, Real az)
Affecte à l'instance le triplet (ax,ay,az)
static bool _eq(Real a, Real b)
Compare les valeurs de a et b avec le comparateur TypeEqualT.
Real abs() const
Retourne la norme du triplet .
Real3Proxy & add(Real3 b)
Ajoute b au triplet.
Real3Proxy & divSame(Real b)
Divise chaque composante du triplet par b.
Real3Proxy & sub(Real3 b)
Soustrait b au triplet.
Real3Proxy(const Real3Proxy &f)
Construit un triplet identique à f.
friend bool operator==(Real3Proxy a, Real3Proxy b)
Compare le triplet à b.
Real3Proxy & mul(Real3 b)
Multiple chaque composante du triplet par la composant correspondant de b.
Real3Proxy & div(Real3 b)
Divise chaque composante du triplet par la composant correspondant de b.
Real3Proxy & mulSame(Real b)
Multiplie chaque composante du triplet par b.
static Real _sqrt(Real a)
Retourne la racine carrée de a.
Real3 operator*(Real3 b) const
Créé un triplet qui vaut ce triplet dont chaque composant a été multipliée par la composante correspo...
Real3Proxy & normalize()
Normalise le triplet.
Real3Proxy & subSame(Real b)
Soustrait b à chaque composante du triplet.
Classe gérant un vecteur de réel de dimension 3.
Espace de nom pour l'utilisation des accélérateurs.
constexpr ARCCORE_HOST_DEVICE bool isEqual(const _Type &a, const _Type &b)
Teste l'égalité bit à bit entre deux valeurs.
ARCCORE_HOST_DEVICE double sqrt(double v)
Racine carrée de v.
Real2 operator/(const Real2Proxy &vec, Real sca)
Division par un scalaire.
Real y
deuxième composante du triplet
Real z
troisième composante du triplet
Real x
première composante du triplet