ryujin 2.1.1 revision 3913ebe5e1d74c8fef21bcd286906a244031ce08
initial_state_uniform.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// Copyright (C) 2022 - 2024 by the ryujin authors
4//
5
6#pragma once
7
8#include <compile_time_options.h>
9
11
12namespace ryujin
13{
14 namespace EulerInitialStates
15 {
25 template <typename Description, int dim, typename Number>
26 class Uniform : public InitialState<Description, dim, Number>
27 {
28 public:
30 using View =
31 typename Description::template HyperbolicSystemView<dim, Number>;
32 using state_type = typename View::state_type;
33
34 Uniform(const HyperbolicSystem &hyperbolic_system,
35 const std::string subsection)
36 : InitialState<Description, dim, Number>("uniform", subsection)
37 , hyperbolic_system_(hyperbolic_system)
38 {
39 primitive_[0] = 1.4;
40 primitive_[1] = 3.;
41 primitive_[2] = 1.;
42 this->add_parameter("primitive state",
43 primitive_,
44 "Initial 1d primitive state (rho, u, p)");
45
46 const auto convert_states = [&]() {
47 const auto view = hyperbolic_system_.template view<dim, Number>();
48 state_ = view.from_initial_state(primitive_);
49 };
50 this->parse_parameters_call_back.connect(convert_states);
51 convert_states();
52 }
53
54 state_type compute(const dealii::Point<dim> & /*point*/,
55 Number /*t*/) final
56 {
57 return state_;
58 }
59
60 private:
61 const HyperbolicSystem &hyperbolic_system_;
62
63 dealii::Tensor<1, 3, Number> primitive_;
64
65 state_type state_;
66 };
67 } // namespace EulerInitialStates
68} // namespace ryujin
typename Description::template HyperbolicSystemView< dim, Number > View
state_type compute(const dealii::Point< dim > &, Number) final
Uniform(const HyperbolicSystem &hyperbolic_system, const std::string subsection)
typename Description::HyperbolicSystem HyperbolicSystem
Euler::HyperbolicSystem HyperbolicSystem
Definition: description.h:34