ryujin 2.1.1 revision ee5cbcbf2346c1299c942d0e1f13b46449973c18
Loading...
Searching...
No Matches
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 - 2025 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 = typename HyperbolicSystem::template View<dim, Number>;
31 using state_type = typename View::state_type;
33 typename HyperbolicSystem::template View<1, Number>::state_type;
34
35 Uniform(const HyperbolicSystem &hyperbolic_system,
36 const std::string subsection)
37 : InitialState<Description, dim, Number>("uniform", subsection)
38 , hyperbolic_system_(hyperbolic_system)
39 {
40 primitive_[0] = 1.4;
41 primitive_[1] = 3.;
42 if constexpr (View::have_energy_equation)
43 primitive_[2] = 1.;
44 this->add_parameter("primitive state",
45 primitive_,
46 "1d primitive state [rho, u, p] (or [rho, u] for "
47 "the barotropic Euler module)");
48
49 const auto convert_states = [&]() {
50 const auto view = hyperbolic_system_.template view<dim, Number>();
51 state_ = view.from_initial_state(primitive_);
52 };
53 this->parse_parameters_call_back.connect(convert_states);
54 convert_states();
55 }
56
57 state_type compute(const dealii::Point<dim> & /*point*/,
58 Number /*t*/) final
59 {
60 return state_;
61 }
62
63 private:
64 const HyperbolicSystem &hyperbolic_system_;
65
66 state_type_1d primitive_;
67
68 state_type state_;
69 };
70 } // namespace EulerInitialStates
71} // namespace ryujin
typename HyperbolicSystem::template View< dim, Number > View
state_type compute(const dealii::Point< dim > &, Number) final
Uniform(const HyperbolicSystem &hyperbolic_system, const std::string subsection)
typename HyperbolicSystem::template View< 1, Number >::state_type state_type_1d
typename Description::HyperbolicSystem HyperbolicSystem
Euler::HyperbolicSystem HyperbolicSystem
Definition description.h:34