Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
MaterialModifierOperation.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/* MaterialModifierOperation.h (C) 2000-2024 */
9/* */
10/* Opération d'ajout/suppression de mailles d'un matériau. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MATERIALS_INTERNAL_MATERIALMODIFIEROPERATION_H
13#define ARCANE_MATERIALS_INTERNAL_MATERIALMODIFIEROPERATION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18#include "arcane/utils/NumArray.h"
19
21#include "arcane/materials/internal/MeshMaterialModifierImpl.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane::Materials
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
34class MaterialModifierOperation
35{
36 public:
37
38 MaterialModifierOperation();
39
40 private:
41
42 MaterialModifierOperation(IMeshMaterial* mat, SmallSpan<const Int32> ids, bool is_add);
43
44 public:
45
46 static MaterialModifierOperation* createAdd(IMeshMaterial* mat, SmallSpan<const Int32> ids)
47 {
48 return new MaterialModifierOperation(mat, ids, true);
49 }
50 static MaterialModifierOperation* createRemove(IMeshMaterial* mat, SmallSpan<const Int32> ids)
51 {
52 return new MaterialModifierOperation(mat, ids, false);
53 }
54
55 public:
56
58 bool isAdd() const { return m_is_add; }
59
61 IMeshMaterial* material() const { return m_mat; }
62
64 SmallSpan<const Int32> ids() const { return m_ids.view(); }
65
66 public:
67
78 void filterIds();
79
80 private:
81
82 static void _filterValidIds(MaterialModifierOperation* operation, Int32Array& valid_ids);
84
85 private:
86
87 IMeshMaterial* m_mat = nullptr;
88 bool m_is_add = false;
90};
91
92/*---------------------------------------------------------------------------*/
93/*---------------------------------------------------------------------------*/
94
95} // namespace Arcane::Materials
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
100#endif
101
Interface d'un matériau d'un maillage.
Opération d'ajout ou suppression de mailles d'un matériau.
IMeshMaterial * material() const
Matériau dont on souhaite ajouter/supprimer des mailles.
bool isAdd() const
Indique si l'opération consiste à ajouter ou supprimer des mailles du matériau.
static Int32 _checkMaterialPresence(MaterialModifierOperation *operation)
Vérifie si les mailles ids sont déjà dans le matériau mat.
static void _filterValidIds(MaterialModifierOperation *operation, Int32Array &valid_ids)
Filtre le tableau des mailles ids pour qu'il soit valide.
SmallSpan< const Int32 > ids() const
Liste des localId() des mailles à ajouter/supprimer.
Vue d'un tableau d'éléments de type T.
Definition Span.h:673
Vecteur 1D de données avec sémantique par valeur (style STL).
Active toujours les traces dans les parties Arcane concernant les matériaux.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:214
std::int32_t Int32
Type entier signé sur 32 bits.