Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
MeshItemInternalList.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* MeshItemInternalList.h (C) 2000-2024 */
9/* */
10/* Indirection tables for mesh entities. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MESHITEMINTERNALLIST_H
13#define ARCANE_CORE_MESHITEMINTERNALLIST_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/ArrayView.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25class ItemSharedInfo;
27} // namespace Arcane
28
29namespace Arcane::mesh
30{
31class DynamicMesh;
32class PolyhedralMesh;
33} // namespace Arcane::mesh
34
35namespace Arcane::impl
36{
37
38/*!
39 * \internal
40 * \brief List of ItemSharedInfo associated with a mesh.
41 */
42class MeshItemSharedInfoList
43{
44 friend ItemInternalConnectivityList;
45 friend ItemBase;
46
47 private:
48
49 MeshItemSharedInfoList() = default;
50 MeshItemSharedInfoList(ItemSharedInfo* v)
51 : m_node(v)
52 , m_edge(v)
53 , m_face(v)
54 , m_cell(v)
55 {}
56
57 private:
58
59 ItemSharedInfo* m_node = nullptr;
60 ItemSharedInfo* m_edge = nullptr;
61 ItemSharedInfo* m_face = nullptr;
62 ItemSharedInfo* m_cell = nullptr;
63};
64
65} // namespace Arcane::impl
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
69
70namespace Arcane
71{
72
73/*---------------------------------------------------------------------------*/
74/*---------------------------------------------------------------------------*/
75
76/*!
77 * \internal
78 * \brief Indirection tables for mesh entities.
79 */
80class ARCANE_CORE_EXPORT MeshItemInternalList
81{
82 // The following two classes need access to
83 // the _internalSet*() methods.
84 friend class mesh::DynamicMesh;
85 friend class mesh::PolyhedralMesh;
86
87 friend class ItemInternalConnectivityList;
88 friend class ItemBase;
89
90 public:
91
92 ItemInternalArrayView nodes;
93 ItemInternalArrayView edges;
94 ItemInternalArrayView faces;
95 ItemInternalArrayView cells;
96 IMesh* mesh = nullptr;
97
98 private:
99
100 void _internalSetNodeSharedInfo(ItemSharedInfo* s);
101 void _internalSetEdgeSharedInfo(ItemSharedInfo* s);
102 void _internalSetFaceSharedInfo(ItemSharedInfo* s);
103 void _internalSetCellSharedInfo(ItemSharedInfo* s);
104
105 private:
106
107 // Do not modify these fields directly.
108 // Use the corresponding _internalSet*() methods
109 ItemSharedInfo* m_node_shared_info = nullptr;
110 ItemSharedInfo* m_edge_shared_info = nullptr;
111 ItemSharedInfo* m_face_shared_info = nullptr;
112 ItemSharedInfo* m_cell_shared_info = nullptr;
113
114 private:
115
116 void _notifyUpdate();
117};
118
119/*---------------------------------------------------------------------------*/
120/*---------------------------------------------------------------------------*/
121
122} // End namespace Arcane
123
124/*---------------------------------------------------------------------------*/
125/*---------------------------------------------------------------------------*/
126
127#endif
Declarations of types on entities.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --