14#include "ItemFamilyNetwork.h"
39 m_is_activated =
true ;
54 m_is_activated =
true ;
101 _checkConnectivityName(*connectivity,name);
103 return *connectivity;
105 connectivity = m_relation_graph.getEdge(source_family,target_family);
108 _checkConnectivityName(*connectivity,name);
109 return *connectivity;
142 return m_connectivity_list;
151 return _getConnectivitiesFromGraph(m_dependency_graph.outEdges(
source_family));
160 return _getConnectivitiesFromGraph(m_dependency_graph.inEdges(
target_family));
169 return _getConnectivitiesFromGraph(m_relation_graph.outEdges(
source_family));
178 return _getConnectivitiesFromGraph(m_relation_graph.inEdges(
target_family));
203_getConnectivitiesFromGraph(
const ConnectivityGraph::ConnectedEdgeSet&
connectivity_edges)
210 return connectivities;
216SharedArray<IIncrementalItemConnectivity*> ItemFamilyNetwork::
217_getConnectivitiesFromGraph(
const ConnectivityGraph::ConnectedEdgeSet& connectivity_edges1,
const ConnectivityGraph::ConnectedEdgeSet& connectivity_edges2)
219 SharedArray<IIncrementalItemConnectivity*> connectivities(connectivity_edges1.size()+connectivity_edges2.size());
221 for (
const auto& connectivity_edge : connectivity_edges1){
222 connectivities[index++] = connectivity_edge;
224 for (
const auto& connectivity_edge : connectivity_edges2){
225 connectivities[index++] = connectivity_edge;
227 return connectivities;
236 _getConnectivityStatus(connectivity).second.first =
true;
245 return _getConnectivityStatus(connectivity).second.first;
251 return _getConnectivityStatus(connectivity).second.second;
256void ItemFamilyNetwork::
259 if (connectivity->
name() != name)
throw FatalErrorException(String::format(
"Found connectivity ({0}) has not the expected name ({1}) ",connectivity->
name(),name));
272 case TopologicalOrder:
273 for (
const auto& family : m_dependency_graph.topologicalSort())
274 families.add(family);
276 case InverseTopologicalOrder:
277 for (
const auto& family : m_dependency_graph.topologicalSort().reverseOrder())
278 families.add(family);
281 ARCANE_FATAL(
"Cannot schedule task, scheduling order is unkwnown. Set Scheduling order");
291 case TopologicalOrder:
292 for (
const auto& family : m_dependency_graph.topologicalSort())
295 case InverseTopologicalOrder:
296 for (
const auto& family : m_dependency_graph.topologicalSort().reverseOrder())
300 ARCANE_FATAL(
"Cannot schedule task, scheduling order is unkwnown. Set Scheduling order");
308std::pair<IIncrementalItemConnectivity* const,std::pair<bool,bool>>& ItemFamilyNetwork::
313 ARCANE_FATAL(
"Cannot find connectivity {0} between families {1} and {2}",
323 Integer
graph_id = m_registred_graphs.size() ;
324 m_registred_graphs.add(
graph) ;
335 for(
auto graph : m_registred_graphs)
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface d'un graphe du maillage.
Interface pour gérer une connectivité incrémentale.
virtual String name() const =0
Nom de la connectivité
virtual IItemFamily * targetFamily() const =0
Famille cible.
virtual IItemFamily * sourceFamily() const =0
Famille source.
Interface d'une famille d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void setIsStored(IIncrementalItemConnectivity *connectivity) override
Positionne une connectivité comme étant stockée. A l'ajout les connectivités sont décrites comme non ...
List< IIncrementalItemConnectivity * > getConnectivities() override
Obtenir la liste de toutes les connectivités, qu'elles soient relation ou dépendance.
void addRelation(IItemFamily *source_family, IItemFamily *target_family, IIncrementalItemConnectivity *source_to_target_connectivity) override
SharedArray< IIncrementalItemConnectivity * > getChildRelations(IItemFamily *source_family) override
Obtenir la liste de toutes les relations, filles d'une famille source_family ou parentes d'une famill...
SharedArray< IIncrementalItemConnectivity * > getChildConnectivities(IItemFamily *source_family) override
Obtenir la liste de toutes les connectivités (dépendances ou relations), filles d'une famille source_...
bool isStored(IIncrementalItemConnectivity *connectivity) override
Récupère l'information relative au stockage de la connectivité
Integer registerConnectedGraph(IGraph2 *graph) override
enregistre un graphe gérant des DoFs connectés au maillage
const std::set< IItemFamily * > & getFamilies() const override
Obtenir la liste de toutes les familles.
void addDependency(IItemFamily *master_family, IItemFamily *slave_family, IIncrementalItemConnectivity *master_to_slave_connectivity, bool is_deep_connectivity) override
SharedArray< IIncrementalItemConnectivity * > getChildDependencies(IItemFamily *source_family) override
Obtenir la liste de toutes les dépendances, filles d'une famille source_family ou parentes d'une fami...
bool isDeep(IIncrementalItemConnectivity *connectivity) override
Récupère l'information relative au stockage de la connectivité
void removeConnectedDoFsFromCells(Int32ConstArrayView local_ids) override
supprime les DoFs et les liens entre DoFs connectés aux mailles supprimées
IIncrementalItemConnectivity * getConnectivity(IItemFamily *source_family, IItemFamily *target_family, const String &name) override
Obtenir une connectivité entre les familles source_family et target_family de nom name,...
IIncrementalItemConnectivity * getStoredConnectivity(IItemFamily *source_family, IItemFamily *target_family, const String &name) override
Retourne, si elle es associée à un stockage, la connectivité entre les familles source_family et targ...
void releaseConnectedGraph(Integer graph_id) override
dé enregistre un graphe gérant des DoFs connectés au maillage
IIncrementalItemConnectivity * getDependency(IItemFamily *source_family, IItemFamily *target_family) override
Retourne la connectivité de dépendance entre la famille source_family et target_family.
void schedule(IItemFamilyNetworkTask task, eSchedulingOrder order=TopologicalOrder) override
Ordonnance l'exécution d'une tâche, dans l'ordre topologique ou topologique inverse du graphe de dépe...
Vue constante d'un tableau de type T.
Exception lorsqu'une erreur fatale est survenue.
Chaîne de caractères unicode.
Int32 Integer
Type représentant un entier.