Rodin/Solver/SimplicialLDLT.h file

Simplicial LDLT Cholesky factorization for sparse SPD matrices.

This header provides the SimplicialLDLT solver class, which implements Cholesky decomposition without square root for symmetric positive definite sparse matrices.

Algorithm

The solver computes:

\[ A = LDL^T \]

where $ L $ is unit lower triangular and $ D $ is diagonal. This variant avoids square root operations, improving numerical stability.

Applicability

  • Symmetric positive definite sparse matrices
  • When numerical stability is a concern
  • Problems requiring higher precision
  • Systems where LLT might encounter numerical issues

Usage Example

Problem problem(u, v);
problem = Integral(Grad(u), Grad(v)) - Integral(f, v);

Solver::SimplicialLDLT solver(problem);
solver.solve();

Namespaces

namespace Rodin
The Rodin library for finite element methods and shape optimization.
namespace Rodin::FormLanguage
Namespace Rodin::FormLanguage.
namespace Rodin::Solver
Namespace Rodin::Solver.

Classes

template<class LinearSystem>
struct Rodin::FormLanguage::Traits<Solver::SimplicialLDLT<LinearSystem>>
Form-language traits for SimplicialLDLT solvers.
template<class Scalar>
class Rodin::Solver::SimplicialLDLT<Math::LinearSystem<Math::SparseMatrix<Scalar>, Math::Vector<Scalar>>>
Simplicial LDLT Cholesky factorization without square root.