14#include "arcane/utils/FatalErrorException.h"
15#include "arcane/utils/ArgumentException.h"
16#include "arcane/utils/ITraceMng.h"
17#include "arcane/utils/PlatformUtils.h"
19#include "arcane/IItemFamily.h"
20#include "arcane/ItemGroup.h"
21#include "arcane/IMesh.h"
22#include "arcane/UnstructuredMeshConnectivity.h"
24#include "arcane/cartesianmesh/CellDirectionMng.h"
25#include "arcane/cartesianmesh/ICartesianMesh.h"
50 Int32 m_sub_domain_offset = -1;
51 Int32 m_own_nb_cell = -1;
52 Int64 m_global_nb_cell = -1;
53 Int64 m_own_cell_offset = -1;
62, m_next_face_index(-1)
63, m_previous_face_index(-1)
65 for(
Integer i=0; i<MAX_NB_NODE; ++i )
66 m_nodes_indirection[i] = (-1);
72void CellDirectionMng::
79 m_p->m_cartesian_mesh = cm;
80 m_p->m_patch_index = patch_index;
86void CellDirectionMng::
99 m_p->m_infos.
resize(new_size);
100 m_infos_view = m_p->m_infos.view();
106void CellDirectionMng::
107_internalComputeInnerAndOuterItems(
const ItemGroup& items)
113 Int32 lid = iitem.itemLocalId();
114 Int32 i1 = m_infos_view[lid].m_next_lid;
115 Int32 i2 = m_infos_view[lid].m_previous_lid;
116 if (i1==NULL_ITEM_LOCAL_ID || i2==NULL_ITEM_LOCAL_ID)
121 int dir = (int)m_direction;
122 String base_group_name = String(
"Direction")+dir;
123 if (m_p->m_patch_index>=0)
124 base_group_name = base_group_name + String(
"AMRPatch")+m_p->m_patch_index;
125 m_p->m_inner_all_items = family->
createGroup(String(
"AllInner")+base_group_name,inner_lids,
true);
126 m_p->m_outer_all_items = family->
createGroup(String(
"AllOuter")+base_group_name,outer_lids,
true);
127 m_p->m_all_items = items;
128 m_cells = CellInfoListView(family);
130 UnstructuredMeshConnectivityView mesh_connectivity;
131 mesh_connectivity.setMesh(m_p->m_cartesian_mesh->
mesh());
132 m_cell_node_view = mesh_connectivity.cellNode();
133 m_cell_face_view = mesh_connectivity.cellFace();
142 return m_p->m_all_items;
151 return m_p->m_inner_all_items;
160 return m_p->m_outer_all_items;
166void CellDirectionMng::
169 for(
Integer i=0; i<MAX_NB_NODE; ++i )
170 m_nodes_indirection[i] = nodes_indirection[i];
174 tm->
info(4) <<
"Set computed indirection dir=" << (int)m_direction;
175 for(
Integer i=0; i<MAX_NB_NODE; ++i ){
176 tm->
info(5) <<
"Indirection i=" << i <<
" v=" << (int)m_nodes_indirection[i];
186 return (m_p) ? m_p->m_global_nb_cell : -1;
195 return (m_p) ? m_p->m_own_nb_cell : -1;
204 return (m_p) ? m_p->m_sub_domain_offset : -1;
213 return (m_p) ? m_p->m_own_cell_offset : -1;
219void CellDirectionMng::
220_internalSetOffsetAndNbCellInfos(
Int64 global_nb_cell,
Int32 own_nb_cell,
221 Int32 sub_domain_offset,
Int64 own_cell_offset)
223 m_p->m_global_nb_cell = global_nb_cell;
224 m_p->m_own_nb_cell = own_nb_cell;
225 m_p->m_sub_domain_offset = sub_domain_offset;
226 m_p->m_own_cell_offset = own_cell_offset;
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
CellGroup outerCells() const
Groupe de toutes les mailles externes dans la direction.
CellGroup allCells() const
Groupe de toutes les mailles dans la direction.
Int64 ownCellOffset() const
Offset dans cette direction de la première maille propre de ce sous-domaine.
Int64 globalNbCell() const
Nombre global de mailles dans cette direction.
CellGroup innerCells() const
Groupe de toutes les mailles internes dans la direction.
CellDirectionMng()
Créé une instance vide.
Int32 subDomainOffset() const
Offset dans cette direction du sous-domaine.
Int32 ownNbCell() const
Nombre de mailles propres dans cette direction.
void _internalResizeInfos(Int32 new_size)
Redimensionne le conteneur contenant les ItemDirectionInfo.
Vue constante d'un tableau de type T.
Interface d'un maillage cartésien.
virtual ITraceMng * traceMng() const =0
Gestionnaire de trace associé.
virtual IMesh * mesh() const =0
Maillage associé à ce maillage cartésien.
Interface d'une famille d'entités.
virtual ItemGroup createGroup(const String &name, Int32ConstArrayView local_ids, bool do_override=false)=0
Créé un groupe d'entités de nom name contenant les entités local_ids.
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Groupe d'entités de maillage.
IItemFamily * itemFamily() const
Famille d'entité à laquelle appartient ce groupe (0 pour le group nul)
Vecteur 1D de données avec sémantique par valeur (style STL).
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
ItemGroupT< Cell > CellGroup
Groupe de mailles.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
eMeshDirection
Type de la direction pour un maillage structuré
@ MD_DirInvalid
Direction invalide ou non initialisée.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.