Arcane  v4.1.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
src/arcane/geometry/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/*---------------------------------------------------------------------------*/
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:
51 {
52 init(coords,item);
53 }
54
56 {
57 for( Integer i=0; i<NbNode; ++i )
58 setItem(i,coords[i]);
59 }
60
62 inline const Real3 s(Integer i) const { return Real3(m_s[i].x,m_s[i].y,m_s[i].z); }
64 inline const Real3 operator[](Integer i) const { return Real3(m_s[i].x,m_s[i].y,m_s[i].z); }
66 inline void setItem(Integer i,const Real3& v) { m_s[i] = v; }
68 inline void setItem(Integer i,Real x,Real y,Real z) { m_s[i] = Real3(x,y,z); }
69
73 void fillView(Real3ArrayView view) const
74 {
75 for( Integer i=0; i<NbNode; ++i )
76 view[i] = s(i);
77 }
78
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
const Real3 operator[](Integer i) const
Récupère la valeur du ième noeud.
GeomElementBase(const VariableNodeReal3 &coords, ItemWithNodes item)
Constructeur à partir des coordonnées coords des noeuds de l'entité item.
const Real3 s(Integer i) const
Récupère la valeur du ième noeud.
void setItem(Integer i, Real x, Real y, Real z)
Positionne la valeur du ième noeud à Real3(x,y,z)
void fillView(Real3ArrayView view) const
Remplit la vue view avec les coordonnéees de l'instance.
void init(const VariableNodeReal3 &coords, ItemWithNodes item)
Initialise les coordonnées avec celles des noeuds d'entité item.
GeomElementBase(Real3ConstArrayView coords)
Constructeur à partir des coordonnées coords.
void setItem(Integer i, const Real3 &v)
Positionne la valeur du ième noeud à v.
ViewType view()
Vue modifiable sur l'élément.
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.