10#include <ryujin/base/compile_time_options.h>
16 namespace ShallowWaterInitialStates
25 template <
typename Description,
int dim,
typename Number>
34 const std::string subsection)
35 :
InitialState<Description, dim, Number>(
"sloping friction",
37 , hyperbolic_system_(hyperbolic_system)
43 "The (positive) slope of the inclined plane used to "
44 "define the bathymetry");
47 this->add_parameter(
"initial discharge",
49 "The initial (unit) discharge in [m^2 / s]");
55 const auto view = hyperbolic_system_.template view<dim, Number>();
62 const Number n = view.manning_friction_coefficient();
63 const Number exponent = 1. / (2. + 4. / 3.);
65 Number profile = n * n * q_0_ * q_0_ / slope_;
73 initial_precomputed_type
final
76 return {compute_bathymetry(point)};
82 DEAL_II_ALWAYS_INLINE
inline Number
83 compute_bathymetry(
const dealii::Point<dim> &point)
const
85 return -slope_ * point[0];
typename Description::HyperbolicSystem HyperbolicSystem
SlopingFriction(const HyperbolicSystem &hyperbolic_system, const std::string subsection)
typename View::state_type state_type
auto initial_precomputations(const dealii::Point< dim > &point) -> typename InitialState< Description, dim, Number >::initial_precomputed_type final
typename HyperbolicSystem::template View< dim, Number > View
state_type compute(const dealii::Point< dim > &, Number) final
DEAL_II_HOST_DEVICE T pow(const T x, const T b)