From f0dcb12475663fc43c30609c76d18d6a6898eb78 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Mon, 14 Dec 2020 16:23:08 +0100 Subject: [PATCH] GCS: Diagnose() - Separate DenseQR and SparseQR --- src/Mod/Sketcher/App/planegcs/GCS.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp index c5093970b9..5c50a1bd69 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.cpp +++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp @@ -3905,21 +3905,18 @@ SolverReportingManager::Manager().LogToFile("GCS::System::diagnose()\n"); // QR decomposition method selection: SparseQR vs DenseQR -#ifdef EIGEN_SPARSEQR_COMPATIBLE - Eigen::SparseQR, Eigen::COLAMDOrdering > SqrJT; -#else +#ifndef EIGEN_SPARSEQR_COMPATIBLE if(qrAlgorithm==EigenSparseQR){ Base::Console().Warning("SparseQR not supported by you current version of Eigen. It requires Eigen 3.2.2 or higher. Falling back to Dense QR\n"); qrAlgorithm=EigenDenseQR; } #endif - Eigen::MatrixXd R; - int rank = 0; // rank is not cheap to retrieve from qrJT in DenseQR - - Eigen::FullPivHouseholderQR qrJT; - if(qrAlgorithm==EigenDenseQR){ + int rank = 0; // rank is not cheap to retrieve from qrJT in DenseQR + Eigen::MatrixXd R; + Eigen::FullPivHouseholderQR qrJT; + makeDenseQRDecomposition( J, jacobianconstraintmap, qrJT, rank, R); int paramsNum = qrJT.rows(); @@ -3953,6 +3950,11 @@ SolverReportingManager::Manager().LogToFile("GCS::System::diagnose()\n"); } #ifdef EIGEN_SPARSEQR_COMPATIBLE else if(qrAlgorithm==EigenSparseQR){ + int rank = 0; + Eigen::MatrixXd R; + Eigen::SparseQR, Eigen::COLAMDOrdering > SqrJT; + + makeSparseQRDecomposition( J, jacobianconstraintmap, SqrJT, rank, R); int paramsNum = SqrJT.rows();