Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
GeomShapeMng.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/* GeomShapeMng.h (C) 2000-2014 */
9/* */
10/* Classe gérant les GeomShape d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_GEOMETRIC_GEOMSHAPEMNG_H
13#define ARCANE_GEOMETRIC_GEOMSHAPEMNG_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/VariableTypes.h"
18
19#include "arcane/geometric/GeomShapeView.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24ARCANE_BEGIN_NAMESPACE
25GEOMETRIC_BEGIN_NAMESPACE
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32/*!
33 * \ingroup ArcaneGeometric
34 * \brief Classe gérant les GeomShape des mailles d'un maillage.
35 *
36 * Cette classe stocke les informations des formes géométriques (GeomShape) associées
37 * aux mailles du maillage. Pour une maille, la récupération d'une vue se fait
38 * via la méthode initShape():
39 \code
40 GeomShapeMng shape_mng;
41 Cell cell;
42 GeomShapeView shape_view;
43 // Initialise la vue \a shape_view sur la maille \a cell
44 shape_mng.initShape(shape_view,cell);
45 \endcode
46 *
47 * Une vue peut-être utilisée plusieurs fois. Par exemple, si on souhaite
48 * itérer sur plusieurs mailles:
49 \code
50 * GeomShapeMng shape_mng;
51 * GeomShapeView shape_view;
52 * ENUMERATE_CELL(icell,allCells()){
53 * Cell cell = *icell;
54 * // Initialise la vue \a shape_view sur la maille \a cell
55 * shape_mng.initShape(shape_view,cell);
56 * info() << "Node0=" << shape_view.node(0);
57 * }
58 \endcode
59
60 * La vue récupérée par GeomShapeView est constante. Pour récupérer une
61 * vue modifiable, il faut utiliser mutableShapeView(). La vue modifiable
62 * sert uniquement à mettre à jour les différentes
63 * coordonnées (noeuds, centre des faces, ...).
64 *
65 * Avant de pouvoir utiliser une des méthodes initShape() ou mutableShapeView(),
66 * il faut initialiser une des instance par l'appel à initialize().
67 * L'initialisation effectue uniquement l'allocation mémoire mais ne met pas à jour
68 * les coordonnées.
69 * \warning La méthode initialize() doit aussi être appelée lorsque la topologie
70 * du maillage change, par exemple après un ajout ou suppression de maille.
71 *
72 * Cette classe gère uniquement les données sur les formes géométriques et
73 * ces dernières sont indépendantes des autres variables. Cela signifie
74 * que si les coordonnées d'un noeud du maillage change, il faut explicitement
75 * remettre à jour les informations de la forme géométrique. %Arcane fournit
76 * la classe BarycentricGeomShapeComputer pour cela mais l'utilisateur
77 * peut calculer ces informations d'une autre manière qu'en utilisant le barycentre.
78 *
79 * Toutes les instances de cette classe dont le nom name() est identique
80 * sont implicitement partagées et donc fournissent les mêmes GeomShapeView.
81 * Par exemple:
82 \code
83 IMesh* mesh;
84 GeomShapeMng shape_mng(mesh,"GenericElement");
85 GeomShapeMng shape_mng2(shape_mng);
86 // shape_mng et shape_mng2 partagent les mêmes GeomShapeView
87
88 GeomShapeMng shape_mng3(mesh,"AleGenericElement");
89 // shape_mng et shape_mng3 utilisent des valeurs différentes.
90 \endcode
91 *
92 */
93class ARCANE_CEA_GEOMETRIC_EXPORT GeomShapeMng
94{
95 // NOTE:
96 // Comme cette classe peut-être utilisée par copie ou créée directement
97 // via des noms de variable, elle ne doit pas contenir de champs
98 // autres que des variables Arcane pour qu'il n'y ait pas d'incohérences
99 // entre les différentes instances.
100
101 public:
102
103 //! Initialise pour le maillage \a mesh avec le nom \a name
104 GeomShapeMng(IMesh* mesh,const String& name);
105 //! Initialise pour le maillage \a mesh avec le nom par défaut \a GenericElement
106 GeomShapeMng(IMesh* mesh);
107 //! Constructeur de recopie.
108 GeomShapeMng(const GeomShapeMng& rhs);
109
110 public:
111
112 //! Indique si l'instance est initialisée.
113 bool isInitialized() const { return m_cell_shape_nodes.arraySize()!=0; }
114
115 /*!
116 * \brief Initialise l'instance.
117 *
118 * Il n'y a besoin d'initialiser qu'une seule fois les instances qui
119 * ont le même nom.
120 */
121 void initialize();
122
123 //! Initialise la vue \a ge avec les informations de la maille \a cell
124 void initShape(GeomShapeView& ge,Cell cell) const
125 {
126 ge._setArray(m_cell_shape_nodes[cell].data(),m_cell_shape_faces[cell].data(),&m_cell_shape_centers[cell]);
127 ge._setItem(cell);
128 }
129
130 //! Retourne une vue modifiable sur la GeomShape de la maille \a cell
132 {
133 return GeomShapeMutableView(m_cell_shape_nodes[cell].data(),m_cell_shape_faces[cell].data(),&m_cell_shape_centers[cell]);
134 }
135
136 //! Nom du gestionnaire.
137 const String& name() const { return m_name; }
138
139 private:
140
141 String m_name;
142 VariableCellArrayReal3 m_cell_shape_nodes; //!< Elements génériques noeuds
143 VariableCellArrayReal3 m_cell_shape_faces; //!< Elements génériques face
144 VariableCellReal3 m_cell_shape_centers; //!< Elements génériques centre
145};
146
147/*---------------------------------------------------------------------------*/
148/*---------------------------------------------------------------------------*/
149
150typedef GeomShapeMng GeomCellMng;
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155GEOMETRIC_END_NAMESPACE
156ARCANE_END_NAMESPACE
157
158/*---------------------------------------------------------------------------*/
159/*---------------------------------------------------------------------------*/
160
161#endif
Maille d'un maillage.
Definition Item.h:1178
Classe gérant les GeomShape des mailles d'un maillage.
GeomShapeMutableView mutableShapeView(Cell cell)
Retourne une vue modifiable sur la GeomShape de la maille cell.
bool isInitialized() const
Indique si l'instance est initialisée.
void initShape(GeomShapeView &ge, Cell cell) const
Initialise la vue ge avec les informations de la maille cell.
const String & name() const
Nom du gestionnaire.
Vue modifiable sur un GeomShape.
Vue constante sur une forme géométrique GeomShape.
Chaîne de caractères unicode.