10 #include "DataStructures/SpinWeighted.hpp"
12 #include "Evolution/Systems/Cce/Initialize/InitializeJ.hpp"
22 namespace InitializeJ {
40 static std::string name() noexcept {
return "AngularCoordTolerance"; }
42 "Tolerance of initial angular coordinates for CCE"};
43 static type lower_bound() noexcept {
return 1.0e-14; }
44 static type upper_bound() noexcept {
return 1.0e-3; }
45 static type suggested_value() noexcept {
return 1.0e-10; }
51 "Number of linearized inversion iterations."};
52 static type lower_bound() noexcept {
return 10; }
53 static type upper_bound() noexcept {
return 1000; }
54 static type suggested_value() noexcept {
return 300; }
60 "If true, initialization will error if it hits MaxIterations"};
61 static type suggested_value() noexcept {
return true; }
64 tmpl::list<AngularCoordinateTolerance, MaxIterations, RequireConvergence>;
67 "Initialization process where J is set so Psi0 is vanishing\n"
68 "(roughly a no incoming radiation condition)"};
73 ZeroNonSmooth(
double angular_coordinate_tolerance,
size_t max_iterations,
74 bool require_convergence =
false) noexcept;
76 ZeroNonSmooth() = default;
78 std::unique_ptr<InitializeJ> get_clone() const noexcept override;
85 angular_cauchy_coordinates,
89 size_t number_of_radial_points) const noexcept override;
91 void pup(PUP::er& p) noexcept override;
94 double angular_coordinate_tolerance_ = 1.0e-10;
95 size_t max_iterations_ = 300;
96 bool require_convergence_ = false;