55 const int halo_cell_width );
80 int neighborRank(
const std::array<int, num_space_dim>& off_ijk )
const;
92 template <std::
size_t NSD = num_space_dim>
93 std::enable_if_t<3 == NSD, int>
94 neighborRank(
const int off_i,
const int off_j,
const int off_k )
const;
106 template <std::
size_t NSD = num_space_dim>
107 std::enable_if_t<2 == NSD, int>
neighborRank(
const int off_i,
108 const int off_j )
const;
119 template <
class DecompositionTag,
class EntityType,
class IndexType>
121 IndexType t3 )
const;
135 template <
class DecompositionTag,
class EntityType>
138 const std::array<int, num_space_dim>& off_ijk,
139 const int halo_width = -1 )
const;
156 template <
class DecompositionTag,
class EntityType,
158 std::enable_if_t<3 == NSD, IndexSpace<3>>
160 const int off_j,
const int off_k,
161 const int halo_width = -1 )
const;
178 template <
class DecompositionTag,
class EntityType,
180 std::enable_if_t<2 == NSD, IndexSpace<2>>
182 const int off_j,
const int halo_width = -1 )
const;
201 template <
class DecompositionTag,
class EntityType>
204 const std::array<int, num_space_dim>& off_ijk,
205 const int halo_width = -1 )
const;
224 template <
class DecompositionTag,
class EntityType,
226 std::enable_if_t<3 == NSD, IndexSpace<3>>
228 const int off_j,
const int off_k,
229 const int halo_width = -1 )
const;
248 template <
class DecompositionTag,
class EntityType,
250 std::enable_if_t<2 == NSD, IndexSpace<2>>
252 const int off_j,
const int halo_width = -1 )
const;
256 template <
class OwnedIndexSpace>
257 auto getBound( OwnedIndexSpace owned_space,
const int upper_lower,
258 const std::array<int, num_space_dim>& off_ijk,
259 const int lower_shift,
const int upper_shift )
const;
260 template <
int Dir,
class OwnedIndexSpace>
261 auto getBound( OwnedIndexSpace owned_space,
const int upper_lower,
262 const std::array<int, num_space_dim>& off_ijk,
263 const int lower_shift_dir,
const int lower_shift,
264 const int upper_shift_dir,
const int upper_shift )
const;
286 template <std::
size_t NSD = num_space_dim>
287 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Face<Dim::K>,
290 template <std::
size_t NSD = num_space_dim>
291 std::enable_if_t<3 == NSD, IndexSpace<3>>
294 template <std::
size_t NSD = num_space_dim>
295 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Face<Dim::K>,
298 template <std::
size_t NSD = num_space_dim>
299 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Edge<Dim::I>,
302 template <std::
size_t NSD = num_space_dim>
303 std::enable_if_t<3 == NSD, IndexSpace<3>>
306 template <std::
size_t NSD = num_space_dim>
307 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Edge<Dim::I>,
310 template <std::
size_t NSD = num_space_dim>
311 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Edge<Dim::J>,
314 template <std::
size_t NSD = num_space_dim>
315 std::enable_if_t<3 == NSD, IndexSpace<3>>
318 template <std::
size_t NSD = num_space_dim>
319 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Edge<Dim::J>,
322 template <std::
size_t NSD = num_space_dim>
323 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Edge<Dim::K>,
326 template <std::
size_t NSD = num_space_dim>
327 std::enable_if_t<3 == NSD, IndexSpace<3>>
330 template <std::
size_t NSD = num_space_dim>
331 std::enable_if_t<3 == NSD, IndexSpace<3>> indexSpaceImpl(
Own,
Edge<Dim::K>,
336 sharedIndexSpaceImpl(
Own,
Cell,
337 const std::array<int, num_space_dim>& off_ijk,
338 const int halo_width = -1 )
const;
342 const std::array<int, num_space_dim>& off_ijk,
343 const int halo_width = -1 )
const;
346 sharedIndexSpaceImpl(
Own,
Node,
347 const std::array<int, num_space_dim>& off_ijk,
348 const int halo_width = -1 )
const;
352 const std::array<int, num_space_dim>& off_ijk,
353 const int halo_width = -1 )
const;
357 const std::array<int, num_space_dim>& off_ijk,
358 const int halo_width = -1 )
const;
362 const std::array<int, num_space_dim>& off_ijk,
363 const int halo_width = -1 )
const;
367 const std::array<int, num_space_dim>& off_ijk,
368 const int halo_width = -1 )
const;
372 const std::array<int, num_space_dim>& off_ijk,
373 const int halo_width = -1 )
const;
376 template <std::
size_t NSD = num_space_dim>
377 std::enable_if_t<3 == NSD, IndexSpace<3>>
378 sharedIndexSpaceImpl(
Own,
Face<Dim::K>,
const std::array<int, 3>& off_ijk,
379 const int halo_width = -1 )
const;
381 template <std::
size_t NSD = num_space_dim>
382 std::enable_if_t<3 == NSD, IndexSpace<3>>
384 const std::array<int, 3>& off_ijk,
385 const int halo_width = -1 )
const;
387 template <std::
size_t NSD = num_space_dim>
388 std::enable_if_t<3 == NSD, IndexSpace<3>>
389 sharedIndexSpaceImpl(
Own,
Edge<Dim::I>,
const std::array<int, 3>& off_ijk,
390 const int halo_width = -1 )
const;
392 template <std::
size_t NSD = num_space_dim>
393 std::enable_if_t<3 == NSD, IndexSpace<3>>
395 const std::array<int, 3>& off_ijk,
396 const int halo_width = -1 )
const;
398 template <std::
size_t NSD = num_space_dim>
399 std::enable_if_t<3 == NSD, IndexSpace<3>>
400 sharedIndexSpaceImpl(
Own,
Edge<Dim::J>,
const std::array<int, 3>& off_ijk,
401 const int halo_width = -1 )
const;
403 template <std::
size_t NSD = num_space_dim>
404 std::enable_if_t<3 == NSD, IndexSpace<3>>
406 const std::array<int, 3>& off_ijk,
407 const int halo_width = -1 )
const;
409 template <std::
size_t NSD = num_space_dim>
410 std::enable_if_t<3 == NSD, IndexSpace<3>>
411 sharedIndexSpaceImpl(
Own,
Edge<Dim::K>,
const std::array<int, 3>& off_ijk,
412 const int halo_width = -1 )
const;
414 template <std::
size_t NSD = num_space_dim>
415 std::enable_if_t<3 == NSD, IndexSpace<3>>
417 const std::array<int, 3>& off_ijk,
418 const int halo_width = -1 )
const;
422 boundaryIndexSpaceImpl(
Own,
Cell,
423 const std::array<int, num_space_dim>& off_ijk,
424 const int halo_width = -1 )
const;
428 const std::array<int, num_space_dim>& off_ijk,
429 const int halo_width = -1 )
const;
432 boundaryIndexSpaceImpl(
Own,
Node,
433 const std::array<int, num_space_dim>& off_ijk,
434 const int halo_width = -1 )
const;
438 const std::array<int, num_space_dim>& off_ijk,
439 const int halo_width = -1 )
const;
443 const std::array<int, num_space_dim>& off_ijk,
444 const int halo_width = -1 )
const;
448 const std::array<int, num_space_dim>& off_ijk,
449 const int halo_width = -1 )
const;
453 const std::array<int, num_space_dim>& off_ijk,
454 const int halo_width = -1 )
const;
458 const std::array<int, num_space_dim>& off_ijk,
459 const int halo_width = -1 )
const;
462 template <std::
size_t NSD = num_space_dim>
463 std::enable_if_t<3 == NSD, IndexSpace<3>>
465 const std::array<int, 3>& off_ijk,
466 const int halo_width = -1 )
const;
468 template <std::
size_t NSD = num_space_dim>
469 std::enable_if_t<3 == NSD, IndexSpace<3>>
471 const std::array<int, 3>& off_ijk,
472 const int halo_width = -1 )
const;
474 template <std::
size_t NSD = num_space_dim>
475 std::enable_if_t<3 == NSD, IndexSpace<3>>
477 const std::array<int, 3>& off_ijk,
478 const int halo_width = -1 )
const;
480 template <std::
size_t NSD = num_space_dim>
481 std::enable_if_t<3 == NSD, IndexSpace<3>>
483 const std::array<int, 3>& off_ijk,
484 const int halo_width = -1 )
const;
486 template <std::
size_t NSD = num_space_dim>
487 std::enable_if_t<3 == NSD, IndexSpace<3>>
489 const std::array<int, 3>& off_ijk,
490 const int halo_width = -1 )
const;
492 template <std::
size_t NSD = num_space_dim>
493 std::enable_if_t<3 == NSD, IndexSpace<3>>
495 const std::array<int, 3>& off_ijk,
496 const int halo_width = -1 )
const;
498 template <std::
size_t NSD = num_space_dim>
499 std::enable_if_t<3 == NSD, IndexSpace<3>>
501 const std::array<int, 3>& off_ijk,
502 const int halo_width = -1 )
const;
504 template <std::
size_t NSD = num_space_dim>
505 std::enable_if_t<3 == NSD, IndexSpace<3>>
507 const std::array<int, 3>& off_ijk,
508 const int halo_width = -1 )
const;
511 template <
class EntityType>
527 const std::array<int, num_space_dim>& off_ijk,
528 const int halo_width )
const;
533 const std::array<int, num_space_dim>& off_ijk,
534 const int halo_width )
const;
542 const std::array<int, num_space_dim>& off_ijk,
543 const int halo_width )
const;
548 const std::array<int, num_space_dim>& off_ijk,
549 const int halo_width )
const;
552 template <
int Dir, std::
size_t NSD = num_space_dim>
553 std::enable_if_t<3 == NSD, IndexSpace<3>> edgeIndexSpace(
Own,
Edge<Dir>,
556 template <
int Dir, std::
size_t NSD = num_space_dim>
557 std::enable_if_t<3 == NSD, IndexSpace<3>> edgeIndexSpace(
Own,
Edge<Dir>,
560 template <
int Dir, std::
size_t NSD = num_space_dim>
561 std::enable_if_t<3 == NSD, IndexSpace<3>> edgeIndexSpace(
Ghost,
Edge<Dir>,
566 template <
int Dir, std::
size_t NSD = num_space_dim>
567 std::enable_if_t<3 == NSD, IndexSpace<3>>
568 edgeSharedIndexSpace(
Own,
Edge<Dir>,
const std::array<int, 3>& off_ijk,
569 const int halo_width )
const;
571 template <
int Dir, std::
size_t NSD = num_space_dim>
572 std::enable_if_t<3 == NSD, IndexSpace<3>>
573 edgeSharedIndexSpace(
Ghost,
Edge<Dir>,
const std::array<int, 3>& off_ijk,
574 const int halo_width )
const;
579 template <
int Dir, std::
size_t NSD = num_space_dim>
580 std::enable_if_t<3 == NSD, IndexSpace<3>>
581 edgeBoundaryIndexSpace(
Own,
Edge<Dir>,
const std::array<int, 3>& off_ijk,
582 const int halo_width )
const;
584 template <
int Dir, std::
size_t NSD = num_space_dim>
585 std::enable_if_t<3 == NSD, IndexSpace<3>>
586 edgeBoundaryIndexSpace(
Ghost,
Edge<Dir>,
const std::array<int, 3>& off_ijk,
587 const int halo_width )
const;
590 std::shared_ptr<GlobalGrid<MeshType>> _global_grid;
591 int _halo_cell_width;