Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
core/materials/CellToAllEnvCellConverter.h
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/* CellToAllEnvCellConverter.h (C) 2000-2024 */
9/* */
10/* Conversion de 'Cell' en 'AllEnvCell'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_MATERIALS_CELLTOALLENVCELLCONVERTER_H
13#define ARCANE_CORE_MATERIALS_CELLTOALLENVCELLCONVERTER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/IMesh.h"
18#include "arcane/core/materials/MaterialsCoreGlobal.h"
19#include "arcane/core/materials/MatItem.h"
20#include "arcane/core/materials/IMeshMaterialMng.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane::Materials
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \ingroup ArcaneMaterials
33 * \brief Conversion de 'Cell' en 'AllEnvCell'.
34
35 Les instances de cette classe permettent de convertir une maille \a Cell
36 en une maille \a AllEnvCell afin d'avoir les infos sur les matériaux.
37
38 La création d'une instance se fait via le gestionnaire de matériaux:
39 \code
40 * IMeshMaterialMng* mm = ...;
41 * CellToAllEnvCellConverter all_env_cell_converter(mm);
42 \endcode
43
44 Le coût de la création est faible, équivalent à un appel de fonction
45 virtuelle. Il n'est donc pas nul et il est préférable de ne pas construire
46 d'instance dans les boucles sur les entités par exemple, mais au dehors.
47
48 Une fois l'instance créée, il est ensuite possible d'utiliser
49 l'opérateur [] (operator[]()) pour faire la conversion:
50
51 \code
52 * CellToAllEnvCellConverter all_env_cell_converter(m_material_mng);
53 * Cell cell = ...;
54 * ENUMERATE_FACE(iface,allFaces()){
55 * Face face = *iface;
56 * Cell back_cell = face.backCell()
57 * AllEnvCell back_all_env_cell = all_env_cell_converter[back_cell];
58 * info() << "nb env=" << back_all_env_cell.nbEnvironment();
59 * }
60 \endcode
61
62 \warning Les instances de cette classe sont invalidées si la liste des
63 mailles matériaux ou milieu change. Dans ce cas, il faut
64 refabriquer l'objet:
65
66 \code
67 * all_env_cell_converter = CellToAllEnvCellConverter(m_material_mng);
68 \endcode
69 */
71{
72 friend class MeshMaterialMng;
73
74 public:
75
77 {
78 *this = mm->cellToAllEnvCellConverter();
79 }
80
81 private:
82
84 : m_shared_info(shared_info)
85 {
86 }
87
88 public:
89
90 //! Converti une maille \a Cell en maille \a AllEnvCell
92 {
93 return operator[](CellLocalId(c));
94 }
95
96 //! Converti une maille \a CellLocalId en maille \a AllEnvCell
97 ARCCORE_HOST_DEVICE AllEnvCell operator[](CellLocalId c) const
98 {
99 return AllEnvCell(m_shared_info->_item(ConstituentItemIndex(c.localId())));
100 }
101
102 private:
103
104 ComponentItemSharedInfo* m_shared_info = nullptr;
105};
106
107/*---------------------------------------------------------------------------*/
108/*---------------------------------------------------------------------------*/
109
110} // End namespace Arcane::Materials
111
112/*---------------------------------------------------------------------------*/
113/*---------------------------------------------------------------------------*/
114
115#endif
116
Maille d'un maillage.
Definition Item.h:1178
Maille arcane avec info matériaux et milieux.
__host__ __device__ AllEnvCell operator[](CellLocalId c) const
Converti une maille CellLocalId en maille AllEnvCell.
AllEnvCell operator[](Cell c)
Converti une maille Cell en maille AllEnvCell.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
virtual CellToAllEnvCellConverter cellToAllEnvCellConverter()=0
Créée une instance pour convertir de 'Cell' en 'AllEnvCell'.
Active toujours les traces dans les parties Arcane concernant les matériaux.