Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <string> 7 : 8 : #include "DataStructures/DataBox/Tag.hpp" 9 : #include "Options/String.hpp" 10 : #include "Utilities/PrettyType.hpp" 11 : #include "Utilities/TMPL.hpp" 12 : 13 : namespace LinearSolver::Richardson { 14 : 15 0 : namespace OptionTags { 16 : 17 : template <typename OptionsGroup> 18 0 : struct RelaxationParameter { 19 0 : using type = double; 20 0 : using group = OptionsGroup; 21 0 : static constexpr Options::String help = 22 : "The weight for the residual in the scheme"; 23 : }; 24 : 25 : } // namespace OptionTags 26 : 27 0 : namespace Tags { 28 : 29 : /// The Richardson relaxation parameter \f$\omega\f$ 30 : /// 31 : /// \see `LinearSolver::Richardson::Richardson` 32 : template <typename OptionsGroup> 33 1 : struct RelaxationParameter : db::SimpleTag { 34 0 : static std::string name() { 35 : return "RelaxationParameter(" + pretty_type::name<OptionsGroup>() + ")"; 36 : } 37 0 : using type = double; 38 : 39 0 : static constexpr bool pass_metavariables = false; 40 0 : using option_tags = tmpl::list<OptionTags::RelaxationParameter<OptionsGroup>>; 41 0 : static double create_from_options(const double value) { return value; } 42 : }; 43 : 44 : } // namespace Tags 45 : 46 : } // namespace LinearSolver::Richardson