Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ItemFlags.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/* ItemFlags.h (C) 2000-2024 */
9/* */
10/* Drapeaux contenant les caractéristiques d'une entité. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMFLAGS_H
13#define ARCANE_CORE_ITEMFLAGS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
27/*!
28 * \brief Flags pour les caractéristiques des entités.
29 */
30class ARCANE_CORE_EXPORT ItemFlags
31{
32 public:
33
34 using FlagType = Int32;
35
36 public:
37
38 // L'affichage 'lisible' des flags est implémenté dans ItemPrinter
39 // Il doit être updaté si des flags sont ici changés
40
41 enum : FlagType
42 {
43 II_Boundary = 1 << 1, //!< L'entité est sur la frontière
44 II_HasFrontCell = 1 << 2, //!< L'entité a une maille devant
45 II_HasBackCell = 1 << 3, //!< L'entité a une maille derrière
46 II_FrontCellIsFirst = 1 << 4, //!< La première maille de l'entité est la maille devant
47 II_BackCellIsFirst = 1 << 5, //!< La première maille de l'entité est la maille derrière
48 II_Own = 1 << 6, //!< L'entité est une entité propre au sous-domaine
49 II_Added = 1 << 7, //!< L'entité vient d'être ajoutée
50 II_Suppressed = 1 << 8, //!< L'entité vient d'être supprimée
51 II_Shared = 1 << 9, //!< L'entité est partagée par un autre sous-domaine
52 II_SubDomainBoundary = 1 << 10, //!< L'entité est à la frontière de deux sous-domaines
53 //II_JustRemoved = 1 << 11, //!< L'entité vient d'être supprimé
54 II_JustAdded = 1 << 12, //!< L'entité vient d'être ajoutée
55 II_NeedRemove = 1 << 13, //!< L'entité doit être supprimé
56 II_SlaveFace = 1 << 14, //!< L'entité est une face esclave d'une interface
57 II_MasterFace = 1 << 15, //!< L'entité est une face maître d'une interface
58 II_Detached = 1 << 16, //!< L'entité est détachée du maillage
59 II_HasTrace = 1 << 17, //!< L'entité est marquée pour trace (pour débug)
60
61 II_Coarsen = 1 << 18, //!< L'entité est marquée pour déraffinement
62 II_DoNothing = 1 << 19, //!< L'entité est bloquée
63 II_Refine = 1 << 20, //!< L'entité est marquée pour raffinement
64 II_JustRefined = 1 << 21, //!< L'entité vient d'être raffinée
65 II_JustCoarsened = 1 << 22, //!< L'entité vient d'être déraffiné
66 II_Inactive = 1 << 23, //!< L'entité est inactive //COARSEN_INACTIVE,
67 II_CoarsenInactive = 1 << 24, //!< L'entité est inactive et a des enfants tagués pour déraffinement
68
69 II_UserMark1 = 1 << 25, //!< Marque utilisateur old_value 1<<24
70 II_UserMark2 = 1 << 26 //!< Marque utilisateur old_value 1<<25
71 };
72
73 static const int II_InterfaceFlags = II_Boundary + II_HasFrontCell + II_HasBackCell +
74 II_FrontCellIsFirst + II_BackCellIsFirst;
75
76 static constexpr bool isOwn(FlagType f) { return (f & II_Own) != 0; }
77 static constexpr bool isShared(FlagType f) { return (f & II_Shared) != 0; }
78 static constexpr bool isBoundary(FlagType f) { return (f & II_Boundary) != 0; }
79 static constexpr bool isSubDomainBoundary(FlagType f) { return (f & II_Boundary) != 0; }
80 static constexpr bool hasBackCell(FlagType f) { return (f & II_HasBackCell) != 0; }
81 static constexpr bool isSubDomainBoundaryOutside(FlagType f)
82 {
83 return isSubDomainBoundary(f) && hasBackCell(f);
84 }
85 /*!
86 * \brief Index dans la face la maille derrière.
87 *
88 * \retval -1 si pas de maillage derrière.
89 * \retval 0 ou 1 pour l'index de la maille derrière.
90 *
91 * Si l'index est positif, il est possible de récupérer
92 * la maille derrière via Face::cell(ItemFlags::backCellIndex(f)).
93 */
94 static constexpr Int32 backCellIndex(FlagType f)
95 {
96 if (f & II_HasBackCell)
97 return (f & II_BackCellIsFirst) ? 0 : 1;
98 return -1;
99 }
100 /*!
101 * \brief Index dans la face la maille devant.
102 *
103 * \retval -1 si pas de maillage devant.
104 * \retval 0 ou 1 pour l'index de la maille devant.
105 *
106 * Si l'index est positif, il est possible de récupérer
107 * la maille devant via Face::cell(ItemFlags::frontCellIndex(f)).
108 */
109 static constexpr Int32 frontCellIndex(FlagType f)
110 {
111 if (f & II_HasFrontCell)
112 return (f & II_FrontCellIsFirst) ? 0 : 1;
113 return -1;
114 }
115};
116
117/*---------------------------------------------------------------------------*/
118/*---------------------------------------------------------------------------*/
119
120} // End namespace Arcane
121
122/*---------------------------------------------------------------------------*/
123/*---------------------------------------------------------------------------*/
124
125#endif
Fichier de configuration d'Arcane.
Flags pour les caractéristiques des entités.
Definition ItemFlags.h:31
static constexpr Int32 backCellIndex(FlagType f)
Index dans la face la maille derrière.
Definition ItemFlags.h:94
static constexpr Int32 frontCellIndex(FlagType f)
Index dans la face la maille devant.
Definition ItemFlags.h:109
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-