Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IndexedIncrementalItemConnectivityMng.cc
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/* IndexedIncrementalItemConnectivityMng.cc (C) 2000-2024 */
9/* */
10/* Gestionnaire de 'IIndexedIncrementalItemConnectivity'. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/mesh/IndexedIncrementalItemConnectivityMng.h"
15
16#include "arcane/core/IndexedItemConnectivityView.h"
17#include "arcane/core/IIndexedIncrementalItemConnectivity.h"
18#include "arcane/mesh/IncrementalItemConnectivity.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane::mesh
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
28
31{
32 public:
34 : m_true_connectivity(x){}
35 public:
37 {
38 return m_true_connectivity;
39 }
41 {
42 return m_true_connectivity->connectivityView();
43 }
44 public:
45 IncrementalItemConnectivity* m_true_connectivity;
46};
47
48/*---------------------------------------------------------------------------*/
49/*---------------------------------------------------------------------------*/
50
51IndexedIncrementalItemConnectivityMng::
52IndexedIncrementalItemConnectivityMng(ITraceMng* tm)
54{
55}
56
57/*---------------------------------------------------------------------------*/
58/*---------------------------------------------------------------------------*/
59
61findOrCreateConnectivity(IItemFamily* source, IItemFamily* target, const String& name)
62{
66 auto x = m_connectivity_map.find(name);
67 if (x != m_connectivity_map.end()) {
68 connectivity = x->second;
69 IIncrementalItemConnectivity* c2 = connectivity->connectivity();
70 IItemFamily* old_source = c2->sourceFamily();
71 IItemFamily* old_target = c2->targetFamily();
72 if (old_source != source)
73 ARCANE_FATAL("A connectivity with the same name '{0}' already exists but with a different source"
74 " old_source={1} new_source={2}",
75 name, old_source->name(), source->name());
76 if (old_target != target)
77 ARCANE_FATAL("A connectivity with the same name '{0}' already exists but with a different target"
78 " old_target={1} new_target={2}",
79 name, old_target->name(), target->name());
80 }
81 else {
82 // Les connectivités créées sont désallouées automatiquement par les familles
83 auto* true_connectivity = new mesh::IncrementalItemConnectivity(source, target, name);
85 m_connectivity_map.insert(std::make_pair(name, connectivity));
86
87 // Ajoute les entités existantes dans la connectivité.
88 true_connectivity->_internalNotifySourceItemsAdded(source->allItems().view().localIds());
89 }
90 return connectivity;
91}
92
93/*---------------------------------------------------------------------------*/
94/*---------------------------------------------------------------------------*/
95
97findConnectivity(const String& name)
98{
99 auto x = m_connectivity_map.find(name);
100 if (x != m_connectivity_map.end())
101 return x->second;
102 ARCANE_FATAL("No connectivity with name '{0}'", name);
103}
104
105/*---------------------------------------------------------------------------*/
106/*---------------------------------------------------------------------------*/
107
108} // namespace Arcane::mesh
109
110/*---------------------------------------------------------------------------*/
111/*---------------------------------------------------------------------------*/
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface pour gérer une connectivité incrémentale.
Interface pour gérer une connectivité incrémentale.
Interface d'une famille d'entités.
virtual String name() const =0
Nom de la famille.
Classe de base d'une vue sur une connectivité non structurée.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Connectivité incrémentale item->item[].
Ref< IIndexedIncrementalItemConnectivity > findConnectivity(const String &name) override
Cherche ou créé une connectivité.
Ref< IIndexedIncrementalItemConnectivity > findOrCreateConnectivity(IItemFamily *source, IItemFamily *target, const String &name) override
Cherche ou créé une connectivité.
IIncrementalItemConnectivity * connectivity() override
Interface de la connectivité associée.
IndexedItemConnectivityViewBase view() const override
Vue sur la connectivité.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.