ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
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 - 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <ryujin/base/compile_time_options.h>
11
12namespace ryujin
13{
14 namespace ScalarConservation
15 {
16 struct HyperbolicDescription;
17
23 template <int dim, typename Number>
24 class Uniform : public InitialState<HyperbolicDescription, dim, Number>
25 {
26 public:
28 using state_type = typename View::state_type;
29
30 Uniform(const HyperbolicSystem &hyperbolic_system,
31 const std::string subsection)
32 : InitialState<HyperbolicDescription, dim, Number>("uniform",
33 subsection)
34 , hyperbolic_system(hyperbolic_system)
35 {
36 primitive_[0] = 1.0;
37 this->add_parameter(
38 "primitive state", primitive_, "Initial 1d primitive state");
39 }
40
41 state_type compute(const dealii::Point<dim> & /*point*/,
42 Number /*t*/) final
43 {
44 const auto view = hyperbolic_system.view<dim, Number>();
45 return view.from_primitive_state(view.expand_state(primitive_));
46 }
47
48 private:
49 const HyperbolicSystem &hyperbolic_system;
50
51 state_type primitive_;
52 };
53 } // namespace ScalarConservation
54} // namespace ryujin
typename HyperbolicDescription::HyperbolicSystem HyperbolicSystem
dealii::Tensor< 1, problem_dimension, Number > state_type
state_type compute(const dealii::Point< dim > &, Number) final
Uniform(const HyperbolicSystem &hyperbolic_system, const std::string subsection)