12#include <deal.II/base/function_parser.h>
16 namespace ShallowWaterInitialStates
24 template <
typename Description,
int dim,
typename Number>
34 const std::string subsection)
36 , hyperbolic_system_(hyperbolic_system)
39 depth_expression_ =
"1.4";
40 this->add_parameter(
"water depth expression",
42 "A function expression describing the water depth");
44 velocity_expression_ =
"3.0";
45 this->add_parameter(
"velocity expression",
47 "A function expression describing the velocity");
53 const auto set_up_muparser = [
this] {
54 using FP = dealii::FunctionParser<dim>;
60 depth_function_ = std::make_unique<FP>(depth_expression_);
61 velocity_function_ = std::make_unique<FP>(velocity_expression_);
65 this->parse_parameters_call_back.connect(set_up_muparser);
70 const auto view = hyperbolic_system_.template view<dim, Number>();
72 dealii::Tensor<1, 2, Number> primitive;
74 depth_function_->set_time(t);
75 primitive[0] = depth_function_->value(point);
76 velocity_function_->set_time(t);
77 primitive[1] = velocity_function_->value(point);
79 return view.from_initial_state(primitive);
85 bool use_primitive_state_functions_;
87 std::string depth_expression_;
88 std::string velocity_expression_;
89 std::string bathymetry_expression_;
91 std::unique_ptr<dealii::FunctionParser<dim>> depth_function_;
92 std::unique_ptr<dealii::FunctionParser<dim>> velocity_function_;
93 std::unique_ptr<dealii::FunctionParser<dim>> bathymetry_function_;
typename View::state_type state_type
typename Description::template HyperbolicSystemView< dim, Number > View
state_type compute(const dealii::Point< dim > &point, Number t) final
typename Description::HyperbolicSystem HyperbolicSystem
Function(const HyperbolicSystem &hyperbolic_system, const std::string subsection)
Euler::HyperbolicSystem HyperbolicSystem