23 const ArrayType& aU1,
const ArrayType& aU2,
24 ArrayType&& dU1, ArrayType&& dU2)
noexcept
26 std::cout <<
"Debugging purpose\n";
28 static_assert(std::is_same_v<
decltype(ArrayType),
const std::valarray<double, 3>&>);
29 static_assert(std::size(aU1) == std::size(aU2),
"Numerical array must be same size");
34 for(
auto i = 0; i < std::size(aU1) - 1; ++i)
37 const auto w_U1L = aU1[i] + dU1[i];
38 const auto w_U1R = aU1[i + 1] - dU1[i + 1];
41 const auto w_U2L = aU2[i] + dU2[i];
42 const auto w_U2R = aU2[i + 1] + dU2[i + 1];
63 const ArrayType& aU1,
const ArrayType& aU2)
noexcept
66 if constexpr( range_t<ArrayType> numrng; !std::ranges::range<
decltype(numrng)>)
68 static_assert(std::size(ArrayType) == NbSections);
69 std::cout <<
"numrng is not a range with exact value\n";
73 using sect_sizet =
decltype(NbSections);
74 using arr_valuetype =
typename ArrayType::value_type;
77 auto rngFF1Dist = std::ranges::distance(aFF1);
82 static_assert(std::is_same_v<double, ArrayType::value_type>);
87 ArrayType dU1{ aU1.size() };
88 std::adjacent_difference(std::begin(aU1), std::end(aU1), std::begin(dU1));
90 ArrayType dU2{ aU2.size() };
91 std::adjacent_difference(std::begin(aU2), std::end(aU2), std::begin(dU2));
99 MinMod w_minModSLopeLimiter{};
100 std::adjacent_difference(dU1.cbegin(), dU1.cend(), dU2.cbegin(), dU1.begin(), w_minModSLopeLimiter);
103 std::vector<arr_valuetype> w_dU1(std::begin(dU1), std::end(dU1));
109 std::vector<typename ArrayType::value_type> w_dU2(std::begin(dU2), std::end(dU2));
void hllFluxAlgorithm(ArrayType &aFF1, ArrayType &aFF2, const ArrayType &aU1, const ArrayType &aU2, ArrayType &&dU1, ArrayType &&dU2) noexcept
Compute numerical flux according to HLL algorithm ()
Definition dbpp_FluxAlgorithmFunctions.hpp:22