Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <optional>
7 :
8 : #include "Options/Auto.hpp"
9 : #include "Options/Context.hpp"
10 : #include "Options/String.hpp"
11 : #include "Utilities/TMPL.hpp"
12 :
13 : /// \cond
14 : namespace PUP {
15 : class er;
16 : } // namespace PUP
17 : /// \endcond
18 :
19 : namespace grmhd::GhValenciaDivClean::fd {
20 : /*!
21 : * \brief Filtering/dissipation options
22 : */
23 1 : struct FilterOptions {
24 : /// Kreiss-Oliger dissipation applied to metric variables
25 : ///
26 : /// Must be positive and less than 1.
27 1 : struct SpacetimeDissipation {
28 0 : using type = Options::Auto<double, Options::AutoLabel::None>;
29 0 : static constexpr Options::String help{
30 : "The amount of Kreiss-Oliger filter dissipation to apply. Must be "
31 : "positive and less than 1. If 'None' then no dissipation is applied."};
32 : };
33 0 : using options = tmpl::list<SpacetimeDissipation>;
34 :
35 0 : static constexpr Options::String help{
36 : "Parameters for controlling filter on the FD grid."};
37 :
38 0 : FilterOptions() = default;
39 0 : explicit FilterOptions(std::optional<double> in_spacetime_dissipation,
40 : const Options::Context& context = {});
41 0 : void pup(PUP::er& p);
42 :
43 0 : std::optional<double> spacetime_dissipation = std::nullopt;
44 : };
45 : } // namespace grmhd::GhValenciaDivClean::fd
|