Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <ostream> 7 : 8 : /// \cond 9 : namespace Options { 10 : class Option; 11 : template <typename T> 12 : struct create_from_yaml; 13 : } // namespace Options 14 : /// \endcond 15 : 16 1 : namespace ylm { 17 : /*! 18 : * \brief Label for the ordering of spherical harmonic points on a sphere 19 : * 20 : * \details `%Strahlkorper` refers to points on a sphere ordered by SPHEREPACK 21 : * because `Strahlkorper`s hold YlmSpherePacks internally. `%Cce` refers to 22 : * points on a sphere ordered by Libsharp because Cce uses Libsharp internally. 23 : */ 24 0 : enum class AngularOrdering { Strahlkorper, Cce }; 25 0 : std::ostream& operator<<(std::ostream& os, AngularOrdering ordering); 26 : } // namespace ylm 27 : 28 : template <> 29 0 : struct Options::create_from_yaml<ylm::AngularOrdering> { 30 : template <typename Metavariables> 31 0 : static ylm::AngularOrdering create(const Options::Option& options) { 32 : return create<void>(options); 33 : } 34 : }; 35 : 36 : template <> 37 0 : ylm::AngularOrdering 38 : Options::create_from_yaml<ylm::AngularOrdering>::create<void>( 39 : const Options::Option& options);