62 friend class CartesianConnectivityLocalId;
63 friend class CartesianMeshImpl;
92 void fill(
Int32 i) { v[0] = v[1] = v[2] = v[3] = v[4] = v[5] = v[6] = v[7] = i; }
107 ePosition permutation[3][8];
122 ARCCORE_HOST_DEVICE CellLocalId
upperLeftId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_UpperLeft); }
124 ARCCORE_HOST_DEVICE CellLocalId
upperRightId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_UpperRight); }
126 ARCCORE_HOST_DEVICE CellLocalId
lowerRightId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_LowerRight); }
128 ARCCORE_HOST_DEVICE CellLocalId
lowerLeftId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_LowerLeft); }
131 ARCCORE_HOST_DEVICE CellLocalId
upperLeftId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_UpperLeft); }
133 ARCCORE_HOST_DEVICE CellLocalId
upperRightId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_UpperRight); }
135 ARCCORE_HOST_DEVICE CellLocalId
lowerRightId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_LowerRight); }
137 ARCCORE_HOST_DEVICE CellLocalId
lowerLeftId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_LowerLeft); }
149 ARCCORE_HOST_DEVICE CellLocalId
topZUpperLeftId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_TopZUpperLeft); }
151 ARCCORE_HOST_DEVICE CellLocalId
topZUpperRightId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_TopZUpperRight); }
153 ARCCORE_HOST_DEVICE CellLocalId
topZLowerRightId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_TopZLowerRight); }
155 ARCCORE_HOST_DEVICE CellLocalId
topZLowerLeftId(NodeLocalId n)
const {
return _nodeToCellLocalId(n, P_TopZLowerLeft); }
158 ARCCORE_HOST_DEVICE CellLocalId
topZUpperLeftId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_TopZUpperLeft); }
160 ARCCORE_HOST_DEVICE CellLocalId
topZUpperRightId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_TopZUpperRight); }
162 ARCCORE_HOST_DEVICE CellLocalId
topZLowerRightId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_TopZLowerRight); }
164 ARCCORE_HOST_DEVICE CellLocalId
topZLowerLeftId(NodeLocalId n,
Int32 dir)
const {
return _nodeToCellLocalId(n, dir, P_TopZLowerLeft); }
176 ARCCORE_HOST_DEVICE NodeLocalId
upperLeftId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_UpperLeft); }
178 ARCCORE_HOST_DEVICE NodeLocalId
upperRightId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_UpperRight); }
180 ARCCORE_HOST_DEVICE NodeLocalId
lowerRightId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_LowerRight); }
182 ARCCORE_HOST_DEVICE NodeLocalId
lowerLeftId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_LowerLeft); }
185 ARCCORE_HOST_DEVICE NodeLocalId
upperLeftId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_UpperLeft); }
187 ARCCORE_HOST_DEVICE NodeLocalId
upperRightId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_UpperRight); }
189 ARCCORE_HOST_DEVICE NodeLocalId
lowerRightId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_LowerRight); }
191 ARCCORE_HOST_DEVICE NodeLocalId
lowerLeftId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_LowerLeft); }
203 ARCCORE_HOST_DEVICE NodeLocalId
topZUpperLeftId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_TopZUpperLeft); }
205 ARCCORE_HOST_DEVICE NodeLocalId
topZUpperRightId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_TopZUpperRight); }
207 ARCCORE_HOST_DEVICE NodeLocalId
topZLowerRightId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_TopZLowerRight); }
209 ARCCORE_HOST_DEVICE NodeLocalId
topZLowerLeftId(CellLocalId c)
const {
return _cellToNodeLocalId(c, P_TopZLowerLeft); }
212 ARCCORE_HOST_DEVICE NodeLocalId
topZUpperLeftId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_TopZUpperLeft); }
214 ARCCORE_HOST_DEVICE NodeLocalId
topZUpperRightId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_TopZUpperRight); }
216 ARCCORE_HOST_DEVICE NodeLocalId
topZLowerRightId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_TopZLowerRight); }
218 ARCCORE_HOST_DEVICE NodeLocalId
topZLowerLeftId(CellLocalId c,
Int32 dir)
const {
return _cellToNodeLocalId(c, dir, P_TopZLowerLeft); }
227 const Permutation* permutation);
231 ARCCORE_HOST_DEVICE CellLocalId _nodeToCellLocalId(NodeLocalId n, ePosition p)
const
233 return CellLocalId(m_nodes_to_cell[n].v[p]);
235 ARCCORE_HOST_DEVICE NodeLocalId _cellToNodeLocalId(CellLocalId c, ePosition p)
const
237 return NodeLocalId(m_cells_to_node[c].v[p]);
239 ARCCORE_HOST_DEVICE CellLocalId _nodeToCellLocalId(NodeLocalId n, Int32 dir, ePosition p)
const
241 ARCCORE_CHECK_AT(dir, 3);
242 return _nodeToCellLocalId(n, m_permutation->permutation[dir][p]);
244 ARCCORE_HOST_DEVICE NodeLocalId _cellToNodeLocalId(CellLocalId c, Int32 dir, ePosition p)
const
246 ARCCORE_CHECK_AT(dir, 3);
247 return _cellToNodeLocalId(c, m_permutation->permutation[dir][p]);
249 Cell _nodeToCell(Node n, ePosition p)
const {
return m_cells[m_nodes_to_cell[n.localId()].v[p]]; }
250 Node _cellToNode(Cell c, ePosition p)
const {
return m_nodes[m_cells_to_node[c.localId()].v[p]]; }
255 Index& _index(Node n) {
return m_nodes_to_cell[n.localId()]; }
256 Index& _index(Cell c) {
return m_cells_to_node[c.localId()]; }
260 ArrayView<Index> m_nodes_to_cell;
261 ArrayView<Index> m_cells_to_node;
262 CellInfoListView m_cells;
263 NodeInfoListView m_nodes;
264 const Permutation* m_permutation =
nullptr;
268 void _computeInfos2D(IMesh* mesh, VariableNodeReal3& nodes_coord, VariableCellReal3& cells_coord);
269 void _computeInfos2D(ICartesianMesh* cmesh);
270 void _computeInfos3D(IMesh* mesh, VariableNodeReal3& nodes_coord, VariableCellReal3& cells_coord);
271 void _computeInfos3D(ICartesianMesh* cmesh);