Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IGraph2.h
1/// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* IGraph2.h (C) 2000-2025 */
9/* */
10/* Interface d'un graphe d'un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_IGRAPH2_H
13#define ARCANE_CORE_IGRAPH2_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
21#include "arcane/core/IItemConnectivity.h"
22#include "arcane/core/IndexedItemConnectivityView.h"
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33//! Nombre de type d'entités duales
34static const Integer NB_DUAL_ITEM_TYPE = 5;
35
36extern "C++" ARCANE_CORE_EXPORT eItemKind
37dualItemKind(Integer type);
38
39class IGraphModifier2;
40class IGraph2;
41
42/*---------------------------------------------------------------------------*/
43/*---------------------------------------------------------------------------*/
44/*!
45 * \brief Outillage de connectivité d'un graphe
46 */
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50/*!
51 * \brief Interface du gestionnaire de connectivité d'un graphe
52 */
53class ARCANE_CORE_EXPORT IGraphConnectivity
54{
55 public:
56
57 virtual ~IGraphConnectivity() = default; //!< Libère les ressources
58
59 public:
60
61 //! accès à l'Item dual d'un DualNode (detype DoF)
62 virtual Item dualItem(const DoF& dualNode) const = 0;
63
64 //! accès à la vue des links constitué du dualNode de type(DoF)
65 virtual DoFVectorView links(const DoF& dualNode) const = 0;
66
67 //! accès à la vue des DualNodes constituant un liaison Link de type(DoF)
68 virtual DoFVectorView dualNodes(const DoF& link) const = 0;
69};
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
73
74class ARCANE_CORE_EXPORT IGraphConnectivityObserver
75{
76 public:
77
78 virtual ~IGraphConnectivityObserver() = default;
79
80 public:
81
82 virtual void notifyUpdateConnectivity() = 0;
83};
84
85/*---------------------------------------------------------------------------*/
86/*---------------------------------------------------------------------------*/
87
88class ARCANE_CORE_EXPORT IGraphObserver
89{
90 public:
91
92 virtual ~IGraphObserver() {}
93
94 virtual void notifyUpdate() = 0;
95};
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99/*!
100 * \brief Interface d'un graphe du maillage
101 */
102class ARCANE_CORE_EXPORT IGraph2
103{
104 public:
105
106 virtual ~IGraph2() = default; //!< Libère les ressources
107
108 public:
109
110 virtual IGraphModifier2* modifier() = 0;
111
112 virtual const IGraphConnectivity* connectivity() const = 0;
113
114 virtual Integer registerNewGraphConnectivityObserver(IGraphConnectivityObserver* observer) = 0;
115
116 virtual void releaseGraphConnectivityObserver(Integer observer_id) = 0;
117
118 virtual Integer registerNewGraphObserver(IGraphObserver* observer) = 0;
119
120 virtual void releaseGraphObserver(Integer observer_id) = 0;
121
122 virtual bool isUpdated() = 0;
123
124 //! Nombre de noeuds duaux du graphe
125 virtual Integer nbDualNode() const = 0;
126
127 //! Nombre de liaisons du graphe
128 virtual Integer nbLink() const = 0;
129
130 public:
131
132 //! Retourne la famille des noeuds duaux
133 virtual const IItemFamily* dualNodeFamily() const = 0;
134 virtual IItemFamily* dualNodeFamily() = 0;
135
136 //! Retourne la famille des liaisons
137 virtual const IItemFamily* linkFamily() const = 0;
138 virtual IItemFamily* linkFamily() = 0;
139
140 virtual void printDualNodes() const = 0;
141 virtual void printLinks() const = 0;
142};
143
144/*---------------------------------------------------------------------------*/
145/*---------------------------------------------------------------------------*/
146
147} // namespace Arcane
148
149/*---------------------------------------------------------------------------*/
150/*---------------------------------------------------------------------------*/
151
152#endif
153
Fichier de configuration d'Arcane.
Déclarations des types généraux de Arcane.
Déclarations de types sur les entités.
classe degré de liberté.
Definition Item.h:1517
Interface d'un graphe du maillage.
Definition IGraph2.h:103
virtual Integer nbLink() const =0
Nombre de liaisons du graphe.
virtual Integer nbDualNode() const =0
Nombre de noeuds duaux du graphe.
virtual ~IGraph2()=default
Libère les ressources.
virtual const IItemFamily * dualNodeFamily() const =0
Retourne la famille des noeuds duaux.
virtual const IItemFamily * linkFamily() const =0
Retourne la famille des liaisons.
Outillage de connectivité d'un graphe.
Definition IGraph2.h:54
virtual DoFVectorView links(const DoF &dualNode) const =0
accès à la vue des links constitué du dualNode de type(DoF)
virtual Item dualItem(const DoF &dualNode) const =0
accès à l'Item dual d'un DualNode (detype DoF)
virtual ~IGraphConnectivity()=default
Libère les ressources.
virtual DoFVectorView dualNodes(const DoF &link) const =0
accès à la vue des DualNodes constituant un liaison Link de type(DoF)
Interface d'un graphe du maillage.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Classe de base d'un élément de maillage.
Definition Item.h:83
ItemVectorViewT< DoF > DoFVectorView
Vue sur un vecteur de degre de liberte.
Definition ItemTypes.h:315
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
eItemKind
Genre d'entité de maillage.