19 class NonlinearBlockSolverBase;
20 class BoundaryConditionManager;
28 std::shared_ptr<NonlinearBlockSolverBase>
solver;
51 void addSubsystemSolver(
const std::vector<size_t>& block_indices, std::shared_ptr<NonlinearBlockSolverBase> solver,
52 double relaxation_factor = 1.0);
63 std::vector<FieldState>
solve(
const std::vector<WeakForm*>& residual_evals,
64 const std::vector<std::vector<size_t>>& block_indices,
const FieldState& shape_disp,
65 const std::vector<std::vector<FieldState>>& states,
66 const std::vector<std::vector<FieldState>>& params,
const TimeInfo& time_info,
67 const std::vector<const BoundaryConditionManager*>& bc_managers)
const;
74 int max_staggered_iterations_;
75 bool exact_staggered_steps_;
76 std::vector<Stage> stages_;
Orchestrates staggered solution for multiphysics systems.
std::vector< FieldState > solve(const std::vector< WeakForm * > &residual_evals, const std::vector< std::vector< size_t >> &block_indices, const FieldState &shape_disp, const std::vector< std::vector< FieldState >> &states, const std::vector< std::vector< FieldState >> ¶ms, const TimeInfo &time_info, const std::vector< const BoundaryConditionManager * > &bc_managers) const
Solves the multiphysics system using staggered iterations.
CoupledSystemSolver(std::shared_ptr< NonlinearBlockSolverBase > single_solver)
Construct a monolithic CoupledSystemSolver from a single block solver.
std::shared_ptr< CoupledSystemSolver > singleBlockSolver(size_t block_index) const
Build a single-block solver from the stage responsible for block_index. Prefers constructing a fresh ...
void addSubsystemSolver(const std::vector< size_t > &block_indices, std::shared_ptr< NonlinearBlockSolverBase > solver, double relaxation_factor=1.0)
Convenience method to add a solver stage.
A file defining some enums and structs that are used by the different physics modules.
Accelerator functionality.
gretl::State< FEFieldPtr, FEDualPtr > FieldState
typedef
This file contains enumerations and record types for physics solver configuration.
Represents a single stage in a staggered iteration.
std::vector< size_t > block_indices
Which blocks (residuals) to solve in this stage.
std::shared_ptr< NonlinearBlockSolverBase > solver
Solver to use for this stage.
struct storing time and timestep information