11 #include "IO/Observer/ObservationId.hpp"
12 #include "IO/Observer/ObserverComponent.hpp"
13 #include "IO/Observer/ReductionActions.hpp"
14 #include "IO/Observer/TypeOfObservation.hpp"
16 #include "Parallel/Invoke.hpp"
17 #include "Parallel/Reduction.hpp"
18 #include "Utilities/Functional.hpp"
22 namespace NonlinearSolver::observe_detail {
34 template <
typename OptionsGroup>
36 template <
typename ParallelComponent,
typename DbTagsList,
39 register_info(
const db::DataBox<DbTagsList>& ,
40 const ArrayIndex& ) noexcept {
49 template <
typename OptionsGroup,
typename ParallelComponent,
50 typename Metavariables>
51 void contribute_to_reduction_observer(
52 const size_t iteration_id,
const size_t globalization_iteration_id,
53 const double residual_magnitude,
const double step_length,
56 iteration_id, pretty_type::get_name<OptionsGroup>());
59 auto& my_proxy = Parallel::get_parallel_component<ParallelComponent>(
cache);
60 Parallel::threaded_action<observers::ThreadedActions::WriteReductionData>(
63 reduction_writer[0], observation_id,
65 std::string{
"/" + Options::name<OptionsGroup>() +
"Residuals"},
68 reduction_data{iteration_id, globalization_iteration_id,
69 residual_magnitude, step_length});
A unique identifier for an observation representing the type of observation and the instance (e....
Definition: ObservationId.hpp:71
Definition: ElementReceiveInterpPoints.hpp:15
The data to be reduced, and invokables to be called whenever two reduction messages are combined and ...
Definition: Reduction.hpp:63
auto get_parallel_component(GlobalCache< Metavariables > &cache) noexcept -> Parallel::proxy_from_parallel_component< GlobalCache_detail::get_component_if_mocked< typename Metavariables::component_list, ParallelComponentTag >> &
Access the Charm++ proxy associated with a ParallelComponent.
Definition: GlobalCache.hpp:535
Used as a key in maps to keep track of how many elements have registered.
Definition: ObservationId.hpp:28
The nodegroup parallel component that is responsible for writing data to disk.
Definition: ObserverComponent.hpp:51
int my_node(const DistribObject &distributed_object) noexcept
Index of my node.
Definition: Info.hpp:51
Parallel::GlobalCache< Metavariables > & cache(MockRuntimeSystem< Metavariables > &runner, const ArrayIndex &array_index) noexcept
Returns the GlobalCache of Component with index array_index.
Definition: MockRuntimeSystemFreeFunctions.hpp:380
Parallel::ReductionData< Parallel::ReductionDatum< tuples::tagged_tuple_from_typelist< TagsAndCombinesPresent >, TaggedTupleCombine > > reduction_data
A Parallel::ReductionData with a single Parallel::ReductionDatum for a given tagged tuple type determ...
Definition: PhaseControlTags.hpp:92
@ Reduction
The sender will only perform reduction observations.
Helpers for derived class registration.
Definition: Registration.hpp:32