ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver > Class Template Reference#

DiFfRG: DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver > Class Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver > Class Template Reference

#include <ScaledGMRES.hh>

Inheritance diagram for DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >:
DiFfRG::AbstractLinearSolver< SparseMatrixType, VectorType >

Public Member Functions

 ScaledLinearSolver ()=default
 
void init (const SparseMatrixType &matrix)
 
bool invert ()
 
int solve (const VectorType &src, VectorType &dst, const double tol)
 
double estimate_scaled_rcond (const SparseMatrixType &, const unsigned int max_iterations=5) const
 
- Public Member Functions inherited from DiFfRG::AbstractLinearSolver< SparseMatrixType, VectorType >
 AbstractLinearSolver ()
 
void set_report_port (ReportPort port)
 
void init (const SparseMatrixType &matrix)
 
bool invert ()
 
int solve (const VectorType &src, const VectorType &dst, const double tol)
 

Static Public Attributes

static constexpr bool performs_factorization = InnerSolver::performs_factorization
 

Private Member Functions

void build_scaling (const SparseMatrixType &matrix)
 
void build_scaled_matrix (const SparseMatrixType &matrix)
 

Static Private Member Functions

static double safe_inverse_sqrt (const double norm)
 

Private Attributes

bool initialized = false
 
SparseMatrixType scaled_matrix
 
std::vector< double > row_scale
 
std::vector< double > col_scale
 
InnerSolver inner_solver
 

Additional Inherited Members

- Protected Attributes inherited from DiFfRG::AbstractLinearSolver< SparseMatrixType, VectorType >
ReportPort report_port
 

Constructor & Destructor Documentation

◆ ScaledLinearSolver()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::ScaledLinearSolver ( )
default

Member Function Documentation

◆ build_scaled_matrix()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
void DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::build_scaled_matrix ( const SparseMatrixType & matrix)
inlineprivate

◆ build_scaling()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
void DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::build_scaling ( const SparseMatrixType & matrix)
inlineprivate

◆ estimate_scaled_rcond()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
double DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::estimate_scaled_rcond ( const SparseMatrixType & ,
const unsigned int max_iterations = 5 ) const
inline

◆ init()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
void DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::init ( const SparseMatrixType & matrix)
inline

◆ invert()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
bool DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::invert ( )
inline

◆ safe_inverse_sqrt()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
static double DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::safe_inverse_sqrt ( const double norm)
inlinestaticprivate

◆ solve()

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
int DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::solve ( const VectorType & src,
VectorType & dst,
const double tol )
inline

Member Data Documentation

◆ col_scale

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
std::vector<double> DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::col_scale
private

◆ initialized

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
bool DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::initialized = false
private

◆ inner_solver

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
InnerSolver DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::inner_solver
private

◆ performs_factorization

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
bool DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::performs_factorization = InnerSolver::performs_factorization
staticconstexpr

◆ row_scale

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
std::vector<double> DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::row_scale
private

◆ scaled_matrix

template<typename SparseMatrixType , typename VectorType , typename InnerSolver = GMRES<SparseMatrixType, VectorType, dealii::PreconditionIdentity>>
SparseMatrixType DiFfRG::ScaledLinearSolver< SparseMatrixType, VectorType, InnerSolver >::scaled_matrix
private

The documentation for this class was generated from the following file:
  • /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/timestepping/linear_solver/ScaledGMRES.hh