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"
48 Integer m_patch_index = -1;
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.
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.
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.
Groupe d'entités de maillage.
IItemFamily * itemFamily() const
Famille d'entité à laquelle appartient ce groupe (0 pour le group nul)
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
ArrayView< T > view() const
Vue mutable sur ce tableau.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
virtual TraceMessage info()=0
Flot pour un message d'information.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eMeshDirection
Type de la direction pour un maillage structuré
@ MD_DirInvalid
Direction invalide ou non initialisée.