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