Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
linear_system.hpp File Reference

Classes

struct  mundy::CGResult< Scalar >
 Result of a linear-system solve: iteration count, final residual, and whether it converged. More...
struct  mundy::CGConfig< Scalar >
class  mundy::LinearSystem< Backend, LinearOp, RhsVector, Workspace >
 The linear system A x = b for a square operator A. More...
class  mundy::CGState< Scalar, XVector, RVector, PVector, ApVector >
 The CG solve state: the x/r/p/Ap vectors and the iteration scalars. More...
class  mundy::CGStrategy< ResidualPolicy, Config >
 The CG strategy: initialize/iterate/done/result over (Problem, State). More...
class  mundy::CGInvOp< Backend, Op >
 Wraps an SPD operator as its inverse: apply(rhs, out) solves op * out = rhs via matrix-free CG. More...

Namespaces

namespace  mundy

Functions

Solve result
template<class Scalar>
std::ostream & mundy::operator<< (std::ostream &os, const CGResult< Scalar > result)
 Write a CGResult to an ostream.
Factory functions
template<class Backend, class LinearOp, class RhsVector>
auto mundy::make_linear_system (LinearOp &&A, RhsVector &&b)
template<class ResidualPolicy, class Scalar>
auto mundy::make_cg_solution_strategy (ResidualPolicy &&residual_policy, const CGConfig< Scalar > &cfg={})
template<class Scalar>
auto mundy::make_cg_solution_strategy (const CGConfig< Scalar > &cfg={})
template<class XVector, class RVector, class PVector, class ApVector>
auto mundy::make_cg_state (XVector &&x, RVector &&r, PVector &&p, ApVector &&ap)
template<class Problem, class Strategy, class State>
auto mundy::solve_linear_system (const Problem &prob, const Strategy &strat, State &state)
 Solve A x = b for SPD A via CG.
Inverse operator
template<class Backend, class Op, class Scalar>
auto mundy::make_cg_inv_op (Op &&op, const CGConfig< Scalar > &cfg, bool warm_start=false)