Arcane  v4.1.10.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>
45{
46 public:
47 //! Constructeur vide.
49 //! Constructeur à partir des coordonnées \a coords des noeuds de l'entité \a item
51 {
52 init(coords,item);
53 }
54 //! Constructeur à partir des coordonnées \a coords.
56 {
57 for( Integer i=0; i<NbNode; ++i )
58 setItem(i,coords[i]);
59 }
60
61 //! Récupère la valeur du \a ième noeud
62 inline const Real3 s(Integer i) const { return Real3(m_s[i].x,m_s[i].y,m_s[i].z); }
63 //! Récupère la valeur du \a ième noeud
64 inline const Real3 operator[](Integer i) const { return Real3(m_s[i].x,m_s[i].y,m_s[i].z); }
65 //! Positionne la valeur du \a ième noeud à \a v
66 inline void setItem(Integer i,const Real3& v) { m_s[i] = v; }
67 //! Positionne la valeur du \a ième noeud à Real3(\a x,\a y,\a z)
68 inline void setItem(Integer i,Real x,Real y,Real z) { m_s[i] = Real3(x,y,z); }
69
70 /*!
71 * \brief Remplit la vue \a view avec les coordonnéees de l'instance.
72 */
73 void fillView(Real3ArrayView view) const
74 {
75 for( Integer i=0; i<NbNode; ++i )
76 view[i] = s(i);
77 }
78
79 /*!
80 * \brief Initialise les coordonnées avec celles des noeuds d'entité \a item
81 */
82 void init(const VariableNodeReal3& coords,ItemWithNodes item)
83 {
84 for( Integer i=0; i<NbNode; ++i )
85 m_s[i] = coords[item.node(i)];
86 }
87
88 protected:
89
90 Real3POD m_s[NbNode];
91};
92
93/*---------------------------------------------------------------------------*/
94/*---------------------------------------------------------------------------*/
95
96#include "arcane/geometry/GeneratedGeomElement.h"
97
98/*---------------------------------------------------------------------------*/
99/*---------------------------------------------------------------------------*/
100
101} // namespace Arcane::geometric
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
106#endif
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 de réel de dimension 3.
Definition Real3.h:132
GeomElementBase()
Constructeur vide.
Definition GeomElement.h:48
const Real3 operator[](Integer i) const
Récupère la valeur du ième noeud.
Definition GeomElement.h:64
GeomElementBase(const VariableNodeReal3 &coords, ItemWithNodes item)
Constructeur à partir des coordonnées coords des noeuds de l'entité item.
Definition GeomElement.h:50
const Real3 s(Integer i) const
Récupère la valeur du ième noeud.
Definition GeomElement.h:62
void setItem(Integer i, Real x, Real y, Real z)
Positionne la valeur du ième noeud à Real3(x,y,z)
Definition GeomElement.h:68
void fillView(Real3ArrayView view) const
Remplit la vue view avec les coordonnéees de l'instance.
Definition GeomElement.h:73
void init(const VariableNodeReal3 &coords, ItemWithNodes item)
Initialise les coordonnées avec celles des noeuds d'entité item.
Definition GeomElement.h:82
GeomElementBase(Real3ConstArrayView coords)
Constructeur à partir des coordonnées coords.
Definition GeomElement.h:55
void setItem(Integer i, const Real3 &v)
Positionne la valeur du ième noeud à v.
Definition GeomElement.h:66
ViewType view()
Vue modifiable sur l'élément.
Definition GeomElement.h:90
MeshVariableScalarRefT< Node, Real3 > VariableNodeReal3
Grandeur au noeud de type coordonnées.
ConstArrayView< Real3 > Real3ConstArrayView
Equivalent C d'un tableau à une dimension de Real3.
Definition UtilsTypes.h:496
ArrayView< Real3 > Real3ArrayView
Equivalent C d'un tableau à une dimension de Real3.
Definition UtilsTypes.h:467
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.