6 #include "DataStructures/DataBox/PrefixHelpers.hpp"
8 #include "IO/Observer/Helpers.hpp"
9 #include "ParallelAlgorithms/LinearSolver/Gmres/ElementActions.hpp"
10 #include "ParallelAlgorithms/LinearSolver/Gmres/InitializeElement.hpp"
11 #include "ParallelAlgorithms/LinearSolver/Gmres/ResidualMonitor.hpp"
12 #include "ParallelAlgorithms/LinearSolver/Observe.hpp"
83 template <
typename Metavariables,
typename FieldsTag,
typename OptionsGroup,
88 using fields_tag = FieldsTag;
89 using options_group = OptionsGroup;
90 using source_tag = SourceTag;
91 static constexpr
bool preconditioned = Preconditioned;
110 detail::ResidualMonitor<Metavariables, FieldsTag, OptionsGroup>>;
112 using initialize_element =
113 detail::InitializeElement<FieldsTag, OptionsGroup, Preconditioned>;
115 using register_element = tmpl::list<>;
117 using observed_reduction_data_tags = observers::make_reduction_data_tags<
118 tmpl::list<observe_detail::reduction_data>>;
120 template <
typename ApplyOperatorActions,
typename Label = OptionsGroup>
121 using solve = tmpl::list<
122 detail::PrepareSolve<FieldsTag, OptionsGroup, Preconditioned, Label,
124 detail::NormalizeInitialOperand<FieldsTag, OptionsGroup, Preconditioned,
126 detail::PrepareStep<FieldsTag, OptionsGroup, Preconditioned, Label>,
127 ApplyOperatorActions,
128 detail::PerformStep<FieldsTag, OptionsGroup, Preconditioned, Label>,
129 detail::OrthogonalizeOperand<FieldsTag, OptionsGroup, Preconditioned,
131 detail::NormalizeOperandAndUpdateField<FieldsTag, OptionsGroup,
132 Preconditioned, Label>>;