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); }
226 const Permutation* permutation);
230 ARCCORE_HOST_DEVICE CellLocalId _nodeToCellLocalId(NodeLocalId n, ePosition p)
const
232 return CellLocalId(m_nodes_to_cell[n].v[p]);
234 ARCCORE_HOST_DEVICE NodeLocalId _cellToNodeLocalId(CellLocalId c, ePosition p)
const
236 return NodeLocalId(m_cells_to_node[c].v[p]);
238 ARCCORE_HOST_DEVICE CellLocalId _nodeToCellLocalId(NodeLocalId n, Int32 dir, ePosition p)
const
240 ARCCORE_CHECK_AT(dir, 3);
241 return _nodeToCellLocalId(n, m_permutation->permutation[dir][p]);
243 ARCCORE_HOST_DEVICE NodeLocalId _cellToNodeLocalId(CellLocalId c, Int32 dir, ePosition p)
const
245 ARCCORE_CHECK_AT(dir, 3);
246 return _cellToNodeLocalId(c, m_permutation->permutation[dir][p]);
248 Cell _nodeToCell(Node n, ePosition p)
const {
return m_cells[m_nodes_to_cell[n.localId()].v[p]]; }
249 Node _cellToNode(Cell c, ePosition p)
const {
return m_nodes[m_cells_to_node[c.localId()].v[p]]; }
254 Index& _index(Node n) {
return m_nodes_to_cell[n.localId()]; }
255 Index& _index(Cell c) {
return m_cells_to_node[c.localId()]; }
259 ArrayView<Index> m_nodes_to_cell;
260 ArrayView<Index> m_cells_to_node;
261 CellInfoListView m_cells;
262 NodeInfoListView m_nodes;
263 const Permutation* m_permutation =
nullptr;
267 void _computeInfos2D(IMesh* mesh, VariableNodeReal3& nodes_coord, VariableCellReal3& cells_coord);
268 void _computeInfos3D(IMesh* mesh, VariableNodeReal3& nodes_coord, VariableCellReal3& cells_coord);