ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
Loading...
Searching...
No Matches
parabolic_system.h
Go to the documentation of this file.
1//
2// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
3// Copyright (C) 2026 by the ryujin authors
4//
5
6#pragma once
7
8#include <ryujin/base/compile_time_options.h>
11
12#include <deal.II/base/function_parser.h>
13#include <deal.II/base/parameter_acceptor.h>
14#include <deal.II/base/tensor.h>
15
16
17namespace ryujin
18{
19 namespace EulerPoisson
20 {
29 {
30 public:
31 ParabolicSystem(const std::string &subsection = "/ParabolicSystem");
32
34
35 ACCESSOR_READ_ONLY(magnetic_drift_limit);
36
37 ACCESSOR_READ_ONLY(electrostatic_configuration);
38
39 ACCESSOR_READ_ONLY(subsection);
40
41 private:
42 double alpha_;
43 bool magnetic_drift_limit_;
44 std::string subsection_;
45
46 std::string electrostatic_configuration_;
47 };
48
49
50 inline ParabolicSystem::ParabolicSystem(const std::string &subsection)
51 : Interface::ParabolicSystem(
52 "Electrostatic force model with background magnetic field",
53 /* the electrostatic potential */
54 {{{"phi"}, {"phi"}, {"phi"}}},
55 {},
56 subsection)
57 , subsection_(subsection)
58 {
59 alpha_ = 1.0;
60 add_parameter("alpha", alpha_, "The coupling constant alpha");
61
62 magnetic_drift_limit_ = false;
63 add_parameter("set up magnetic drift limit",
64 magnetic_drift_limit_,
65 "If set to true, then the velocity field is initialized to "
66 "satisfy the magnetic drift limit.");
67
68 electrostatic_configuration_ = "constant";
69 add_parameter(
70 "electrostatic configuration",
71 electrostatic_configuration_,
72 "Valid names are given by any of the subsections defined below");
73 }
74
75 } // namespace EulerPoisson
76} // namespace ryujin
#define ACCESSOR_READ_ONLY(member)