|
Uni20
Asynchronous tensor and runtime library.
|
Restarted right-preconditioned GMRES over opaque vector operations. More...
#include <uni20/core/runtime_precision.hpp>#include <uni20/krylov/gmres_diagnostics.hpp>#include <uni20/krylov/matrix_free.hpp>Go to the source code of this file.
Classes | |
| struct | uni20::krylov::gmres_detail::Rotation< S > |
| struct | uni20::krylov::gmres_detail::Tolerances< R > |
| struct | uni20::krylov::GmresInfo< R > |
| Recoverable solve outcome; counters include attempted operator calls. More... | |
| struct | uni20::krylov::GmresOptions< R > |
| Residual stopping policy and storage/iteration limits. More... | |
| struct | uni20::krylov::IdentityPreconditioner< Ops > |
| Identity preconditioner using the supplied vector copy operation. More... | |
Namespaces | |
| namespace | uni20 |
| namespace | uni20::krylov |
| namespace | uni20::krylov::gmres_detail |
Concepts | |
| concept | uni20::krylov::KrylovPreconditioner |
Fixed linear inverse-preconditioner application, output <- M^{-1} input. | |
Enumerations | |
| enum class | uni20::krylov::GmresStatus { uni20::krylov::converged , uni20::krylov::iteration_limit , uni20::krylov::stagnated , uni20::krylov::breakdown , uni20::krylov::nonfinite_input , uni20::krylov::nonfinite_result } |
| Numerical termination of a matrix-free linear solve. More... | |
Functions | |
| template<RealOrComplex S, class Ops , class Op , class P , class V > requires KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> && KrylovPreconditioner<P, V> | |
| GmresInfo< make_real_t< S > > | uni20::krylov::gmres_with_info (Ops &ops, Op &op, P &preconditioner, V &x, V const &b, GmresOptions< make_real_t< S > > const &options, Precision precision) |
Solve A*x=b with restarted GMRES and a fixed right preconditioner. | |
| template<RealOrComplex S, class Ops , class Op , class P , class V > requires (!has_runtime_precision_v<S>) && KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> && KrylovPreconditioner<P, V> | |
| auto | uni20::krylov::gmres_with_info (Ops &ops, Op &op, P &preconditioner, V &x, V const &b, GmresOptions< make_real_t< S > > const &options={}) |
| Fixed-scalar GMRES using the scalar's native precision. | |
| template<RealOrComplex S, class Ops , class Op , class V > requires KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> | |
| auto | uni20::krylov::gmres_with_info (Ops &ops, Op &op, V &x, V const &b, GmresOptions< make_real_t< S > > const &options, Precision p) |
| GMRES without preconditioning, at explicit scalar precision. | |
| template<RealOrComplex S, class Ops , class Op , class V > requires (!has_runtime_precision_v<S>) && KrylovVectorOps<Ops, V, S> && KrylovOperator<Op, V> | |
| auto | uni20::krylov::gmres_with_info (Ops &ops, Op &op, V &x, V const &b, GmresOptions< make_real_t< S > > const &options={}) |
| Fixed-scalar GMRES without preconditioning. | |
| template<RealOrComplex S, class Ops , class V > | |
| std::optional< make_real_t< S > > | uni20::krylov::gmres_detail::norm (Ops &ops, V const &v, Precision p) |
| template<RealOrComplex S, class Ops , class V > | |
| void | uni20::krylov::gmres_detail::normalize (Ops &ops, V &v, make_real_t< S > const &length, Precision p) |
| template<Real R> | |
| bool | uni20::krylov::gmres_detail::reached (R const &residual, R const &rhs, R const &relative, R const &absolute) |
| template<class S > | |
| void | uni20::krylov::gmres_detail::rotate (Rotation< S > const &rotation, S &x, S &y) |
| template<RealOrComplex S> | |
| Rotation< S > | uni20::krylov::gmres_detail::rotation (S const &f, S const &g, Precision p) |
| template<Real R> | |
| Tolerances< R > | uni20::krylov::gmres_detail::tolerances (GmresOptions< R > const &options, Precision precision) |
Restarted right-preconditioned GMRES over opaque vector operations.