6#include <range/v3/view/filter.hpp>
25 std::vector<GlobalVector*>
const& process_solutions)
27 for (
auto const*
const x : process_solutions)
39 std::vector<CouplingNodeVariant>
const& coupling_nodes)
42 {
return std::holds_alternative<CouplingNode>(node); };
44 for (
auto const& coupling_node :
45 coupling_nodes | ranges::views::filter(is_regular_node))
47 std::get<CouplingNode>(coupling_node)
48 .convergence_criterion->preFirstIteration();
53 std::vector<CouplingNodeVariant>
const& coupling_nodes)
56 {
return std::holds_alternative<CouplingNode>(node); };
58 for (
auto& coupling_node :
59 coupling_nodes | ranges::views::filter(is_regular_node))
61 std::get<CouplingNode>(coupling_node).convergence_criterion->reset();
66 const bool convergence_of_last_process,
70 bool is_coupling_iteration_converged = convergence_of_last_process;
77 "------- Checking convergence criterion for coupled "
78 "solution of process {:s} with ID {:d} -------",
83 is_coupling_iteration_converged =
84 is_coupling_iteration_converged &&
87 return is_coupling_iteration_converged;
MathLib::EigenVector GlobalVector
void INFO(fmt::format_string< Args... > fmt, Args &&... args)
void initializeCoupledSolutions(std::vector< GlobalVector * > const &process_solutions)
void resetCouplingConvergenceCriteria(std::vector< CouplingNodeVariant > const &coupling_nodes)
std::vector< GlobalVector * > solutions_of_last_cpl_iteration_
void setFirstIterationIndicator(std::vector< CouplingNodeVariant > const &coupling_nodes)
Set the indicator of the first staggered coupling iteration be true.
bool checkCouplingConvergence(const bool convergence_of_last_process, CouplingNode const &coupling_node, GlobalVector const &x) const
void updatePreviousSolution(int const process_id, GlobalVector const &x)
std::variant< CouplingNode, RootCouplingNode > CouplingNodeVariant
void copy(PETScVector const &x, PETScVector &y)
void axpy(PETScVector &y, PetscScalar const a, PETScVector const &x)
Information of a coupling node.
std::unique_ptr< NumLib::ConvergenceCriterion > convergence_criterion
static NUMLIB_EXPORT VectorProvider & provider