Arcane  4.1.12.0
User documentation
Loading...
Searching...
No Matches
MeshMaterialIndirectModifier.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/* MeshMaterialIndirectModifier.h (C) 2000-2022 */
9/* */
10/* Object allowing indirect modification of materials. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_MESHMATERIALINDIRECTMODIFIER_H
13#define ARCANE_MATERIALS_MESHMATERIALINDIRECTMODIFIER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25class IMesh;
26}
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane::Materials
32{
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
39/*!
40 * \ingroup ArcaneMaterials
41 * \brief Object allowing indirect modification of materials or media.
42 */
43class ARCANE_MATERIALS_EXPORT MeshMaterialIndirectModifier
44{
45 public:
46
47 MeshMaterialIndirectModifier(IMeshMaterialMng*);
48 ~MeshMaterialIndirectModifier() noexcept(false);
49
50 public:
51
52 MeshMaterialIndirectModifier(const MeshMaterialIndirectModifier&) = default;
53 MeshMaterialIndirectModifier(MeshMaterialIndirectModifier&&) = default;
54 MeshMaterialIndirectModifier& operator=(const MeshMaterialIndirectModifier&) = default;
55 MeshMaterialIndirectModifier& operator=(MeshMaterialIndirectModifier&&) = default;
56
57 public:
58
59 /*!
60 * \brief Prepares an update.
61 *
62 */
63 void beginUpdate();
64
65 /*!
66 * \brief Updates the structures after a modification.
67 *
68 * This method is automatically called in the destructor of
69 * the instance if necessary.
70 */
71 void endUpdate();
72
73 /*!
74 * \brief Updates the structures after a modification with sorting
75 * of media and material groups.
76 *
77 * This method is identical to endUpdate() but ensures that
78 * the groups associated with the components (IMeshComponent::cells())
79 * will be sorted by increasing uniqueId() at the end of the update.
80 */
81 void endUpdateWithSort();
82
83 private:
84
85 IMeshMaterialMng* m_material_mng;
86 MeshMaterialBackup* m_backup;
87 bool m_has_update;
88
89 private:
90
91 void _endUpdate(bool do_sort);
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97} // namespace Arcane::Materials
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102#endif
Declarations of types used in Arcane.
Interface for the material and environment manager of a mesh.
Saving/restoring material and medium values.
void endUpdate()
Updates the structures after a modification.
void endUpdateWithSort()
Updates the structures after a modification with sorting of media and material groups.
Always enables tracing in Arcane parts concerning materials.
class ARCANE_MATERIALS_EXPORT(64) SimdMatVarIndex
SIMD indexer on a component.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --