40 const std::string &subsection)
43 , hyperbolic_system_(hyperbolic_system)
46 primitive_left_[0] = 1.;
47 primitive_left_[1] = 0.;
48 if constexpr (View::have_energy_equation)
49 primitive_left_[2] = 1.e3;
50 this->add_parameter(
"primitive state left",
52 "1d primitive state [rho, u, p] on the left (or "
53 "[rho, u] for the barotropic Euler module)");
56 this->add_parameter(
"left region length",
58 "The length of the left region");
60 primitive_middle_[0] = 1.;
61 primitive_middle_[1] = 0.;
62 if constexpr (View::have_energy_equation)
63 primitive_middle_[2] = 1.e-2;
64 this->add_parameter(
"primitive state middle",
66 "1d primitive state [rho, u, p] in the middle (or "
67 "[rho, u] for the barotropic Euler module)");
70 this->add_parameter(
"middle region length",
72 "The length of the middle region");
74 primitive_right_[0] = 1.;
75 primitive_right_[1] = 0.;
76 if constexpr (View::have_energy_equation)
77 primitive_right_[2] = 1.e2;
78 this->add_parameter(
"primitive state right",
80 "1d primitive state [rho, u, p] on the right (or "
81 "[rho, u] for the barotropic Euler module)");
83 const auto convert_states = [&]() {
84 const auto view = hyperbolic_system_.template view<dim, Number>();
85 state_left_ = view.from_initial_state(primitive_left_);
86 state_middle_ = view.from_initial_state(primitive_middle_);
87 state_right_ = view.from_initial_state(primitive_right_);
89 this->parse_parameters_call_back.connect(convert_states);