ryujin 2.1.1 revision ef0fcd4010d109b860652ece4a7b8963fb7d46b1
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
10#include "hyperbolic_system.h"
12
13namespace ryujin
14{
15 namespace ScalarConservation
16 {
17 struct Description;
18
24 template <int dim, typename Number>
25 class Uniform : public InitialState<Description, dim, Number>
26 {
27 public:
29 using state_type = typename View::state_type;
30
31 Uniform(const HyperbolicSystem &hyperbolic_system,
32 const std::string subsection)
33 : InitialState<Description, dim, Number>("uniform", 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
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)
Euler::Description Description