Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
nonsymmetric_arnoldi.hpp File Reference
#include <uni20/core/scalar_concepts.hpp>
#include <uni20/krylov/dense_subspace.hpp>
#include <uni20/krylov/matrix_free.hpp>
#include <algorithm>
#include <cmath>
#include <complex>
#include <cstddef>
#include <limits>
#include <numeric>
#include <stdexcept>
#include <utility>
#include <vector>
Include dependency graph for nonsymmetric_arnoldi.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  uni20::krylov::ArnoldiFactorization< Scalar, Vector >
 Arnoldi factorization for a nonsymmetric matrix-free operator. More...
 
struct  uni20::krylov::ArnoldiRitzExtraction< Scalar >
 Ritz data extracted from a real Arnoldi Hessenberg projection. More...
 
struct  uni20::krylov::ComplexSchurCompressedArnoldiFactorization< Real, Vector >
 Compressed complex Arnoldi relation after a Schur restart. More...
 
struct  uni20::krylov::RealSchurCompressedArnoldiFactorization< Scalar, Vector >
 Compressed real Arnoldi relation after a Schur restart. More...
 
struct  uni20::krylov::RealSchurRestartSelection< Scalar >
 Block-aware selection result for real Schur restart. More...
 

Namespaces

namespace  uni20
 
namespace  uni20::krylov
 

Functions

template<uni20::RealOrComplex Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
ArnoldiFactorization< Scalar, Vector > uni20::krylov::arnoldi_factorize (Ops &ops, Vector const &initial, int max_steps, uni20::make_real_t< Scalar > breakdown_tolerance=uni20::make_real_t< Scalar >{})
 Build a full-reorthogonalized Arnoldi factorization.
 
template<uni20::RealOrComplex Scalar, typename Vector >
uni20::DenseMatrix< Scalar > uni20::krylov::arnoldi_projected_hessenberg (ArnoldiFactorization< Scalar, Vector > const &factorization)
 Copy the square projected Hessenberg block from an Arnoldi factorization.
 
template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
NonsymmetricEigenResult< Real, Vector > uni20::krylov::complex_nonsymmetric_arnoldi_standard (Ops &ops, Vector const &initial, NonsymmetricEigenParams< Real > const &params)
 Run a restarted complex nonsymmetric Arnoldi solver.
 
template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
ComplexSchurCompressedArnoldiFactorization< Real, Vector > uni20::krylov::compress_complex_schur_arnoldi_restart (Ops &ops, ArnoldiFactorization< uni20::complex< Real >, Vector > const &factorization, NonsymmetricEigenParams< Real > const &params)
 Compress a complex Arnoldi factorization through complex Schur reordering.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
RealSchurCompressedArnoldiFactorization< Scalar, Vector > uni20::krylov::compress_real_schur_arnoldi_restart (Ops &ops, ArnoldiFactorization< Scalar, Vector > const &factorization, NonsymmetricEigenParams< Scalar > const &params)
 Compress an Arnoldi factorization through real Schur block reordering.
 
template<uni20::LapackComplexReal Real, typename Vector , KrylovMatrixFreeOperator< Vector, uni20::complex< Real > > Ops>
ArnoldiFactorization< uni20::complex< Real >, Vector > uni20::krylov::expand_complex_schur_arnoldi_restart (Ops &ops, ComplexSchurCompressedArnoldiFactorization< Real, Vector > const &compressed, std::size_t target_step_count, Real breakdown_tolerance=Real{})
 Expand a compressed complex Schur Arnoldi relation back to a requested dimension.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
ArnoldiFactorization< Scalar, Vector > uni20::krylov::expand_real_schur_arnoldi_restart (Ops &ops, RealSchurCompressedArnoldiFactorization< Scalar, Vector > const &compressed, std::size_t target_step_count, Scalar breakdown_tolerance=Scalar{})
 Expand a compressed real Schur Arnoldi relation back to a requested dimension.
 
template<uni20::LapackReal Scalar, typename Vector >
ArnoldiRitzExtraction< Scalar > uni20::krylov::extract_arnoldi_ritz (ArnoldiFactorization< Scalar, Vector > const &factorization, Scalar complex_pair_tolerance=Scalar{}, Scalar scale=Scalar{1})
 Extract projected Ritz values and residual estimates from a real Arnoldi factorization.
 
template<uni20::LapackComplex Complex, typename Vector >
ArnoldiRitzExtraction< uni20::make_real_t< Complex > > uni20::krylov::extract_complex_arnoldi_ritz (ArnoldiFactorization< Complex, Vector > const &factorization, uni20::make_real_t< Complex > complex_pair_tolerance=uni20::make_real_t< Complex >{}, uni20::make_real_t< Complex > scale=uni20::make_real_t< Complex >{1})
 Extract projected Ritz values from a complex Arnoldi factorization.
 
template<uni20::RealOrComplex Scalar>
uni20::make_real_t< Scalar > uni20::krylov::projected_departure_from_normality (uni20::DenseMatrix< Scalar > const &matrix)
 Measure departure from normality of a projected matrix.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
NonsymmetricEigenResult< Scalar, Vector > uni20::krylov::real_nonsymmetric_arnoldi_restarted_standard (Ops &ops, Vector const &initial, NonsymmetricEigenParams< Scalar > const &params)
 Run a restarted native real nonsymmetric Arnoldi solver.
 
template<uni20::LapackReal Scalar, typename Vector , KrylovMatrixFreeOperator< Vector, Scalar > Ops>
NonsymmetricEigenResult< Scalar, Vector > uni20::krylov::real_nonsymmetric_arnoldi_standard (Ops &ops, Vector const &initial, NonsymmetricEigenParams< Scalar > const &params)
 Run the first native non-restarted real nonsymmetric Arnoldi solver.
 
template<uni20::Real Scalar>
std::vector< std::size_t > uni20::krylov::select_nonsymmetric_restart_indices (std::vector< uni20::complex< Scalar > > const &values, NonsymmetricEigenParams< Scalar > const &params)
 Select retained Ritz or Schur indices for a nonsymmetric thick restart.
 
template<uni20::Real Scalar>
std::vector< std::size_t > uni20::krylov::select_nonsymmetric_ritz_indices (std::vector< uni20::complex< Scalar > > const &values, NonsymmetricEigenParams< Scalar > const &params)
 Select wanted Ritz indices for a nonsymmetric projected spectrum.
 
template<uni20::LapackReal Scalar>
RealSchurRestartSelection< Scalar > uni20::krylov::select_real_schur_restart_blocks (std::vector< RealSchurBlock< Scalar > > const &blocks, NonsymmetricEigenParams< Scalar > const &params)
 Select real Schur blocks for a nonsymmetric thick restart.