8#include <compile_time_options.h>
14 namespace EulerInitialStates
30 template <
typename Description,
int dim,
typename Number>
40 const std::string &subsection)
43 , hyperbolic_system_(hyperbolic_system)
45 primitive_inner_[0] = 1.4;
46 primitive_inner_[1] = 0.0;
47 primitive_inner_[2] = 1.;
49 "primitive state inner",
51 "Initial 1d primitive state (rho, u, p) on the inner disk");
53 primitive_outer_[0] = 1.4;
54 primitive_outer_[1] = 0.0;
55 primitive_outer_[2] = 1.;
57 "primitive state outer",
59 "Initial 1d primitive state (rho, u, p) on the outer annulus");
62 this->add_parameter(
"radius", radius_,
"Radius of radial area");
64 const auto convert_states = [&]() {
65 const auto view = hyperbolic_system_.template view<dim, Number>();
66 state_inner_ = view.from_initial_state(primitive_inner_);
67 state_outer_ = view.from_initial_state(primitive_outer_);
69 this->parse_parameters_call_back.connect(convert_states);
73 auto compute(
const dealii::Point<dim> &point, Number )
76 return (point.norm() > radius_ ? state_outer_ : state_inner_);
82 dealii::Tensor<1, 3, Number> primitive_inner_;
83 dealii::Tensor<1, 3, Number> primitive_outer_;
RadialContrast(const HyperbolicSystem &hyperbolic_system, const std::string &subsection)
typename Description::template HyperbolicSystemView< dim, Number > View
typename Description::HyperbolicSystem HyperbolicSystem
typename View::state_type state_type
auto compute(const dealii::Point< dim > &point, Number) -> state_type final
Euler::HyperbolicSystem HyperbolicSystem