_default_solver< SparseMatrixType, VectorType > Struct Template Reference#

DiFfRG: DiFfRG::internal::_default_solver< SparseMatrixType, VectorType > Struct Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::internal::_default_solver< SparseMatrixType, VectorType > Struct Template Reference

Maps a (matrix, vector) pair to the solver that suits it. More...

#include <default_linear_solver.hh>

Public Types

using type = UMFPack<SparseMatrixType, VectorType>
 

Detailed Description

template<typename SparseMatrixType, typename VectorType>
struct DiFfRG::internal::_default_solver< SparseMatrixType, VectorType >

Maps a (matrix, vector) pair to the solver that suits it.

Serial linear algebra gets UMFPack, which is what every application used before this default existed. Distributed linear algebra gets a direct solve via MUMPS where PETSc was built with it, so that switching to an MPI build changes where the work happens but not the character of the solve – IDA's Newton sees the same convergence behaviour it does serially. PETScKrylov is the fallback when MUMPS is absent; it is iterative, and a flow that is fine-tuned against a direct solve may need its tolerances revisited.

Member Typedef Documentation

◆ type

template<typename SparseMatrixType , typename VectorType >
using DiFfRG::internal::_default_solver< SparseMatrixType, VectorType >::type = UMFPack<SparseMatrixType, VectorType>

The documentation for this struct was generated from the following file: