Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <pup.h> 7 : #include <string> 8 : 9 : #include "ControlSystem/ControlErrors/Size/Info.hpp" 10 : #include "ControlSystem/ControlErrors/Size/State.hpp" 11 : #include "Options/String.hpp" 12 : #include "Utilities/Serialization/CharmPupable.hpp" 13 : #include "Utilities/TMPL.hpp" 14 : 15 : namespace control_system::size::States { 16 0 : class DeltaRDriftOutward : public State { 17 : public: 18 0 : using options = tmpl::list<>; 19 0 : static constexpr Options::String help{ 20 : "Controls the velocity of the excision surface to maintain a constant " 21 : "separation between the excision surface and the horizon surface with a " 22 : "small outward radial velocity. This is state 5 in SpEC."}; 23 0 : DeltaRDriftOutward() = default; 24 1 : std::string name() const override { return "DeltaRDriftOutward"; } 25 1 : size_t number() const override { return 5; } 26 0 : std::unique_ptr<State> get_clone() const override; 27 1 : std::string update(const gsl::not_null<Info*> info, 28 : const StateUpdateArgs& update_args, 29 : const CrossingTimeInfo& crossing_time_info) const override; 30 : /// The return value is Q from Eq. 96 of \cite Hemberger2012jz, plus 31 : /// an outward velocity term. 32 1 : double control_error( 33 : const Info& info, 34 : const ControlErrorArgs& control_error_args) const override; 35 : 36 0 : WRAPPED_PUPable_decl_template(DeltaRDriftOutward); // NOLINT 37 0 : explicit DeltaRDriftOutward(CkMigrateMessage* const /*msg*/) {} 38 : }; 39 : } // namespace control_system::size::States