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