Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include "Evolution/Systems/Cce/AnalyticSolutions/LinearizedBondiSachs.hpp" 7 : #include "Evolution/Systems/Cce/Initialize/InitializeJ.hpp" 8 : #include "Utilities/Serialization/RegisterDerivedClassesWithCharm.hpp" 9 : 10 : /// \cond 11 : namespace Cce { 12 : namespace Solutions::LinearizedBondiSachs_detail::InitializeJ { 13 : struct LinearizedBondiSachs; 14 : } 15 : /// \endcond 16 : 17 : /// A function for registering all of the InitializeJ derived classes with 18 : /// charm, including the ones not intended to be directly option-creatable 19 : template <bool EvolveCcm, typename BoundaryComponent> 20 1 : void register_initialize_j_with_charm() { 21 : PUPable_reg(SINGLE_ARG(Solutions::LinearizedBondiSachs_detail::InitializeJ:: 22 : LinearizedBondiSachs)); 23 : 24 : if constexpr (tt::is_a_v<AnalyticWorldtubeBoundary, BoundaryComponent>) { 25 : register_derived_classes_with_charm<Cce::InitializeJ::InitializeJ<false>>(); 26 : } else { 27 : register_derived_classes_with_charm< 28 : Cce::InitializeJ::InitializeJ<EvolveCcm>>(); 29 : } 30 : } 31 : } // namespace Cce