|
class | ChebyshevFilteredEigenSolver |
| A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. More...
|
|
struct | EigenSolverError |
|
class | EigenSolverErrorMsg |
|
class | IdentityOperatorContext |
| Abstract class to encapsulate the action of a discrete operator on vectors, matrices, etc. More...
|
|
class | JacobiPreconditioner |
| A class to encapsulate the Jacobi preconditioner in a linear or non-linear solve. More...
|
|
class | LanczosExtremeEigenSolver |
| A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. More...
|
|
struct | LapackError |
|
class | LapackErrorMsg |
| A class to map Error to a message. More...
|
|
class | LinAlgOpContext |
|
class | LinearAlgebraProfiler |
|
class | LinearSolverDefaults |
|
struct | LinearSolverError |
|
class | LinearSolverErrorMsg |
| A class to map Error to a message. More...
|
|
class | LinearSolverImpl |
| Abstract class that implements the LinearSolver algorithm. For example, the derived classes of it, such as CGLinearSolver, GMRESLinearSolver implement the Conjugate-Gradient (CG) and Generalized Minimum Residual (GMRES) Krylov subspace based approches, respectively, to solve a linear system of equations. More...
|
|
class | MultiPassLowdinDefaults |
|
class | MultiVector |
| An class template to encapsulate a MultiVector. A MultiVector is a collection of \(N\) vectors belonging to the same finite-dimensional vector space, where usual notion of vector size denotes the dimension of the vector space. Note that this in the mathematical sense and not in the sense of an multi-dimensional array.The MultiVector is stored contiguously with the vector index being the fastest index, or in other words a matrix of size \(M \times N\) in row major format with \(M \) denoting the dimension of the vector space (size of individual vector). More...
|
|
struct | NewtonRaphsonError |
|
class | NewtonRaphsonErrorMsg |
|
class | NewtonRaphsonSolver |
| A class that implements the Newton-Raphson solver to find root of a function. More...
|
|
class | NewtonRaphsonSolverFunction |
|
class | OperatorContext |
| Abstract class to encapsulate the action of a discrete operator on vectors, matrices, etc. More...
|
|
struct | OrthonormalizationError |
|
class | OrthonormalizationErrorMsg |
|
class | OrthonormalizationFunctions |
|
class | Preconditioner |
| Abstract class to encapsulate a preconditioner. More...
|
|
class | PreconditionerJacobi |
| Class to encapsulate the Jacobi preconditioner. More...
|
|
class | PreconditionerNone |
| Class to encapsulate the NONE preconditioner. Just takes in a vector and returns it. More...
|
|
class | PrintControlDefaults |
|
class | RayleighRitzEigenSolver |
| A derived class of OperatorContext to encapsulate the action of a discrete operator on vectors, matrices, etc. More...
|
|
class | Vector |
| A class that encapsulates a vector. This is a vector in the mathematical sense and not in the sense of an array or STL container. This class handles both serial and distributed vector in a unfied way. There are different constructors provided for the serial and distributed case. More...
|
|
class | VectorAttributes |
|
|
| CGLinearSolver (const size_type maxIter, const double absoluteTol, const double relativeTol, const double divergenceTol, LinearAlgebraProfiler profiler=LinearAlgebraProfiler()) |
| A class that implements the Conjugate-Gradient (CG) based Krylov subspace algorithm to solve a linear system of (i.e., solve for \( \mathbf{Ax}=\mathbf{b}$\f).
@see <em>An Introduction to the Conjugate Gradient Method Without the
Agonizing Pain</em>, Jonathan Richard Shewchuk
(<a
href="https://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf">Painless
Conjugate-Gradient</a>)
@see <em> Numerical Linear Algebra </em>, Trefethen, Lloyd N., and David Bau III., Vol. 50. Siam, 1997.
@tparam ValueTypeOperator The datatype (float, double, complex<double>,
etc.) for the operator (e.g. Matrix) associated with the linear solve
@tparam ValueTypeOperand The datatype (float, double, complex<double>,
etc.) of the vector, matrices, etc.
on which the operator will act
@tparam memorySpace The meory space (HOST, DEVICE, HOST_PINNED, etc.)
in which the data of the operator
and its operands reside
*/
template <typename ValueTypeOperator,
typename ValueTypeOperand,
utils::MemorySpace memorySpace>
class CGLinearSolver : public LinearSolverImpl<ValueTypeOperator,
ValueTypeOperand,
memorySpace>
{
public:
/**
@brief Constructor
@param[in] maxIter Maximum number of iterations to allow the solver
to iterate. Generally, this determines the maximum size of the Krylov
subspace that will be used.
@param[in] absoluteTol Convergence tolerane on the absolute \) L_2 $\f norm of the residual (i.e., on \(||\mathbf{Ax}-\mathbf{b}||$\f)
@param[in] relativeTol Convergence tolerane on the relative L2 norm of
the residual (i.e., on \)||\mathbf{Ax}-\mathbf{b}||/||\mathbf{b}||$\f) More...
|
|
| ~CGLinearSolver ()=default |
| Default Destructor. More...
|
|
LinearSolverError | solve (LinearSolverFunction< ValueTypeOperator, ValueTypeOperand, memorySpace > &linearSolverFunction) override |
| Function that initiates the linear solve. More...
|
|
template<typename ValueTypeOperator , typename ValueTypeOperand , utils::MemorySpace memorySpace> |
void | ChebyshevFilter (const OperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace > &A, const OperatorContext< ValueTypeOperator, ValueTypeOperand, memorySpace > &BInv, MultiVector< ValueTypeOperand, memorySpace > &eigenSubspaceGuess, const size_type polynomialDegree, const double wantedSpectrumLowerBound, const double wantedSpectrumUpperBound, const double unWantedSpectrumUpperBound, MultiVector< blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > &filteredSubspace) |
| A class to get chebyshevFiletered subspace "filteredSubspace" from original subspace "eigenSubspaceGuess". Note both of these vectors have to be apriori allocated and both will change after the function is called. More...
|
|
template<typename ValueType , dftefe::utils::MemorySpace memorySpace> |
void | swap (MultiVector< ValueType, memorySpace > &X, MultiVector< ValueType, memorySpace > &Y) |
| Swaps the data of u with this multivector. More...
|
|
template<typename ValueType1 , typename ValueType2 , utils::MemorySpace memorySpace> |
void | add (blasLapack::scalar_type< ValueType1, ValueType2 > a, const MultiVector< ValueType1, memorySpace > &u, blasLapack::scalar_type< ValueType1, ValueType2 > b, const MultiVector< ValueType2, memorySpace > &v, MultiVector< blasLapack::scalar_type< ValueType1, ValueType2 >, memorySpace > &w) |
| Perform \( w = au + bv \). More...
|
|
template<typename ValueType1 , typename ValueType2 , utils::MemorySpace memorySpace> |
void | add (const std::vector< blasLapack::scalar_type< ValueType1, ValueType2 > > &a, const MultiVector< ValueType1, memorySpace > &u, const std::vector< blasLapack::scalar_type< ValueType1, ValueType2 > > &b, const MultiVector< ValueType2, memorySpace > &v, MultiVector< blasLapack::scalar_type< ValueType1, ValueType2 >, memorySpace > &w) |
| Perform \( w = au + bv \). More...
|
|
template<typename ValueType1 , typename ValueType2 , utils::MemorySpace memorySpace> |
void | dot (const MultiVector< ValueType1, memorySpace > &u, const MultiVector< ValueType2, memorySpace > &v, blasLapack::scalar_type< ValueType1, ValueType2 > *dotProds, const blasLapack::ScalarOp &opU, const blasLapack::ScalarOp &opV) |
|
template<typename ValueType1 , typename ValueType2 , utils::MemorySpace memorySpace> |
void | dot (const MultiVector< ValueType1, memorySpace > &u, const MultiVector< ValueType2, memorySpace > &v, std::vector< blasLapack::scalar_type< ValueType1, ValueType2 > > &dotProds, const blasLapack::ScalarOp &opU, const blasLapack::ScalarOp &opV) |
|
template<typename ValueType1 , typename ValueType2 , utils::MemorySpace memorySpace> |
void | dot (const Vector< ValueType1, memorySpace > &u, const Vector< ValueType2, memorySpace > &v, blasLapack::scalar_type< ValueType1, ValueType2 > &dotProd, const blasLapack::ScalarOp &opU, const blasLapack::ScalarOp &opV) |
|
A class that implements the Conjugate-Gradient (CG) based Krylov subspace algorithm to solve a linear system of (i.e., solve for \( \mathbf{Ax}=\mathbf{b}$\f).
@see <em>An Introduction to the Conjugate Gradient Method Without the
Agonizing Pain</em>, Jonathan Richard Shewchuk
(<a
href="https://www.cs.cmu.edu/~quake-papers/painless-conjugate-gradient.pdf">Painless
Conjugate-Gradient</a>)
@see <em> Numerical Linear Algebra </em>, Trefethen, Lloyd N., and David Bau III., Vol. 50. Siam, 1997.
@tparam ValueTypeOperator The datatype (float, double, complex<double>,
etc.) for the operator (e.g. Matrix) associated with the linear solve
@tparam ValueTypeOperand The datatype (float, double, complex<double>,
etc.) of the vector, matrices, etc.
on which the operator will act
@tparam memorySpace The meory space (HOST, DEVICE, HOST_PINNED, etc.)
in which the data of the operator
and its operands reside
*/
template <typename ValueTypeOperator,
typename ValueTypeOperand,
utils::MemorySpace memorySpace>
class CGLinearSolver : public LinearSolverImpl<ValueTypeOperator,
ValueTypeOperand,
memorySpace>
{
public:
/**
@brief Constructor
@param[in] maxIter Maximum number of iterations to allow the solver
to iterate. Generally, this determines the maximum size of the Krylov
subspace that will be used.
@param[in] absoluteTol Convergence tolerane on the absolute \) L_2 $\f norm of the residual (i.e., on \(||\mathbf{Ax}-\mathbf{b}||$\f)
@param[in] relativeTol Convergence tolerane on the relative L2 norm of
the residual (i.e., on \)||\mathbf{Ax}-\mathbf{b}||/||\mathbf{b}||$\f)
- Parameters
-
[in] | divergenceTol | Tolerance to abort the linear solver if the L2 norm of the residual exceeds it (i.e., if \(||\mathbf{Ax}-\mathbf{b}|| > divergenceTol$\f)
@note Convergence is achieved if
\)||\mathbf{Ax}-\mathbf{b}|| < max(absoluteTol, relativeTol*||\mathbf{b}||)$\f |