Arcane  v3.14.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-2022 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-2014 */
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/Item.h"
18#include "arcane/VariableTypes.h"
19
20#include "arcane/geometric/GeomElementView.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25ARCANE_BEGIN_NAMESPACE
26GEOMETRIC_BEGIN_NAMESPACE
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30/*!
31 * \ingroup ArcaneGeometric
32 * \brief Classe de base des éléments géométriques.
33 *
34 * Un élément géométrique contient les coordoonnées des \a NbNode noeuds qui
35 * composent cet élément.
36 *
37 * Pour des raisons de performance, le constructeur
38 * par défaut n'initialise pas les coordonnées.
39 *
40 * Pour récupérer les coordonnées du i-ème noeud de l'élément géométrique,
41 * il suffit d'utiliser l'opérateur []. La modification se fait via
42 * setItem().
43 */
44template<int NbNode>
46{
47 public:
48 //! Constructeur vide.
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 inline 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 inline 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 inline 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 inline 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 void fillView(Real3ArrayView 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:
90
91 Real3POD m_s[NbNode];
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97#include "arcane/geometric/GeneratedGeomElement.h"
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102GEOMETRIC_END_NAMESPACE
103ARCANE_END_NAMESPACE
104
105/*---------------------------------------------------------------------------*/
106/*---------------------------------------------------------------------------*/
107
108#endif
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
Definition Item.h:714
Node node(Int32 i) const
i-ème noeud de l'entité
Definition Item.h:768
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Classe de base des éléments géométriques.
Definition GeomElement.h:46
GeomElementBase()
Constructeur vide.
Definition GeomElement.h:49
const Real3 operator[](Integer i) const
Récupère la valeur du ième noeud.
Definition GeomElement.h:65
GeomElementBase(const VariableNodeReal3 &coords, ItemWithNodes item)
Constructeur à partir des coordonnées coords des noeuds de l'entité item.
Definition GeomElement.h:51
const Real3 s(Integer i) const
Récupère la valeur du ième noeud.
Definition GeomElement.h:63
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
void fillView(Real3ArrayView view) const
Remplit la vue view avec les coordonnéees de l'instance.
Definition GeomElement.h:74
void init(const VariableNodeReal3 &coords, ItemWithNodes item)
Initialise les coordonnées avec celles des noeuds d'entité item.
Definition GeomElement.h:83
GeomElementBase(Real3ConstArrayView coords)
Constructeur à partir des coordonnées coords.
Definition GeomElement.h:56
void setItem(Integer i, const Real3 &v)
Positionne la valeur du ième noeud à v.
Definition GeomElement.h:67
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.