Arcane  v4.1.2.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
CartesianPatch.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* CartesianPatch.h (C) 2000-2025 */
9/* */
10/* Patch AMR d'un maillage cartésien. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CARTESIANMESH_CARTESIANPATCH_H
13#define ARCANE_CARTESIANMESH_CARTESIANPATCH_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arcane/cartesianmesh/ICartesianMeshPatch.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29/*!
30 * \ingroup ArcaneCartesianMesh
31 * \brief Patch AMR d'un maillage cartésien.
32 */
33class ARCANE_CARTESIANMESH_EXPORT CartesianPatch
34{
35 public:
36
37 //! Patch nul.
38 CartesianPatch() = default;
39
40 //! Patch nul.
41 explicit CartesianPatch(ICartesianMeshPatch* patch_interface)
42 : m_patch(patch_interface)
43 {
44 }
45 CartesianPatch& operator=(const CartesianPatch&) = default;
46 CartesianPatch& operator=(ICartesianMeshPatch* patch_interface)
47 {
48 m_patch = patch_interface;
49 return (*this);
50 }
51
52 public:
53
54 //! Groupe de mailles du patch (incluant les mailles de recouvrement).
55 CellGroup cells();
56
57 /*!
58 * \brief Groupe de mailles du patch (sans les mailles de recouvrement).
59 *
60 * Valide uniquement avec l'AMR type 3 (PatchCartesianMeshOnly).
61 */
62 CellGroup inPatchCells();
63
64 //! Index du patch dans le tableau des patchs.
65 Integer index() const;
66
67 /*!
68 * \brief Niveau du patch.
69 *
70 * Valide uniquement avec l'AMR type 3 (PatchCartesianMeshOnly).
71 */
72 Integer level() const
73 {
74 ARCANE_CHECK_POINTER(m_patch);
75 return m_patch->position().level();
76 }
77
78 //! Liste des mailles dans la direction \a dir
80 {
81 ARCANE_CHECK_POINTER(m_patch);
82 return m_patch->cellDirection(dir);
83 }
84
85 //! Liste des mailles dans la direction \a dir (0, 1 ou 2)
87 {
88 ARCANE_CHECK_POINTER(m_patch);
89 return m_patch->cellDirection(idir);
90 }
91
92 //! Liste des faces dans la direction \a dir
94 {
95 ARCANE_CHECK_POINTER(m_patch);
96 return m_patch->faceDirection(dir);
97 }
98
99 //! Liste des faces dans la direction \a dir (0, 1 ou 2)
101 {
102 ARCANE_CHECK_POINTER(m_patch);
103 return m_patch->faceDirection(idir);
104 }
105
106 //! Liste des noeuds dans la direction \a dir
108 {
109 ARCANE_CHECK_POINTER(m_patch);
110 return m_patch->nodeDirection(dir);
111 }
112
113 //! Liste des noeuds dans la direction \a dir (0, 1 ou 2)
115 {
116 ARCANE_CHECK_POINTER(m_patch);
117 return m_patch->nodeDirection(idir);
118 }
119
120 //! Effectue des vérifications sur la validité de l'instance.
121 void checkValid() const
122 {
123 ARCANE_CHECK_POINTER(m_patch);
124 m_patch->checkValid();
125 }
126
127 /*!
128 * \brief Méthode permettant de récupérer la position du patch dans le
129 * maillage cartesien.
130 *
131 * \return Une copie de la position.
132 */
134 {
135 ARCANE_CHECK_POINTER(m_patch);
136 return m_patch->position();
137 }
138
139 //! Indique si le patch est nul.
140 bool isNull() const { return !m_patch; }
141
142 //! Interface associée au patch (pour compatibilité avec l'existant)
143 ICartesianMeshPatch* patchInterface() const { return m_patch; }
144
145 private:
146
147 ICartesianMeshPatch* m_patch = nullptr;
148};
149
150/*---------------------------------------------------------------------------*/
151/*---------------------------------------------------------------------------*/
152
153} // End namespace Arcane
154
155/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
157
158#endif
159
#define ARCANE_CHECK_POINTER(ptr)
Macro retournant le pointeur ptr s'il est non nul ou lancant une exception s'il est nul.
Déclarations de types sur les entités.
Classe permettant de définir la position d'un patch dans le maillage cartésien.
Patch AMR d'un maillage cartésien.
FaceDirectionMng & faceDirection(eMeshDirection dir)
Liste des faces dans la direction dir.
NodeDirectionMng & nodeDirection(Integer idir)
Liste des noeuds dans la direction dir (0, 1 ou 2)
NodeDirectionMng & nodeDirection(eMeshDirection dir)
Liste des noeuds dans la direction dir.
AMRPatchPosition position() const
Méthode permettant de récupérer la position du patch dans le maillage cartesien.
bool isNull() const
Indique si le patch est nul.
CellDirectionMng & cellDirection(Integer idir)
Liste des mailles dans la direction dir (0, 1 ou 2)
CartesianPatch()=default
Patch nul.
FaceDirectionMng & faceDirection(Integer idir)
Liste des faces dans la direction dir (0, 1 ou 2)
ICartesianMeshPatch * patchInterface() const
Interface associée au patch (pour compatibilité avec l'existant)
CartesianPatch(ICartesianMeshPatch *patch_interface)
Patch nul.
CellDirectionMng & cellDirection(eMeshDirection dir)
Liste des mailles dans la direction dir.
void checkValid() const
Effectue des vérifications sur la validité de l'instance.
Integer level() const
Niveau du patch.
Infos sur les mailles d'une direction spécifique X,Y ou Z d'un maillage structuré.
Infos sur les face d'une direction spécifique X,Y ou Z d'un maillage structuré.
Interface d'un patch AMR d'un maillage cartésien.
Infos sur les noeuds d'une direction spécifique X,Y ou Z d'un maillage structuré.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
eMeshDirection
Type de la direction pour un maillage structuré