Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
MeshArea.cc
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/* MeshArea.h (C) 2000-2016 */
9/* */
10/* Access to mesh information. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/utils/ArcanePrecomp.h"
15
16#include "arcane/utils/FatalErrorException.h"
17
18#include "arcane/core/MeshArea.h"
19#include "arcane/core/IMesh.h"
20#include "arcane/core/ISubDomain.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31MeshArea::
32MeshArea(IMesh* mesh)
33: m_mesh(mesh)
34, m_sub_domain(mesh->subDomain())
35, m_trace_mng(m_sub_domain->traceMng())
36{
37}
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
42MeshArea::
43~MeshArea()
44{
45}
46
47/*---------------------------------------------------------------------------*/
48/*---------------------------------------------------------------------------*/
49
50ISubDomain* MeshArea::
51subDomain()
52{
53 return m_sub_domain;
54}
55
56/*---------------------------------------------------------------------------*/
57/*---------------------------------------------------------------------------*/
58
59ITraceMng* MeshArea::
60traceMng()
61{
62 return m_trace_mng;
63}
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
68IMesh* MeshArea::
69mesh()
70{
71 return m_mesh;
72}
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
76
77void MeshArea::
78setArea(const NodeGroup& nodes, const CellGroup& cells)
79{
80 m_all_nodes = nodes;
81 m_all_cells = cells;
82}
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
88{
89 return m_all_nodes.size();
90}
92{
93 return m_all_edges.size();
94}
96{
97 return m_all_faces.size();
98}
100{
101 return m_all_cells.size();
102}
104{
105 switch (ik) {
106 case IK_Node:
107 return nbNode();
108 case IK_Edge:
109 return nbEdge();
110 case IK_Face:
111 return nbFace();
112 case IK_Cell:
113 return nbCell();
114 case IK_Particle:
115 case IK_DoF:
116 case IK_Unknown:
117 break;
118 }
119 throw FatalErrorException(A_FUNCINFO, "invalid argument");
120}
121
122/*---------------------------------------------------------------------------*/
123/*---------------------------------------------------------------------------*/
124
126{
127 return m_all_nodes;
128}
130{
131 return m_all_edges;
132}
134{
135 return m_all_faces;
136}
138{
139 return m_all_cells;
140}
142{
143 switch (ik) {
144 case IK_Node:
145 return allNodes();
146 case IK_Edge:
147 return allEdges();
148 case IK_Face:
149 return allFaces();
150 case IK_Cell:
151 return allCells();
152 case IK_Particle:
153 case IK_DoF:
154 case IK_Unknown:
155 break;
156 }
157 throw FatalErrorException(A_FUNCINFO, "invalid argument");
158}
159
160/*---------------------------------------------------------------------------*/
161/*---------------------------------------------------------------------------*/
162
164{
165 return m_all_nodes.own();
166}
168{
169 return m_all_edges.own();
170}
172{
173 return m_all_faces.own();
174}
176{
177 return m_all_cells.own();
178}
180{
181 switch (ik) {
182 case IK_Node:
183 return ownNodes();
184 case IK_Edge:
185 return ownEdges();
186 case IK_Face:
187 return ownFaces();
188 case IK_Cell:
189 return ownCells();
190 case IK_Particle:
191 case IK_DoF:
192 case IK_Unknown:
193 break;
194 }
195 throw FatalErrorException(A_FUNCINFO, "invalid argument");
196}
197
198/*---------------------------------------------------------------------------*/
199/*---------------------------------------------------------------------------*/
200
201} // namespace Arcane
202
203/*---------------------------------------------------------------------------*/
204/*---------------------------------------------------------------------------*/
Interface of the subdomain manager.
Definition ISubDomain.h:75
Mesh entity group.
Definition ItemGroup.h:51
virtual ItemGroup allItems(eItemKind item_kind)
Group of all entities of type item_kind.
Definition MeshArea.cc:141
virtual EdgeGroup ownEdges()
Group of all edges belonging to the domain.
Definition MeshArea.cc:167
virtual FaceGroup ownFaces()
Group of all faces belonging to the domain.
Definition MeshArea.cc:171
virtual EdgeGroup allEdges()
Group of all edges.
Definition MeshArea.cc:129
virtual Integer nbEdge()
Number of mesh edges.
Definition MeshArea.cc:91
virtual ItemGroup ownItems(eItemKind item_kind)
Group of all entities belonging to the sub-domain of type item_kind.
Definition MeshArea.cc:179
virtual Integer nbFace()
Number of mesh faces.
Definition MeshArea.cc:95
virtual Integer nbItem(eItemKind ik)
Number of elements of type ik.
Definition MeshArea.cc:103
virtual FaceGroup allFaces()
Group of all faces.
Definition MeshArea.cc:133
virtual CellGroup ownCells() override
Group of all cells belonging to the domain.
Definition MeshArea.cc:175
CellGroup allCells() override
Group of all cells.
Definition MeshArea.cc:137
NodeGroup allNodes() override
Group of all nodes.
Definition MeshArea.cc:125
NodeGroup ownNodes() override
Group of all nodes belonging to the domain.
Definition MeshArea.cc:163
Integer nbNode() override
Number of mesh nodes.
Definition MeshArea.cc:87
Integer nbCell() override
Number of mesh cells.
Definition MeshArea.cc:99
ItemGroupT< Cell > CellGroup
Group of cells.
Definition ItemTypes.h:184
ItemGroupT< Face > FaceGroup
Group of faces.
Definition ItemTypes.h:179
ItemGroupT< Edge > EdgeGroup
Group of edges.
Definition ItemTypes.h:174
ItemGroupT< Node > NodeGroup
Group of nodes.
Definition ItemTypes.h:168
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Int32 Integer
Type representing an integer.
eItemKind
Mesh entity type.
@ IK_Particle
Particle mesh entity.
@ IK_Node
Node mesh entity.
@ IK_Cell
Cell mesh entity.
@ IK_Unknown
Unknown or uninitialized mesh entity.
@ IK_Face
Face mesh entity.
@ IK_DoF
Degree of Freedom mesh entity.
@ IK_Edge
Edge mesh entity.