21 #ifndef FUB_COMPLETE_FROM_CONS_HPP
22 #define FUB_COMPLETE_FROM_CONS_HPP
30 #include <type_traits>
36 template <
typename Eq,
typename... Args>
41 template <
typename Equation>
43 Complete<std::decay_t<Equation>>& complete,
45 using Eq = std::decay_t<Equation>;
48 equation.CompleteFromCons(complete, cons);
57 template <
typename Equation>
59 Complete<std::decay_t<Equation>>& complete,
60 const Complete<std::decay_t<Equation>>& cons) {
61 using Eq = std::decay_t<Equation>;
65 equation.CompleteFromCons(complete,
AsCons(cons));
74 template <
typename Equation>
78 using Eq = std::decay_t<Equation>;
82 equation.CompleteFromCons(complete, cons);
91 template <
typename Equation>
96 using Eq = std::decay_t<Equation>;
100 equation.CompleteFromCons(complete, cons, mask);
104 [&](
auto& dest,
const auto& src) { dest = mask.select(src, dest); },
110 template <
typename Equation>
114 using Eq = std::decay_t<Equation>;
118 equation.CompleteFromCons(complete,
AsCons(cons));
127 template <
typename Equation>
134 Load(cons, cons_view, {is...});
136 Store(complete_view, complete, {is...});
159 int n =
static_cast<int>(get<0>(end) - get<0>(in));
163 Store(out, complete);
166 n =
static_cast<int>(get<0>(end) - get<0>(in));
177 FUB_ASSERT(Box<0>(complete_view) == Box<0>(cons_view));
178 ForEachRow(std::tuple{complete_view, cons_view},
185 FUB_ASSERT(Box<0>(complete_view) == Box<0>(cons_view));
#define FUB_ASSERT(x)
Definition: assert.hpp:39
void CompleteFromCons(Equation &&eq, const View< Complete< std::decay_t< Equation >>> &complete_view, const View< const Conservative< std::decay_t< Equation >>> &cons_view)
Definition: CompleteFromCons.hpp:128
void CompleteFromCons(Equation &&equation, Complete< std::decay_t< Equation >> &complete, const Conservative< std::decay_t< Equation >> &cons)
Definition: CompleteFromCons.hpp:42
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
constexpr SequentialTag seq
Definition: Execution.hpp:31
constexpr SimdTag simd
Definition: Execution.hpp:34
The fub namespace.
Definition: AnyBoundaryCondition.hpp:31
constexpr const int kDefaultChunkSize
Definition: Eigen.hpp:39
void ForEachVariable(F function, Ts &&... states)
Definition: State.hpp:89
void StoreN(nodeduce_t< ViewPointer< Conservative< Eq >>> pointer, const ConservativeArray< Eq > &state, int n)
Definition: StateArray.hpp:416
void ForEachRow(const Tuple &views, Function f)
Definition: StateRow.hpp:172
decltype(std::declval< Eq >().CompleteFromCons(std::declval< Args >()...)) CompleteFromConsMemberFunction
Definition: CompleteFromCons.hpp:38
void Load(State &state, const BasicView< const State, Layout, Rank > &view, const std::array< std::ptrdiff_t, State::Equation::Rank()> &index)
Definition: State.hpp:640
ViewPointer< State > Begin(const BasicView< State, Layout, Rank > &view)
Definition: State.hpp:769
void LoadN(CompleteArray< Eq, N > &state, const BasicView< const Complete< Eq >, Layout, Rank > &view, int size, nodeduce_t< const std::array< std::ptrdiff_t, std::size_t(Rank)> & > pos)
Definition: StateArray.hpp:310
void Advance(ViewPointer< State > &pointer, std::ptrdiff_t n) noexcept
Definition: State.hpp:825
const Conservative< Eq > & AsCons(const Conservative< Eq > &x)
Definition: State.hpp:438
void Store(const BasicView< Conservative< Eq >, Layout, Eq::Rank()> &view, const Conservative< Eq > &state, const std::array< std::ptrdiff_t, Eq::Rank()> &index)
Definition: State.hpp:663
ViewPointer< State > End(const BasicView< State, Layout, Rank > &view)
Definition: State.hpp:782
Array< bool, 1 > MaskArray
Definition: Eigen.hpp:59
typename detail::ConservativeArrayBaseImpl< Eq, Width >::type ConservativeArrayBase
Definition: StateArray.hpp:132
boost::mp11::mp_transform< detail::DepthToStateValueType, typename Equation::ConservativeDepths > ConservativeBase
This type alias transforms state depths into a conservative state associated with a specified equatio...
Definition: State.hpp:247
Definition: State.hpp:403
Definition: StateArray.hpp:178
Definition: CompleteFromCons.hpp:148
CompleteFromConsFn< Equation > * this_
Definition: CompleteFromCons.hpp:149
void operator()(const Row< Complete< Equation >> &complete_row, const Row< const Conservative< Equation >> &cons_row) const
Definition: CompleteFromCons.hpp:151
Definition: CompleteFromCons.hpp:141
void CompleteFromCons(execution::SequentialTag, const View< Complete< Equation >> &complete_view, const View< const Conservative< Equation >> &cons_view)
Definition: CompleteFromCons.hpp:182
ConservativeArray< Equation > cons_array_
Definition: CompleteFromCons.hpp:144
Conservative< Equation > cons_
Definition: CompleteFromCons.hpp:146
Complete< Equation > complete_
Definition: CompleteFromCons.hpp:145
Equation equation_
Definition: CompleteFromCons.hpp:142
void CompleteFromCons(execution::OpenMpTag, const View< Complete< Equation >> &complete_view, const View< const Conservative< Equation >> &cons_view)
Definition: CompleteFromCons.hpp:193
void CompleteFromCons(execution::OpenMpSimdTag, const View< Complete< Equation >> &complete_view, const View< const Conservative< Equation >> &cons_view)
Definition: CompleteFromCons.hpp:199
void CompleteFromCons(execution::SimdTag, const View< Complete< Equation >> &complete_view, const View< const Conservative< Equation >> &cons_view)
Definition: CompleteFromCons.hpp:174
CompleteArray< Equation > complete_array_
Definition: CompleteFromCons.hpp:143
This type has a constructor which takes an equation and might allocate any dynamically sized member v...
Definition: State.hpp:335
Definition: StateArray.hpp:135
This type has a constructor which takes an equation and might allocate any dynamically sized member v...
Definition: State.hpp:251
Definition: StateRow.hpp:51
Definition: State.hpp:750
Definition: Execution.hpp:39
Definition: Execution.hpp:36
Definition: Execution.hpp:30
Definition: Execution.hpp:33
This is std::true_type if Op<Args...> is a valid SFINAE expression.
Definition: type_traits.hpp:92