eigenpy 3.12.0
Bindings between Numpy and Eigen using Boost.Python
Loading...
Searching...
No Matches
SimplicialLLT.hpp
1/*
2 * Copyright 2024 INRIA
3 */
4
5#ifndef __eigenpy_decompositions_sparse_simplicial_llt_hpp__
6#define __eigenpy_decompositions_sparse_simplicial_llt_hpp__
7
8#include "eigenpy/eigenpy.hpp"
9#include "eigenpy/decompositions/sparse/SimplicialCholesky.hpp"
10#include "eigenpy/utils/scalar-name.hpp"
11
12namespace eigenpy {
13
14template <typename _MatrixType, int _UpLo = Eigen::Lower,
15 typename _Ordering =
16 Eigen::AMDOrdering<typename _MatrixType::StorageIndex>>
18 : public boost::python::def_visitor<
19 SimplicialLLTVisitor<_MatrixType, _UpLo, _Ordering>> {
21 typedef _MatrixType MatrixType;
22
23 typedef Eigen::SimplicialLLT<MatrixType> Solver;
24 typedef typename MatrixType::Scalar Scalar;
25 typedef typename MatrixType::RealScalar RealScalar;
26 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, MatrixType::Options>
27 DenseVectorXs;
28 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic,
29 MatrixType::Options>
30 DenseMatrixXs;
31
32 template <class PyClass>
33 void visit(PyClass &cl) const {
34 cl.def(bp::init<>(bp::arg("self"), "Default constructor"))
35 .def(bp::init<MatrixType>(bp::args("self", "matrix"),
36 "Constructs and performs the LLT "
37 "factorization from a given matrix."))
38
40 }
41
42 static void expose() {
43 static const std::string classname =
44 "SimplicialLLT_" + scalar_name<Scalar>::shortname();
45 expose(classname);
46 }
47
48 static void expose(const std::string &name) {
49 bp::class_<Solver, boost::noncopyable>(
50 name.c_str(),
51 "A direct sparse LLT Cholesky factorizations.\n\n"
52 "This class provides a LL^T Cholesky factorizations of sparse matrices "
53 "that are selfadjoint and positive definite."
54 "The factorization allows for solving A.X = B where X and B can be "
55 "either dense or sparse.\n\n"
56 "In order to reduce the fill-in, a symmetric permutation P is applied "
57 "prior to the factorization such that the factorized matrix is P A "
58 "P^-1.",
59 bp::no_init)
61 .def(IdVisitor<Solver>());
62 }
63};
64
65} // namespace eigenpy
66
67#endif // ifndef __eigenpy_decompositions_sparse_simplicial_llt_hpp__
void expose()
Call the expose function of a given type T.
Definition expose.hpp:23
Add the Python method id to retrieving a unique id for a given object exposed with Boost....
Definition id.hpp:18