21 #ifndef FUB_BOUNDARY_CONDITION_REFLECTIVE_BOUNDARY_HPP
22 #define FUB_BOUNDARY_CONDITION_REFLECTIVE_BOUNDARY_HPP
38 static constexpr
int Rank = Equation::Rank();
53 template <
typename Equation>
55 : equation_{equation} {}
57 template <
typename Equation>
61 const Eigen::Matrix<double, Rank, 1> unit = UnitVector<Rank>(dir);
65 Load(state_, states, src);
66 Reflect(reflected_, state_, unit, equation_);
67 Store(states, reflected_, dest);
Definition: boundary_condition/ReflectiveBoundary.hpp:35
Complete reflected_
Definition: boundary_condition/ReflectiveBoundary.hpp:50
void FillBoundary(const View< Complete > &states, const IndexBox< Rank > &box_to_fill, Direction dir, int side)
Definition: boundary_condition/ReflectiveBoundary.hpp:58
static constexpr int Rank
Definition: boundary_condition/ReflectiveBoundary.hpp:38
const Equation & GetEquation() const noexcept
Definition: boundary_condition/ReflectiveBoundary.hpp:45
ReflectiveBoundary(const Equation &equation)
Definition: boundary_condition/ReflectiveBoundary.hpp:54
Equation equation_
Definition: boundary_condition/ReflectiveBoundary.hpp:48
Complete state_
Definition: boundary_condition/ReflectiveBoundary.hpp:49
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
Index< 1 > ReflectIndex(Index< 1 > i, const IndexBox< 1 > &domain, Direction dir, int side)
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
Direction
This is a type safe type to denote a dimensional split direction.
Definition: Direction.hpp:30
std::array< std::ptrdiff_t, static_cast< std::size_t >(Rank)> Index
Definition: PatchDataView.hpp:34
void Reflect(Complete< IdealGasMix< 1 >> &reflected, const Complete< IdealGasMix< 1 >> &state, const Eigen::Matrix< double, 1, 1 > &normal, const IdealGasMix< 1 > &gas)
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
Definition: State.hpp:403
Definition: PatchDataView.hpp:56