Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : namespace Parallel::protocols { 7 : /*! 8 : * \brief Conforming types register and deregister array elements with other 9 : * parallel components 10 : * 11 : * For example, array elements may have to register and deregister with 12 : * interpolators or observers when the elements get created and destroyed during 13 : * AMR or migrated during load balancing. They may do so by sending messages to 14 : * the parallel components that notify of the creation and destruction of the 15 : * array elements. 16 : * 17 : * Conforming classes have the following static member functions: 18 : * 19 : * ```cpp 20 : * static void perform_registration<ParallelComponent>(const 21 : * db::DataBox<DbTagList>& box, Parallel::GlobalCache<Metavariables>& cache, 22 : * const ArrayIndex& array_index) 23 : * 24 : * static void perform_deregistration<ParallelComponent>(const 25 : * db::DataBox<DbTagList>& box, Parallel::GlobalCache<Metavariables>& cache, 26 : * const ArrayIndex& array_index) 27 : * ``` 28 : * 29 : * Here is an example implementation of this protocol: 30 : * 31 : * \snippet RegistrationHelpers.hpp element_registrar_example 32 : */ 33 1 : struct ElementRegistrar { 34 : template <typename ConformingType> 35 0 : struct test {}; 36 : }; 37 : } // namespace Parallel::protocols