12#ifndef ARCANE_CORE_CARTESIANGRIDDIMENSION_H
13#define ARCANE_CORE_CARTESIANGRIDDIMENSION_H
17#include "arcane/utils/Vector3.h"
18#include "arcane/utils/Vector2.h"
73 Int64 compute(Int64 x, Int64 y)
75 return m_base_offset + x + y * m_nb_node_x;
78 std::array<Int64, 4> computeForCell(Int64 x, Int64 y)
109 Int64 compute(Int64 x, Int64 y)
111 return m_base_offset + x + y * m_all_nb_cell_x;
116 const Int64 y = uid / m_all_nb_cell_x;
117 const Int64 x = uid % m_all_nb_cell_x;
124 Int64 m_all_nb_cell_x;
150 face_uids[0] = m_base_offset + (x + 0) + ((y + 0) * m_nb_cell_x) + m_nb_face_dir_x;
151 face_uids[2] = m_base_offset + (x + 0) + ((y + 1) * m_nb_cell_x) + m_nb_face_dir_x;
154 face_uids[1] = m_base_offset + (x + 1) + (y + 0) * m_nb_face_x;
155 face_uids[3] = m_base_offset + (x + 0) + (y + 0) * m_nb_face_x;
165 Int64 m_nb_face_dir_x;
184 Int64 compute(Int64 x, Int64 y, Int64 z)
186 return m_base_offset + x + y * m_nb_node_x + z * m_nb_node_xy;
189 std::array<Int64, 8> computeForCell(Int64 x, Int64 y, Int64 z)
192 node_uids[0] = compute(x + 0, y + 0, z + 0);
193 node_uids[1] = compute(x + 1, y + 0, z + 0);
194 node_uids[2] = compute(x + 1, y + 1, z + 0);
195 node_uids[3] = compute(x + 0, y + 1, z + 0);
196 node_uids[4] = compute(x + 0, y + 0, z + 1);
197 node_uids[5] = compute(x + 1, y + 0, z + 1);
198 node_uids[6] = compute(x + 1, y + 1, z + 1);
199 node_uids[7] = compute(x + 0, y + 1, z + 1);
229 return m_base_offset + x + y * m_all_nb_cell_x + z * m_all_nb_cell_xy;
235 Int64 z = uid / m_all_nb_cell_xy;
236 Int64 v = uid - (z * m_all_nb_cell_xy);
237 Int64 y = v / m_all_nb_cell_x;
238 Int64 x = v % m_all_nb_cell_x;
245 Int64 m_all_nb_cell_x;
246 Int64 m_all_nb_cell_xy;
275 face_uids[0] = (x + 0) + ((y + 0) * m_nb_cell_x) + ((z + 0) * m_nb_face_dir.z) + m_total_nb_face_xy;
276 face_uids[3] = (x + 0) + ((y + 0) * m_nb_cell_x) + ((z + 1) * m_nb_face_dir.z) + m_total_nb_face_xy;
279 face_uids[1] = (x + 0) + ((y + 0) * m_nb_face_x) + ((z + 0) * m_nb_face_dir.x);
280 face_uids[4] = (x + 1) + ((y + 0) * m_nb_face_x) + ((z + 0) * m_nb_face_dir.x);
283 face_uids[2] = (x + 0) + ((y + 0) * m_nb_cell_x) + ((z + 0) * m_nb_face_dir.y) + m_total_nb_face_x;
284 face_uids[5] = (x + 0) + ((y + 1) * m_nb_cell_x) + ((z + 0) * m_nb_face_dir.y) + m_total_nb_face_x;
286 for (Int32 i = 0; i < 6; ++i)
298 Int64 m_total_nb_face_xy;
299 Int64 m_total_nb_face_x;
340 return { offset, m_nb_node.x };
345 return { offset, m_nb_node.x, m_nb_node.x * m_nb_node.y };
350 return { offset, m_nb_cell.x };
355 return { offset, m_nb_cell.x, m_nb_cell.x * m_nb_cell.y };
361 return { offset, m_nb_cell.x, m_nb_face.x,
nb_face_dir.x };
383 Int64 m_nb_cell_xy = 0;
384 Int64 m_total_nb_cell = 0;
Déclarations des types généraux de Arcane.
Classe pour calculer en 2D le uniqueId() d'une maille en fonction de sa position dans la grille.
Classe pour calculer en 3D le uniqueId() d'une maille en fonction de sa position dans la grille.
Int64 compute(Int64 x, Int64 y, Int64 z)
Calcul le uniqueId() en fonction des coordonnées.
Int64x3 compute(Int64 unique_id)
Calcul les coordonnées en fonction du uniqueId().
Classe pour calculer en 2D le uniqueId() d'une face en fonction de sa position dans la grille.
std::array< Int64, 4 > computeForCell(Int64 x, Int64 y)
Calcule les uniqueIds() des 4 faces de la mailles de coordonnées topologique (x,y)
Classe pour calculer en 2D le uniqueId() d'une face en fonction de sa position dans la grille.
std::array< Int64, 6 > computeForCell(Int64 x, Int64 y, Int64 z)
Calcule les uniqueIds() des 6 faces de la mailles de coordonnées topologique (x,y,...
Classe pour calculer en 2D le uniqueId() d'un noeud en fonction de sa position dans la grille.
Classe pour calculer en 3D le uniqueId() d'un noeud en fonction de sa position dans la grille.
Informations sur les dimensions d'une grille cartésienne.
constexpr Int64x3 nbCell() const
Nombre de mailles dans chaque direction.
Int64x3 m_nb_node
Nombre de noeuds dans chaque direction.
CellUniqueIdComputer2D getCellComputer2D(Int64 offset) const
Instance pour calculer les uniqueId() des mailles pour cette grille.
Int64x3 m_nb_cell
Nombre de mailles dans chaque direction.
constexpr Int64 totalNbCell() const
Nombre total de mailles.
CellUniqueIdComputer3D getCellComputer3D(Int64 offset) const
Instance pour calculer les uniqueId() des mailles pour cette grille.
FaceUniqueIdComputer3D getFaceComputer3D(Int64 offset) const
Instance pour calculer les uniqueId() des faces pour cette grille.
Int64x3 m_nb_face_oriented
Nombre total de faces dans une orientation donnée.
NodeUniqueIdComputer3D getNodeComputer3D(Int64 offset) const
Instance pour calculer les uniqueId() des noeuds pour cette grille.
NodeUniqueIdComputer2D getNodeComputer2D(Int64 offset) const
Instance pour calculer les uniqueId() des noeuds pour cette grille.
constexpr Int64x3 nbFace() const
Nombre de faces dans chaque direction.
Int64x3 m_nb_face
Nombre de faces dans chaque direction.
constexpr Int64x3 nbFaceParallelToDirection() const
Nombre total de faces parallèles à une direction donnée.
FaceUniqueIdComputer2D getFaceComputer2D(Int64 offset) const
Instance pour calculer les uniqueId() des faces pour cette grille.
constexpr Int64x3 nbNode() const
Nombre de noeuds dans chaque direction.
Déraffine un maillage cartésien par 2.
Déraffine un maillage cartésien par 2.
Renumérotation des uniqueId() pour les maillages cartésiens.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe gérant un vecteur de dimension 2 de type T.
Construction des uniqueId() des faces pour un maillage cartésien.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-