Arcane  v3.15.0.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-2024 */
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 <functional>
18#include <set>
19
21
22#include "arcane/IItemFamily.h"
23#include "arcane/IIncrementalItemConnectivity.h"
24#include "arcane/IGraph2.h"
25
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30ARCANE_BEGIN_NAMESPACE
31
32/*---------------------------------------------------------------------------*/
33/*---------------------------------------------------------------------------*/
34
36{
37public:
38
39 virtual ~IItemFamilyNetwork() {}
40
41public :
42 typedef std::function<void (IItemFamily*)> IItemFamilyNetworkTask;
43
44public:
45 enum eSchedulingOrder{
46 TopologicalOrder,
47 InverseTopologicalOrder,
48 Unknown
49 };
50
51 // TMP for debug
52public:
53 static constexpr bool plug_serializer = true;
54
55public:
56 virtual bool isActivated() const = 0 ;
57
58 /*! Ajoute une dépendance entre deux familles ; un élément de \a master_family est constitué d'éléments de \a slave_family.
59 * La responsabilité de la mémoire de \a master_to_slave_connectivity est prise en charge par ItemFamilyNetwork
60 */
61 virtual void addDependency(IItemFamily* master_family, IItemFamily* slave_family, IIncrementalItemConnectivity* slave_to_master_connectivity, bool is_deep_connectivity=true) =0;
62
63 /*! Ajoute une relation entre deux familles ; un élément de \a source_family est connecté à un ou plusieurs éléments de \a target_family
64 * La responsabilité de la mémoire de \a source_to_target_connectivity est prise en charge par ItemFamilyNetwork
65 */
66 virtual void addRelation(IItemFamily* source_family, IItemFamily* target_family, IIncrementalItemConnectivity* source_to_target_connectivity) = 0;
67
68 //! Retourne la connectivité de dépendance entre la famille \a source_family et \a target_family
69 virtual IIncrementalItemConnectivity* getDependency(IItemFamily* source_family, IItemFamily* target_family) = 0;
70 virtual IIncrementalItemConnectivity* getRelation(IItemFamily* source_family, IItemFamily* target_family) = 0;
71
72 //! 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
73 virtual IIncrementalItemConnectivity* getConnectivity(IItemFamily* source_family, IItemFamily* target_family, const String& name) =0;
74 virtual IIncrementalItemConnectivity* getConnectivity(IItemFamily* source_family, IItemFamily* target_family, const String& name, bool& is_dependency) =0;
75
76 //! Retourne, si elle est associée à un stockage, 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
77 virtual IIncrementalItemConnectivity* getStoredConnectivity(IItemFamily* source_family, IItemFamily* target_family, const String& name) =0;
78 virtual IIncrementalItemConnectivity* getStoredConnectivity(IItemFamily* source_family, IItemFamily* target_family, const String& name, bool& is_dependency) =0;
79
80 //! Obtenir la liste de toutes les connectivités, qu'elles soient relation ou dépendance
82
83 //! 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
85 virtual SharedArray<IIncrementalItemConnectivity*> getParentConnectivities(IItemFamily* target_family) =0;
86
87 //! Obtenir la liste de toutes les dépendances, filles d'une famille \a source_family ou parentes d'une famille \a target_family
89 virtual SharedArray<IIncrementalItemConnectivity*> getParentDependencies(IItemFamily* target_family) = 0;
90
91 //! Obtenir la liste de toutes les relations, filles d'une famille \a source_family ou parentes d'une famille \a target_family
93 virtual SharedArray<IIncrementalItemConnectivity*> getParentRelations(IItemFamily* source_family) = 0;
94
95 //! Obtenir la liste de toutes les familles
96 virtual const std::set<IItemFamily*>& getFamilies() const =0;
97
98 virtual SharedArray<IItemFamily*> getFamilies(eSchedulingOrder order) const =0;
99
100 //! Ordonnance l'exécution d'une tâche, dans l'ordre topologique ou topologique inverse du graphe de dépendance des familles
101 virtual void schedule(IItemFamilyNetworkTask task, eSchedulingOrder order = TopologicalOrder) =0;
102
103 //! Positionne une connectivité comme étant stockée.
104 virtual void setIsStored(IIncrementalItemConnectivity* connectivity) = 0;
105
106 //! Récupère l'information relative au stockage de la connectivité
107 virtual bool isStored(IIncrementalItemConnectivity* connectivity) = 0;
108
109 //! Récupère l'information relative au stockage de la connectivité
110 virtual bool isDeep(IIncrementalItemConnectivity* connectivity) = 0;
111
112 //! enregistre un graphe gérant des DoFs connectés au maillage
113 virtual Integer registerConnectedGraph(IGraph2* graph) = 0 ;
114
115 //! dé enregistre un graphe gérant des DoFs connectés au maillage
116 virtual void releaseConnectedGraph(Integer graph_id) = 0 ;
117
118 //! supprime les DoFs et les liens entre DoFs connectés aux mailles supprimées
120
121};
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
125
126ARCANE_END_NAMESPACE
127
128/*---------------------------------------------------------------------------*/
129/*---------------------------------------------------------------------------*/
130
131#endif /* IITEMFAMILYNETWORK_H_ */
Fichier de configuration d'Arcane.
Interface d'un graphe du maillage.
Definition IGraph2.h:90
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
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
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.
Implémentation d'une collection d'éléments sous forme de vecteur.
Definition List.h:222
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par référence.
Chaîne de caractères unicode.