Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
IItemFamilyNetwork.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/* IItemFamilyNetwork.h (C) 2000-2025 */
9/* */
10/* Interface to handle ItemFamily relations through their connectivities. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IITEMFAMILYNETWORK_H_
13#define ARCANE_IITEMFAMILYNETWORK_H_
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/IItemFamily.h"
18#include "arcane/core/IIncrementalItemConnectivity.h"
19#include "arcane/core/IGraph2.h"
20
21#include <functional>
22#include <set>
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27namespace Arcane
28{
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
34{
35 public:
36
37 virtual ~IItemFamilyNetwork() = default;
38
39 public:
40
41 typedef std::function<void(IItemFamily*)> IItemFamilyNetworkTask;
42
43 public:
44
45 enum eSchedulingOrder
46 {
47 TopologicalOrder,
48 InverseTopologicalOrder,
49 Unknown
50 };
51
52 // TMP for debug
53 public:
54
55 static constexpr bool plug_serializer = true;
56
57 public:
58
59 virtual bool isActivated() const = 0;
60
61 /*!
62 * \brief Ajoute une dépendance entre deux familles ; un élément de \a master_family est constitué d'éléments de \a slave_family.
63 * La responsabilité de la mémoire de \a master_to_slave_connectivity est prise en charge par ItemFamilyNetwork
64 */
65 virtual void addDependency(IItemFamily* master_family, IItemFamily* slave_family,
66 IIncrementalItemConnectivity* slave_to_master_connectivity,
67 bool is_deep_connectivity = true) = 0;
68
69 /*!
70 * \brief Ajoute une relation entre deux familles ; un élément de \a source_family est connecté à un ou plusieurs éléments de \a target_family
71 * La responsabilité de la mémoire de \a source_to_target_connectivity est prise en charge par ItemFamilyNetwork
72 */
73 virtual void addRelation(IItemFamily* source_family,
74 IItemFamily* target_family,
75 IIncrementalItemConnectivity* source_to_target_connectivity) = 0;
76
77 //! Retourne la connectivité de dépendance entre la famille \a source_family et \a target_family
78 virtual IIncrementalItemConnectivity* getDependency(IItemFamily* source_family, IItemFamily* target_family) = 0;
79 virtual IIncrementalItemConnectivity* getRelation(IItemFamily* source_family, IItemFamily* target_family) = 0;
80
81 //! Retourne la connectivité entre les familles \a source_family et \a target_family de nom \a name, qu'elle soit une relation ou une dépendance
83 IItemFamily* target_family,
84 const String& name) = 0;
86 IItemFamily* target_family,
87 const String& name,
88 bool& is_dependency) = 0;
89
90 /*!
91 * \brief Retourne, si elle est associée à un stockage, la connectivité entre les
92 * familles \a source_family et \a target_family de nom \a name,
93 * qu'elle soit une relation ou une dépendance.
94 */
96 IItemFamily* target_family,
97 const String& name) = 0;
99 IItemFamily* target_family,
100 const String& name,
101 bool& is_dependency) = 0;
102
103 //! Obtenir la liste de toutes les connectivités, qu'elles soient relation ou dépendance
105
106 //! Obtenir la liste de toutes les connectivités (dépendances ou relations), filles d'une famille \a source_family ou parentes d'une famille \a target_family
108 virtual SharedArray<IIncrementalItemConnectivity*> getParentConnectivities(IItemFamily* target_family) = 0;
109
110 //! Obtenir la liste de toutes les dépendances, filles d'une famille \a source_family ou parentes d'une famille \a target_family
112 virtual SharedArray<IIncrementalItemConnectivity*> getParentDependencies(IItemFamily* target_family) = 0;
113
114 //! Obtenir la liste de toutes les relations, filles d'une famille \a source_family ou parentes d'une famille \a target_family
116 virtual SharedArray<IIncrementalItemConnectivity*> getParentRelations(IItemFamily* source_family) = 0;
117
118 //! Obtenir la liste de toutes les familles
119 virtual const std::set<IItemFamily*>& getFamilies() const = 0;
120
121 virtual SharedArray<IItemFamily*> getFamilies(eSchedulingOrder order) const = 0;
122
123 //! Ordonnance l'exécution d'une tâche, dans l'ordre topologique ou topologique inverse du graphe de dépendance des familles
124 virtual void schedule(IItemFamilyNetworkTask task, eSchedulingOrder order = TopologicalOrder) = 0;
125
126 //! Positionne une connectivité comme étant stockée.
127 virtual void setIsStored(IIncrementalItemConnectivity* connectivity) = 0;
128
129 //! Récupère l'information relative au stockage de la connectivité
130 virtual bool isStored(IIncrementalItemConnectivity* connectivity) = 0;
131
132 //! Récupère l'information relative au stockage de la connectivité
133 virtual bool isDeep(IIncrementalItemConnectivity* connectivity) = 0;
134
135 //! enregistre un graphe gérant des DoFs connectés au maillage
137
138 //! dé enregistre un graphe gérant des DoFs connectés au maillage
139 virtual void releaseConnectedGraph(Integer graph_id) = 0;
140
141 //! supprime les DoFs et les liens entre DoFs connectés aux mailles supprimées
143};
144
145/*---------------------------------------------------------------------------*/
146/*---------------------------------------------------------------------------*/
147
148} // namespace Arcane
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152
153#endif /* IITEMFAMILYNETWORK_H_ */
Interface d'un graphe du maillage.
Definition IGraph2.h:103
Interface pour gérer une connectivité incrémentale.
virtual IIncrementalItemConnectivity * getStoredConnectivity(IItemFamily *source_family, IItemFamily *target_family, const String &name)=0
Retourne, si elle est associée à un stockage, la connectivité entre les familles source_family et tar...
virtual bool isStored(IIncrementalItemConnectivity *connectivity)=0
Récupère l'information relative au stockage de la connectivité
virtual void addDependency(IItemFamily *master_family, IItemFamily *slave_family, IIncrementalItemConnectivity *slave_to_master_connectivity, bool is_deep_connectivity=true)=0
Ajoute une dépendance entre deux familles ; un élément de master_family est constitué d'éléments de s...
virtual const std::set< IItemFamily * > & getFamilies() const =0
Obtenir la liste de toutes les familles.
virtual List< IIncrementalItemConnectivity * > getConnectivities()=0
Obtenir la liste de toutes les connectivités, qu'elles soient relation ou dépendance.
virtual SharedArray< IIncrementalItemConnectivity * > getChildConnectivities(IItemFamily *source_family)=0
Obtenir la liste de toutes les connectivités (dépendances ou relations), filles d'une famille source_...
virtual bool isDeep(IIncrementalItemConnectivity *connectivity)=0
Récupère l'information relative au stockage de la connectivité
virtual void removeConnectedDoFsFromCells(Int32ConstArrayView local_ids)=0
supprime les DoFs et les liens entre DoFs connectés aux mailles supprimées
virtual IIncrementalItemConnectivity * getDependency(IItemFamily *source_family, IItemFamily *target_family)=0
Retourne la connectivité de dépendance entre la famille source_family et target_family.
virtual void setIsStored(IIncrementalItemConnectivity *connectivity)=0
Positionne une connectivité comme étant stockée.
virtual void schedule(IItemFamilyNetworkTask task, eSchedulingOrder order=TopologicalOrder)=0
Ordonnance l'exécution d'une tâche, dans l'ordre topologique ou topologique inverse du graphe de dépe...
virtual IIncrementalItemConnectivity * getConnectivity(IItemFamily *source_family, IItemFamily *target_family, const String &name)=0
Retourne la connectivité entre les familles source_family et target_family de nom name,...
virtual SharedArray< IIncrementalItemConnectivity * > getChildDependencies(IItemFamily *source_family)=0
Obtenir la liste de toutes les dépendances, filles d'une famille source_family ou parentes d'une fami...
virtual SharedArray< IIncrementalItemConnectivity * > getChildRelations(IItemFamily *source_family)=0
Obtenir la liste de toutes les relations, filles d'une famille source_family ou parentes d'une famill...
virtual Integer registerConnectedGraph(IGraph2 *graph)=0
enregistre un graphe gérant des DoFs connectés au maillage
virtual void addRelation(IItemFamily *source_family, IItemFamily *target_family, IIncrementalItemConnectivity *source_to_target_connectivity)=0
Ajoute une relation entre deux familles ; un élément de source_family est connecté à un ou plusieurs ...
virtual void releaseConnectedGraph(Integer graph_id)=0
dé enregistre un graphe gérant des DoFs connectés au maillage
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Implémentation d'une collection d'éléments sous forme de vecteur.
Definition List.h:222
Vecteur 1D de données avec sémantique par référence.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569