Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-03-21 14:04:53 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-03-21 14:04:53 +0400
commit3411146984316c97f56543333a46f47aeb7f9d35 (patch)
tree5de608a3c18ff2a5459fd2191609dd882ad86213 /extern/Eigen3/Eigen/src/misc/SparseSolve.h
parent1781928f9d720fa1dc4811afb69935b35aa89878 (diff)
Update Eigen to version 3.2.1
Main purpose of this is to have SparseLU solver which we can use now as a replacement to opennl library.
Diffstat (limited to 'extern/Eigen3/Eigen/src/misc/SparseSolve.h')
-rw-r--r--extern/Eigen3/Eigen/src/misc/SparseSolve.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/extern/Eigen3/Eigen/src/misc/SparseSolve.h b/extern/Eigen3/Eigen/src/misc/SparseSolve.h
index 272c4a479d7..244bb8ec753 100644
--- a/extern/Eigen3/Eigen/src/misc/SparseSolve.h
+++ b/extern/Eigen3/Eigen/src/misc/SparseSolve.h
@@ -47,6 +47,23 @@ template<typename _DecompositionType, typename Rhs> struct sparse_solve_retval_b
}
protected:
+ template<typename DestScalar, int DestOptions, typename DestIndex>
+ inline void defaultEvalTo(SparseMatrix<DestScalar,DestOptions,DestIndex>& dst) const
+ {
+ // we process the sparse rhs per block of NbColsAtOnce columns temporarily stored into a dense matrix.
+ static const int NbColsAtOnce = 4;
+ int rhsCols = m_rhs.cols();
+ int size = m_rhs.rows();
+ Eigen::Matrix<DestScalar,Dynamic,Dynamic> tmp(size,rhsCols);
+ Eigen::Matrix<DestScalar,Dynamic,Dynamic> tmpX(size,rhsCols);
+ for(int k=0; k<rhsCols; k+=NbColsAtOnce)
+ {
+ int actualCols = std::min<int>(rhsCols-k, NbColsAtOnce);
+ tmp.leftCols(actualCols) = m_rhs.middleCols(k,actualCols);
+ tmpX.leftCols(actualCols) = m_dec.solve(tmp.leftCols(actualCols));
+ dst.middleCols(k,actualCols) = tmpX.leftCols(actualCols).sparseView();
+ }
+ }
const DecompositionType& m_dec;
typename Rhs::Nested m_rhs;
};