Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
MatItemEnumerator.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/* MatItemEnumerator.cc (C) 2000-2026 */
9/* */
10/* Enumerators for material cells. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
15
16#include "arcane/core/materials/ComponentItemVectorView.h"
17#include "arcane/core/materials/IMeshMaterialMng.h"
18#include "arcane/core/materials/IMeshBlock.h"
19#include "arcane/core/materials/MatItemVector.h"
20#include "arcane/core/materials/EnvItemVector.h"
21#include "arcane/core/materials/internal/IMeshComponentInternal.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
32
33/*---------------------------------------------------------------------------*/
34/*---------------------------------------------------------------------------*/
35
36namespace Arcane::Materials
37{
38
39/*---------------------------------------------------------------------------*/
40/*---------------------------------------------------------------------------*/
41
42ComponentCellEnumerator::
43ComponentCellEnumerator(const ComponentItemVectorView& v)
44: m_index(0)
45, m_size(v._matvarIndexes().size())
46, m_constituent_list_view(v._constituentItemListView())
47, m_matvar_indexes(v._matvarIndexes())
48, m_component(v.component())
49{
50#ifdef ARCANE_CHECK
51 if (m_index < m_size)
52 _check();
53#endif
54}
55
56/*---------------------------------------------------------------------------*/
57/*---------------------------------------------------------------------------*/
58
59MatCellEnumerator MatCellEnumerator::
60create(IMeshMaterial* mat)
61{
62 return MatCellEnumerator(mat->view());
63}
64
65/*---------------------------------------------------------------------------*/
66/*---------------------------------------------------------------------------*/
67
68MatCellEnumerator MatCellEnumerator::
69create(const MatCellVector& miv)
70{
71 return create(miv.view());
72}
73
74/*---------------------------------------------------------------------------*/
75/*---------------------------------------------------------------------------*/
76
77MatCellEnumerator MatCellEnumerator::
78create(MatCellVectorView v)
79{
80 return MatCellEnumerator(v);
81}
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
85
86/*---------------------------------------------------------------------------*/
87/*---------------------------------------------------------------------------*/
88
89EnvCellEnumerator EnvCellEnumerator::
90create(IMeshEnvironment* env)
91{
92 return EnvCellEnumerator(env->view());
93}
94
95/*---------------------------------------------------------------------------*/
96/*---------------------------------------------------------------------------*/
97
98EnvCellEnumerator EnvCellEnumerator::
99create(const EnvCellVector& miv)
100{
101 return create(miv.view());
102}
103
104/*---------------------------------------------------------------------------*/
105/*---------------------------------------------------------------------------*/
106
107EnvCellEnumerator EnvCellEnumerator::
108create(EnvCellVectorView v)
109{
110 return EnvCellEnumerator(v);
111}
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116/*---------------------------------------------------------------------------*/
117/*---------------------------------------------------------------------------*/
118
119EnvCellEnumerator CellGenericEnumerator::
120create(IMeshEnvironment* env)
121{
122 return EnvCellEnumerator::create(env);
123}
124
125/*---------------------------------------------------------------------------*/
126/*---------------------------------------------------------------------------*/
127
128EnvCellEnumerator CellGenericEnumerator::
129create(const EnvCellVector& ecv)
130{
131 return EnvCellEnumerator::create(ecv);
132}
133
134/*---------------------------------------------------------------------------*/
135/*---------------------------------------------------------------------------*/
136
137EnvCellEnumerator CellGenericEnumerator::
138create(EnvItemVectorView v)
139{
140 return EnvCellEnumerator::create(v);
141}
142
143/*---------------------------------------------------------------------------*/
144/*---------------------------------------------------------------------------*/
145
146MatCellEnumerator CellGenericEnumerator::
147create(IMeshMaterial* mat)
148{
149 return MatCellEnumerator::create(mat);
150}
151
152/*---------------------------------------------------------------------------*/
153/*---------------------------------------------------------------------------*/
154
155MatCellEnumerator CellGenericEnumerator::
156create(const MatCellVector& miv)
157{
158 return MatCellEnumerator::create(miv);
159}
160
161/*---------------------------------------------------------------------------*/
162/*---------------------------------------------------------------------------*/
163
164MatCellEnumerator CellGenericEnumerator::
165create(MatItemVectorView v)
166{
167 return MatCellEnumerator::create(v);
168}
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
173CellEnumerator CellGenericEnumerator::
174create(CellVectorView v)
175{
176 return CellEnumerator(v);
177}
178
179/*---------------------------------------------------------------------------*/
180/*---------------------------------------------------------------------------*/
181
182CellEnumerator CellGenericEnumerator::
183create(const CellGroup& v)
184{
185 return create(v.view());
186}
187
188/*---------------------------------------------------------------------------*/
189/*---------------------------------------------------------------------------*/
190
191/*---------------------------------------------------------------------------*/
192/*---------------------------------------------------------------------------*/
193
194ComponentCellEnumerator ComponentCellEnumerator::
195create(IMeshComponent* component)
196{
197 return ComponentCellEnumerator(component->view());
198}
199
200/*---------------------------------------------------------------------------*/
201/*---------------------------------------------------------------------------*/
202
203ComponentCellEnumerator ComponentCellEnumerator::
204create(const ComponentItemVector& v)
205{
206 return create(v.view());
207}
208
209/*---------------------------------------------------------------------------*/
210/*---------------------------------------------------------------------------*/
211
212ComponentCellEnumerator ComponentCellEnumerator::
213create(ComponentItemVectorView v)
214{
215 return ComponentCellEnumerator(v);
216}
217
218/*---------------------------------------------------------------------------*/
219/*---------------------------------------------------------------------------*/
220
221/*---------------------------------------------------------------------------*/
222/*---------------------------------------------------------------------------*/
223
224ComponentEnumerator::
225ComponentEnumerator(ConstArrayView<IMeshComponent*> components)
226: m_components(components)
227, m_index(0)
228, m_size(m_components.size())
229{
230}
231
232/*---------------------------------------------------------------------------*/
233/*---------------------------------------------------------------------------*/
234
235/*---------------------------------------------------------------------------*/
236/*---------------------------------------------------------------------------*/
237
238MatEnumerator::
239MatEnumerator(IMeshMaterialMng* mm)
240: m_mats(mm->materials())
241, m_index(0)
242, m_size(m_mats.size())
243{
244}
245
246/*---------------------------------------------------------------------------*/
247/*---------------------------------------------------------------------------*/
248
249MatEnumerator::
250MatEnumerator(IMeshEnvironment* env)
251: m_mats(env->materials())
252, m_index(0)
253, m_size(m_mats.size())
254{
255}
256
257/*---------------------------------------------------------------------------*/
258/*---------------------------------------------------------------------------*/
259
260MatEnumerator::
261MatEnumerator(ConstArrayView<IMeshMaterial*> mats)
262: m_mats(mats)
263, m_index(0)
264, m_size(m_mats.size())
265{
266}
267
268/*---------------------------------------------------------------------------*/
269/*---------------------------------------------------------------------------*/
270
271/*---------------------------------------------------------------------------*/
272/*---------------------------------------------------------------------------*/
273
274EnvEnumerator::
275EnvEnumerator(IMeshMaterialMng* mm)
276: m_envs(mm->environments())
277, m_index(0)
278, m_size(m_envs.size())
279{
280}
281
282/*---------------------------------------------------------------------------*/
283/*---------------------------------------------------------------------------*/
284
285EnvEnumerator::
286EnvEnumerator(IMeshBlock* mb)
287: m_envs(mb->environments())
288, m_index(0)
289, m_size(m_envs.size())
290{
291}
292
293/*---------------------------------------------------------------------------*/
294/*---------------------------------------------------------------------------*/
295
296EnvEnumerator::
297EnvEnumerator(ConstArrayView<IMeshEnvironment*> envs)
298: m_envs(envs)
299, m_index(0)
300, m_size(m_envs.size())
301{
302}
303
304/*---------------------------------------------------------------------------*/
305/*---------------------------------------------------------------------------*/
306
307/*---------------------------------------------------------------------------*/
308/*---------------------------------------------------------------------------*/
309
310AllEnvCellEnumerator AllEnvCellEnumerator::
311create(AllEnvCellVectorView items)
312{
313 return AllEnvCellEnumerator(items);
314}
315
316/*---------------------------------------------------------------------------*/
317/*---------------------------------------------------------------------------*/
318
319AllEnvCellEnumerator AllEnvCellEnumerator::
320create(IMeshMaterialMng* mng, const CellVectorView& view)
321{
322 return create(mng->view(view));
323}
324
325/*---------------------------------------------------------------------------*/
326/*---------------------------------------------------------------------------*/
327
328AllEnvCellEnumerator AllEnvCellEnumerator::
329create(IMeshMaterialMng* mng, const CellGroup& group)
330{
331 return create(mng->view(group));
332}
333
334/*---------------------------------------------------------------------------*/
335/*---------------------------------------------------------------------------*/
336
337AllEnvCellEnumerator AllEnvCellEnumerator::
338create(IMeshBlock* block)
339{
340 return create(block->view());
341}
342
343/*---------------------------------------------------------------------------*/
344/*---------------------------------------------------------------------------*/
345
346/*---------------------------------------------------------------------------*/
347/*---------------------------------------------------------------------------*/
348
349ComponentPartCellEnumerator ComponentPartCellEnumerator::
350create(ComponentPartItemVectorView v)
351{
352 return ComponentPartCellEnumerator(v, 0);
353}
354
355/*---------------------------------------------------------------------------*/
356/*---------------------------------------------------------------------------*/
357
358ComponentPartCellEnumerator ComponentPartCellEnumerator::
359create(IMeshComponent* component, eMatPart part)
360{
361 return create(component->partItems(part));
362}
363
364/*---------------------------------------------------------------------------*/
365/*---------------------------------------------------------------------------*/
366
367ComponentPartCellEnumerator::
368ComponentPartCellEnumerator(const ComponentPartItemVectorView& v, Integer base_index)
369: m_index(0)
370, m_size(v.itemIndexes().size())
371, m_var_idx(v.componentPartIndex())
372, m_base_index(base_index)
373, m_value_indexes(v.valueIndexes())
374, m_item_indexes(v.itemIndexes())
375, m_constituent_list_view(v.constituentItemListView())
376, m_component(v.component())
377{
378}
379
380/*---------------------------------------------------------------------------*/
381/*---------------------------------------------------------------------------*/
382
383MatPartCellEnumerator::
384MatPartCellEnumerator(const MatPartItemVectorView& v)
385: ComponentPartCellEnumerator(v, 0)
386{
387}
388
389/*---------------------------------------------------------------------------*/
390/*---------------------------------------------------------------------------*/
391
392MatPartCellEnumerator MatPartCellEnumerator::
393create(IMeshMaterial* mat, eMatPart part)
394{
395 MatPartItemVectorView v(mat->partMatItems(part));
396 return MatPartCellEnumerator(v);
397}
398
399/*---------------------------------------------------------------------------*/
400/*---------------------------------------------------------------------------*/
401
402MatPartCellEnumerator MatPartCellEnumerator::
403create(MatPartItemVectorView v)
404{
405 return MatPartCellEnumerator(v);
406}
407
408/*---------------------------------------------------------------------------*/
409/*---------------------------------------------------------------------------*/
410
411EnvPartCellEnumerator::
412EnvPartCellEnumerator(const EnvPartItemVectorView& v)
413: ComponentPartCellEnumerator(v, 0)
414{
415}
416
417/*---------------------------------------------------------------------------*/
418/*---------------------------------------------------------------------------*/
419
420EnvPartCellEnumerator EnvPartCellEnumerator::
421create(IMeshEnvironment* env, eMatPart part)
422{
423 EnvPartItemVectorView v(env->partEnvItems(part));
424 return EnvPartCellEnumerator(v);
425}
426
427/*---------------------------------------------------------------------------*/
428/*---------------------------------------------------------------------------*/
429
430EnvPartCellEnumerator EnvPartCellEnumerator::
431create(EnvPartItemVectorView v)
432{
433 return EnvPartCellEnumerator(v);
434}
435
436/*---------------------------------------------------------------------------*/
437/*---------------------------------------------------------------------------*/
438
439ComponentCellEnumerator
441{
442 return ComponentCellEnumerator::create(v);
443}
446{
447 return MatCellEnumerator::create(v);
448}
451{
452 return EnvCellEnumerator::create(v);
453}
456{
457 return ComponentPartCellEnumerator::create(v);
458}
459MatPartCellEnumerator
460arcaneImplCreateConstituentEnumerator(MatPartCell, MatPartItemVectorView v)
461{
462 return MatPartCellEnumerator::create(v);
463}
464EnvPartCellEnumerator
465arcaneImplCreateConstituentEnumerator(EnvPartCell, EnvPartItemVectorView v)
466{
467 return EnvPartCellEnumerator::create(v);
468}
469
470/*---------------------------------------------------------------------------*/
471/*---------------------------------------------------------------------------*/
472
473} // End namespace Arcane::Materials
474
475/*---------------------------------------------------------------------------*/
476/*---------------------------------------------------------------------------*/
View over a vector of entities of a component.
Enumerator over a sub-part (pure or partial) of a subset of the cells of a component (material or env...
Enumerator over the cells of an environment.
Arcane cell of an environment.
View over a vector of entities of an environment.
Enumerator over a part of the cells of a single material.
Represents a material in a multi-material cell.
View over a vector of entities of a material.
ItemEnumeratorT< Cell > CellEnumerator
Enumerators over cells.
Definition ItemTypes.h:272
Always enables tracing in Arcane parts concerning materials.
ConstituentItemIndexedSelectionEnumerator< ComponentCellVectorView > arcaneImplCreateConstituentEnumerator(ComponentCell, ComponentCellVectorSelectionView container)
Enumerator over a constituent selection.