Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstddef> 7 : 8 : #include "Utilities/ConstantExpressions.hpp" 9 : 10 : /// \ingroup ComputationalDomainGroup 11 : /// Returns the maximum number of neighbors an element can have in `dim` 12 : /// dimensions. 13 : /// 14 : /// \note Assumes a maximum 2-to-1 refinement between two adjacent Elements. 15 1 : constexpr size_t maximum_number_of_neighbors(const size_t dim) { 16 : switch (dim) { 17 : case 1: 18 : return 2; 19 : case 2: 20 : return 8; 21 : case 3: 22 : return 24; 23 : default: 24 : // need to throw because we cannot ERROR in constexpr 25 : throw "Invalid dim specified"; 26 : }; 27 : } 28 : 29 : /// \ingroup ComputationalDomainGroup 30 : /// Returns the maximum number of neighbors in each direction an element can 31 : /// have in `dim` dimensions. 32 : /// 33 : /// \note Assumes a maximum 2-to-1 refinement between two adjacent Elements. 34 1 : constexpr size_t maximum_number_of_neighbors_per_direction(const size_t dim) { 35 : switch (dim) { 36 : case 0: 37 : return 0; 38 : default: 39 : return two_to_the(dim - 1); 40 : }; 41 : }