mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-09 14:41:49 +08:00
parent
56f4144035
commit
d51c9f1e93
@ -58,10 +58,12 @@ cholmod_sparse viewAsCholmod(SparseMatrix<_Scalar,_Options,_Index>& mat)
|
|||||||
res.p = mat.outerIndexPtr();
|
res.p = mat.outerIndexPtr();
|
||||||
res.i = mat.innerIndexPtr();
|
res.i = mat.innerIndexPtr();
|
||||||
res.x = mat.valuePtr();
|
res.x = mat.valuePtr();
|
||||||
|
res.z = 0;
|
||||||
res.sorted = 1;
|
res.sorted = 1;
|
||||||
if(mat.isCompressed())
|
if(mat.isCompressed())
|
||||||
{
|
{
|
||||||
res.packed = 1;
|
res.packed = 1;
|
||||||
|
res.nz = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -170,6 +172,7 @@ class CholmodBase : internal::noncopyable
|
|||||||
CholmodBase()
|
CholmodBase()
|
||||||
: m_cholmodFactor(0), m_info(Success), m_isInitialized(false)
|
: m_cholmodFactor(0), m_info(Success), m_isInitialized(false)
|
||||||
{
|
{
|
||||||
|
m_shiftOffset[0] = m_shiftOffset[1] = RealScalar(0.0);
|
||||||
cholmod_start(&m_cholmod);
|
cholmod_start(&m_cholmod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,7 +244,7 @@ class CholmodBase : internal::noncopyable
|
|||||||
return internal::sparse_solve_retval<CholmodBase, Rhs>(*this, b.derived());
|
return internal::sparse_solve_retval<CholmodBase, Rhs>(*this, b.derived());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Performs a symbolic decomposition on the sparcity of \a matrix.
|
/** Performs a symbolic decomposition on the sparsity pattern of \a matrix.
|
||||||
*
|
*
|
||||||
* This function is particularly useful when solving for several problems having the same structure.
|
* This function is particularly useful when solving for several problems having the same structure.
|
||||||
*
|
*
|
||||||
@ -265,7 +268,7 @@ class CholmodBase : internal::noncopyable
|
|||||||
|
|
||||||
/** Performs a numeric decomposition of \a matrix
|
/** Performs a numeric decomposition of \a matrix
|
||||||
*
|
*
|
||||||
* The given matrix must has the same sparcity than the matrix on which the symbolic decomposition has been performed.
|
* The given matrix must have the same sparsity pattern as the matrix on which the symbolic decomposition has been performed.
|
||||||
*
|
*
|
||||||
* \sa analyzePattern()
|
* \sa analyzePattern()
|
||||||
*/
|
*/
|
||||||
@ -302,7 +305,7 @@ class CholmodBase : internal::noncopyable
|
|||||||
{
|
{
|
||||||
this->m_info = NumericalIssue;
|
this->m_info = NumericalIssue;
|
||||||
}
|
}
|
||||||
// TODO optimize this copy by swapping when possible (be carreful with alignment, etc.)
|
// TODO optimize this copy by swapping when possible (be careful with alignment, etc.)
|
||||||
dest = Matrix<Scalar,Dest::RowsAtCompileTime,Dest::ColsAtCompileTime>::Map(reinterpret_cast<Scalar*>(x_cd->x),b.rows(),b.cols());
|
dest = Matrix<Scalar,Dest::RowsAtCompileTime,Dest::ColsAtCompileTime>::Map(reinterpret_cast<Scalar*>(x_cd->x),b.rows(),b.cols());
|
||||||
cholmod_free_dense(&x_cd, &m_cholmod);
|
cholmod_free_dense(&x_cd, &m_cholmod);
|
||||||
}
|
}
|
||||||
@ -323,7 +326,7 @@ class CholmodBase : internal::noncopyable
|
|||||||
{
|
{
|
||||||
this->m_info = NumericalIssue;
|
this->m_info = NumericalIssue;
|
||||||
}
|
}
|
||||||
// TODO optimize this copy by swapping when possible (be carreful with alignment, etc.)
|
// TODO optimize this copy by swapping when possible (be careful with alignment, etc.)
|
||||||
dest = viewAsEigen<DestScalar,DestOptions,DestIndex>(*x_cs);
|
dest = viewAsEigen<DestScalar,DestOptions,DestIndex>(*x_cs);
|
||||||
cholmod_free_sparse(&x_cs, &m_cholmod);
|
cholmod_free_sparse(&x_cs, &m_cholmod);
|
||||||
}
|
}
|
||||||
@ -365,8 +368,8 @@ class CholmodBase : internal::noncopyable
|
|||||||
*
|
*
|
||||||
* This class allows to solve for A.X = B sparse linear problems via a simplicial LL^T Cholesky factorization
|
* This class allows to solve for A.X = B sparse linear problems via a simplicial LL^T Cholesky factorization
|
||||||
* using the Cholmod library.
|
* using the Cholmod library.
|
||||||
* This simplicial variant is equivalent to Eigen's built-in SimplicialLLT class. Thefore, it has little practical interest.
|
* This simplicial variant is equivalent to Eigen's built-in SimplicialLLT class. Therefore, it has little practical interest.
|
||||||
* The sparse matrix A must be selfajoint and positive definite. The vectors or matrices
|
* The sparse matrix A must be selfadjoint and positive definite. The vectors or matrices
|
||||||
* X and B can be either dense or sparse.
|
* X and B can be either dense or sparse.
|
||||||
*
|
*
|
||||||
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
||||||
@ -412,8 +415,8 @@ class CholmodSimplicialLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimpl
|
|||||||
*
|
*
|
||||||
* This class allows to solve for A.X = B sparse linear problems via a simplicial LDL^T Cholesky factorization
|
* This class allows to solve for A.X = B sparse linear problems via a simplicial LDL^T Cholesky factorization
|
||||||
* using the Cholmod library.
|
* using the Cholmod library.
|
||||||
* This simplicial variant is equivalent to Eigen's built-in SimplicialLDLT class. Thefore, it has little practical interest.
|
* This simplicial variant is equivalent to Eigen's built-in SimplicialLDLT class. Therefore, it has little practical interest.
|
||||||
* The sparse matrix A must be selfajoint and positive definite. The vectors or matrices
|
* The sparse matrix A must be selfadjoint and positive definite. The vectors or matrices
|
||||||
* X and B can be either dense or sparse.
|
* X and B can be either dense or sparse.
|
||||||
*
|
*
|
||||||
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
||||||
@ -458,7 +461,7 @@ class CholmodSimplicialLDLT : public CholmodBase<_MatrixType, _UpLo, CholmodSimp
|
|||||||
* This class allows to solve for A.X = B sparse linear problems via a supernodal LL^T Cholesky factorization
|
* This class allows to solve for A.X = B sparse linear problems via a supernodal LL^T Cholesky factorization
|
||||||
* using the Cholmod library.
|
* using the Cholmod library.
|
||||||
* This supernodal variant performs best on dense enough problems, e.g., 3D FEM, or very high order 2D FEM.
|
* This supernodal variant performs best on dense enough problems, e.g., 3D FEM, or very high order 2D FEM.
|
||||||
* The sparse matrix A must be selfajoint and positive definite. The vectors or matrices
|
* The sparse matrix A must be selfadjoint and positive definite. The vectors or matrices
|
||||||
* X and B can be either dense or sparse.
|
* X and B can be either dense or sparse.
|
||||||
*
|
*
|
||||||
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
* \tparam _MatrixType the type of the sparse matrix A, it must be a SparseMatrix<>
|
||||||
@ -501,7 +504,7 @@ class CholmodSupernodalLLT : public CholmodBase<_MatrixType, _UpLo, CholmodSuper
|
|||||||
* \brief A general Cholesky factorization and solver based on Cholmod
|
* \brief A general Cholesky factorization and solver based on Cholmod
|
||||||
*
|
*
|
||||||
* This class allows to solve for A.X = B sparse linear problems via a LL^T or LDL^T Cholesky factorization
|
* This class allows to solve for A.X = B sparse linear problems via a LL^T or LDL^T Cholesky factorization
|
||||||
* using the Cholmod library. The sparse matrix A must be selfajoint and positive definite. The vectors or matrices
|
* using the Cholmod library. The sparse matrix A must be selfadjoint and positive definite. The vectors or matrices
|
||||||
* X and B can be either dense or sparse.
|
* X and B can be either dense or sparse.
|
||||||
*
|
*
|
||||||
* This variant permits to change the underlying Cholesky method at runtime.
|
* This variant permits to change the underlying Cholesky method at runtime.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user