35 template <
typename Vector,
typename RealScalar>
52 return angle * (ns / nt) * (ts /
abs(ts));
54 return ts / (nt * nt);
57 template <
typename MatrixType,
typename Rhs,
typename Dest,
typename Preconditioner>
66 S =
S <
x.rows() ?
S :
x.rows();
68 const Index maxit = iter;
77 P = (
qr.householderQ() * DenseMatrixType::Identity(
N,
S));
117 relres = normr / normb;
123 DenseMatrixType
M = DenseMatrixType::Identity(
S,
S);
130 while (normr > tolb && iter < maxit) {
140 v =
r -
G.rightCols(
S -
k) *
c;
142 v = precond.solve(
v);
145 U.col(
k) =
U.rightCols(
S -
k) *
c + om *
v;
146 G.col(
k) =
A *
U.col(
k);
168 normr =
r.stableNorm();
170 if (replacement && normr > tolb / mp) {
180 x_s = x_s -
gamma * (x_s -
x);
181 normr = r_s.stableNorm();
184 if (normr < tolb || iter == maxit) {
190 f.segment(
k + 1,
S - (
k + 1)) =
f.segment(
k + 1,
S - (
k + 1)) -
beta *
M.block(
k + 1,
k,
S - (
k + 1), 1);
194 if (normr < tolb || iter == maxit) {
202 v = precond.solve(
v);
216 normr =
r.stableNorm();
218 if (replacement && normr > tolb / mp) {
223 if (trueres && normr < normb) {
233 x_s = x_s -
gamma * (x_s -
x);
234 normr = r_s.stableNorm();
244 relres = normr / normb;
250 template <
typename MatrixType_,
typename Preconditioner_ = DiagonalPreconditioner<
typename MatrixType_::Scalar> >
255 template <
typename MatrixType_,
typename Preconditioner_>
304 template <
typename MatrixType_,
typename Preconditioner_>
338 template <
typename MatrixDerived>
347 template <
typename Rhs,
typename Dest>
AnnoyingScalar abs(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:135
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
int i
Definition: BiCGSTAB_step_by_step.cpp:9
HouseholderQR< MatrixXf > qr(A)
JacobiRotation< float > G
Definition: Jacobi_makeGivens.cpp:2
void adjoint(const MatrixType &m)
Definition: adjoint.cpp:85
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
Matrix< RealScalar, Dynamic, Dynamic > M
Definition: bench_gemm.cpp:50
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
LU decomposition of a matrix with complete pivoting, and related features.
Definition: FullPivLU.h:63
FullPivLU & compute(const EigenBase< InputType > &matrix)
Definition: FullPivLU.h:123
Householder QR decomposition of a matrix.
Definition: HouseholderQR.h:59
The Induced Dimension Reduction method (IDR(s)) is a short-recurrences Krylov method for sparse squar...
Definition: IDRS.h:305
void setResidualUpdate(bool update)
Definition: IDRS.h:390
IDRS()
Definition: IDRS.h:326
ComputationInfo m_info
Definition: IterativeSolverBase.h:389
IDRS(const EigenBase< MatrixDerived > &A)
Definition: IDRS.h:339
MatrixType::Scalar Scalar
Definition: IDRS.h:308
Preconditioner_ Preconditioner
Definition: IDRS.h:310
IterativeSolverBase< IDRS > Base
Definition: IDRS.h:313
RealScalar m_error
Definition: IterativeSolverBase.h:387
bool m_residual
Definition: IDRS.h:322
Index m_iterations
Definition: IterativeSolverBase.h:388
void _solve_vector_with_guess_impl(const Rhs &b, Dest &x) const
Definition: IDRS.h:348
MatrixType_ MatrixType
Definition: IDRS.h:307
void setSmoothing(bool smoothing)
Definition: IDRS.h:373
MatrixType::RealScalar RealScalar
Definition: IDRS.h:309
void setS(Index S)
Definition: IDRS.h:359
bool m_smoothing
Definition: IDRS.h:320
const ActualMatrixType & matrix() const
Definition: IterativeSolverBase.h:374
void setAngle(RealScalar angle)
Definition: IDRS.h:385
Index m_S
Definition: IDRS.h:319
RealScalar m_angle
Definition: IDRS.h:321
Base class for linear iterative solvers.
Definition: IterativeSolverBase.h:124
Index maxIterations() const
Definition: IterativeSolverBase.h:251
ComputationInfo m_info
Definition: IterativeSolverBase.h:389
RealScalar m_error
Definition: IterativeSolverBase.h:387
Preconditioner m_preconditioner
Definition: IterativeSolverBase.h:382
Index m_iterations
Definition: IterativeSolverBase.h:388
bool m_isInitialized
Definition: SparseSolverBase.h:110
RealScalar m_tolerance
Definition: IterativeSolverBase.h:385
IDRS< MatrixType_, Preconditioner_ > & derived()
Definition: SparseSolverBase.h:76
const ActualMatrixType & matrix() const
Definition: IterativeSolverBase.h:374
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
internal::traits< Matrix< Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_ > >::Scalar Scalar
Definition: PlainObjectBase.h:127
const Solve< Derived, Rhs > solve(const MatrixBase< Rhs > &b) const
Definition: SolverBase.h:106
@ N
Definition: constructor.cpp:22
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
@ NumericalIssue
Definition: Constants.h:442
@ Success
Definition: Constants.h:440
@ NoConvergence
Definition: Constants.h:444
RealScalar s
Definition: level1_cplx_impl.h:130
Eigen::DenseIndex ret
Definition: level1_cplx_impl.h:43
RealScalar alpha
Definition: level1_cplx_impl.h:151
Scalar beta
Definition: level2_cplx_impl.h:36
char char char int int * k
Definition: level2_impl.h:374
@ Rhs
Definition: TensorContractionMapper.h:20
bool idrs(const MatrixType &A, const Rhs &b, Dest &x, const Preconditioner &precond, Index &iter, typename Dest::RealScalar &relres, Index S, bool smoothing, typename Dest::RealScalar angle, bool replacement)
Definition: IDRS.h:58
EIGEN_DEVICE_FUNC bool isApprox(const Scalar &x, const Scalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
Definition: MathFunctions.h:1923
Vector::Scalar omega(const Vector &t, const Vector &s, RealScalar angle)
Definition: IDRS.h:36
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE std::enable_if_t< NumTraits< T >::IsSigned||NumTraits< T >::IsComplex, typename NumTraits< T >::Real > abs(const T &x)
Definition: MathFunctions.h:1355
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
unsigned Preconditioner
----------------------—Domain Properties------------------------—
Definition: space_time_oscillating_cylinder.cc:725
double P
Uniform pressure.
Definition: TwenteMeshGluing.cpp:77
double angle(const double &t)
Angular position as a function of time t.
Definition: jeffery_orbit.cc:98
double U
Swimming speed.
Definition: two_d_variable_diff_adapt.cc:53
int c
Definition: calibrate.py:100
Definition: Eigen_Colamd.h:49
Mdouble gamma(Mdouble gamma_in)
This is the gamma function returns the true value for the half integer value.
Definition: ExtendedMath.cc:116
double Zero
Definition: pseudosolid_node_update_elements.cc:35
@ S
Definition: quadtree.h:62
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36
Definition: EigenBase.h:33
Preconditioner_ Preconditioner
Definition: IDRS.h:258
MatrixType_ MatrixType
Definition: IDRS.h:257
Definition: ForwardDeclarations.h:21
Definition: fft_test_shared.h:66