Arcane  4.2.3.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
GeomElement.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* GeomElement.h (C) 2000-2026 */
9/* */
10/* Eléments géométriques. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_GEOMETRIC_GEOMELEMENT_H
13#define ARCANE_GEOMETRIC_GEOMELEMENT_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/Item.h"
18#include "arcane/core/VariableTypes.h"
19
20#include "arcane/geometry/GeomElementView.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane::geometric
26{
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29/*!
30 * \ingroup ArcaneGeometric
31 * \brief Classe de base des éléments géométriques.
32 *
33 * Un élément géométrique contient les coordoonnées des \a NbNode noeuds qui
34 * composent cet élément.
35 *
36 * Pour des raisons de performance, le constructeur
37 * par défaut n'initialise pas les coordonnées.
38 *
39 * Pour récupérer les coordonnées du i-ème noeud de l'élément géométrique,
40 * il suffit d'utiliser l'opérateur []. La modification se fait via
41 * setItem().
42 */
43template<int NbNode>
46 public:
48 //! Constructeur vide.
49 GeomElementBase() = default;
50 //! Constructeur à partir des coordonnées \a coords des noeuds de l'entité \a item
52 {
53 init(coords,item);
54 }
55 //! Constructeur à partir des coordonnées \a coords.
57 {
58 for( Integer i=0; i<NbNode; ++i )
59 setItem(i,coords[i]);
60 }
61
62 //! Récupère la valeur du \a ième noeud
63 constexpr const Real3 s(Integer i) const { return Real3(m_s[i].x, m_s[i].y, m_s[i].z); }
64 //! Récupère la valeur du \a ième noeud
65 constexpr const Real3 operator[](Integer i) const { return Real3(m_s[i].x, m_s[i].y, m_s[i].z); }
66 //! Positionne la valeur du \a ième noeud à \a v
67 constexpr void setItem(Integer i, const Real3& v) { m_s[i] = v; }
68 //! Positionne la valeur du \a ième noeud à Real3(\a x,\a y,\a z)
69 constexpr void setItem(Integer i, Real x, Real y, Real z) { m_s[i] = Real3(x, y, z); }
70
71 /*!
72 * \brief Remplit la vue \a view avec les coordonnéees de l'instance.
73 */
74 constexpr void fillView(ArrayView<Real3> view) const
75 {
76 for( Integer i=0; i<NbNode; ++i )
77 view[i] = s(i);
78 }
79
80 /*!
81 * \brief Initialise les coordonnées avec celles des noeuds d'entité \a item
82 */
83 void init(const VariableNodeReal3& coords,ItemWithNodes item)
84 {
85 for( Integer i=0; i<NbNode; ++i )
86 m_s[i] = coords[item.node(i)];
87 }
88
89 protected:
91 Real3POD m_s[NbNode];
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
97#include "arcane/geometry/GeneratedGeomElement.h"
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102} // namespace Arcane::geometric
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107#endif
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
Definition Item.h:736
Node node(Int32 i) const
i-ème noeud de l'entité
Definition Item.h:791
Classe gérant un vecteur réel de 3 dimensions.
GeomElementBase()=default
Constructeur vide.
constexpr void setItem(Integer i, Real x, Real y, Real z)
Positionne la valeur du ième noeud à Real3(x,y,z).
Definition GeomElement.h:69
GeomElementBase(const VariableNodeReal3 &coords, ItemWithNodes item)
Constructeur à partir des coordonnées coords des noeuds de l'entité item.
Definition GeomElement.h:51
constexpr void fillView(ArrayView< Real3 > view) const
Remplit la vue view avec les coordonnéees de l'instance.
Definition GeomElement.h:74
constexpr const Real3 s(Integer i) const
Récupère la valeur du ième noeud.
Definition GeomElement.h:63
constexpr void setItem(Integer i, const Real3 &v)
Positionne la valeur du ième noeud à v.
Definition GeomElement.h:67
constexpr GeomElementBase(ConstArrayView< Real3 > coords)
Constructeur à partir des coordonnées coords.
Definition GeomElement.h:56
void init(const VariableNodeReal3 &coords, ItemWithNodes item)
Initialise les coordonnées avec celles des noeuds d'entité item.
Definition GeomElement.h:83
constexpr const Real3 operator[](Integer i) const
Récupère la valeur du ième noeud.
Definition GeomElement.h:65
MeshVariableScalarRefT< Node, Real3 > VariableNodeReal3
Grandeur au noeud de type coordonnées.
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.