28 #ifndef FUB_FOR_EACH_HPP 
   29 #define FUB_FOR_EACH_HPP 
   73 template <
typename Extents, 
typename Function>
 
   76   static_assert(Extents::rank() == 1 || Extents::rank() == 2 ||
 
   77                 Extents::rank() == 3 || Extents::rank() == 4);
 
   78   if constexpr (Extents::rank() == 1) {
 
   79     for (
int i = 0; i < mapping.
extents().extent(0); ++i) {
 
   82   } 
else if constexpr (Extents::rank() == 2) {
 
   83     for (
int i = 0; i < mapping.
extents().extent(1); ++i) {
 
   84       for (
int j = 0; j < mapping.
extents().extent(0); ++j) {
 
   88   } 
else if constexpr (Extents::rank() == 3) {
 
   89     for (
int i = 0; i < mapping.
extents().extent(2); ++i) {
 
   90       for (
int j = 0; j < mapping.
extents().extent(1); ++j) {
 
   91         for (
int k = 0; k < mapping.
extents().extent(0); ++k) {
 
   96   } 
else if constexpr (Extents::rank() == 4) {
 
   97     for (
int c = 0; c < mapping.
extents().extent(3); ++c) {
 
   98       for (
int i = 0; i < mapping.
extents().extent(2); ++i) {
 
   99         for (
int j = 0; j < mapping.
extents().extent(1); ++j) {
 
  100           for (
int k = 0; k < mapping.
extents().extent(0); ++k) {
 
  101             function(k, j, i, c);
 
  110 template <
typename Extents, 
typename Function>
 
  113   static_assert(Extents::rank() == 1 || Extents::rank() == 2 ||
 
  114                 Extents::rank() == 3 || Extents::rank() == 4);
 
  115   if constexpr (Extents::rank() == 1) {
 
  116     for (
int i = 0; i < mapping.
extents().extent(0); ++i) {
 
  119   } 
else if constexpr (Extents::rank() == 2) {
 
  121     for (
int i = 0; i < mapping.
extents().extent(1); ++i) {
 
  122       for (
int j = 0; j < mapping.
extents().extent(0); ++j) {
 
  126   } 
else if constexpr (Extents::rank() == 3) {
 
  129     for (
int i = 0; i < mapping.
extents().extent(2); ++i) {
 
  130       for (
int j = 0; j < mapping.
extents().extent(1); ++j) {
 
  131         for (
int k = 0; k < mapping.
extents().extent(0); ++k) {
 
  136   } 
else if constexpr (Extents::rank() == 4) {
 
  137     for (
int c = 0; c < mapping.
extents().extent(3); ++c) {
 
  138       for (
int i = 0; i < mapping.
extents().extent(2); ++i) {
 
  139         for (
int j = 0; j < mapping.
extents().extent(1); ++j) {
 
  140           for (
int k = 0; k < mapping.
extents().extent(0); ++k) {
 
  141             function(k, j, i, c);
 
  151 template <
int Rank, 
typename Function>
 
  153   static_assert(Rank == 1 || Rank == 2 || Rank == 3 || Rank == 4);
 
  154   if constexpr (Rank == 1) {
 
  155     for (std::ptrdiff_t i = box.
lower[0]; i < box.
upper[0]; ++i) {
 
  158   } 
else if constexpr (Rank == 2) {
 
  159     for (std::ptrdiff_t i = box.
lower[1]; i < box.
upper[1]; ++i) {
 
  160       for (std::ptrdiff_t j = box.
lower[0]; j < box.
upper[0]; ++j) {
 
  164   } 
else if constexpr (Rank == 3) {
 
  165     for (std::ptrdiff_t i = box.
lower[2]; i < box.
upper[2]; ++i) {
 
  166       for (std::ptrdiff_t j = box.
lower[1]; j < box.
upper[1]; ++j) {
 
  167         for (std::ptrdiff_t k = box.
lower[0]; k < box.
upper[0]; ++k) {
 
  172   } 
else if constexpr (Rank == 4) {
 
  173     for (std::ptrdiff_t c = box.
lower[3]; c < box.
upper[3]; ++c) {
 
  174       for (std::ptrdiff_t i = box.
lower[2]; i < box.
upper[2]; ++i) {
 
  175         for (std::ptrdiff_t j = box.
lower[1]; j < box.
upper[1]; ++j) {
 
  176           for (std::ptrdiff_t k = box.
lower[0]; k < box.
upper[0]; ++k) {
 
  177             function(k, j, i, c);
 
#define FUB_ASSERT(x)
Definition: assert.hpp:39
 
This mapping does row first indexing (as in Fortran).
Definition: mdspan.hpp:302
 
constexpr const Extents & extents() const noexcept
Definition: mdspan.hpp:325
 
Definition: mdspan.hpp:473
 
std::ptrdiff_t stride(size_t rank) const noexcept
Definition: mdspan.hpp:534
 
constexpr const Extents & extents() const noexcept
Definition: mdspan.hpp:496
 
Function ForEachIndex(const layout_left::mapping< Extents > &mapping, Function function)
Iterate through the multi-dimensional index space descibed by mapping and invoke function for each su...
Definition: ForEach.hpp:74
 
The fub namespace.
Definition: AnyBoundaryCondition.hpp:31
 
Definition: PatchDataView.hpp:56
 
Index< Rank > lower
Definition: PatchDataView.hpp:57
 
Index< Rank > upper
Definition: PatchDataView.hpp:59