diff options
Diffstat (limited to 'internal/ceres/preconditioner.h')
-rw-r--r-- | internal/ceres/preconditioner.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/internal/ceres/preconditioner.h b/internal/ceres/preconditioner.h index af64e3c..e8d5994 100644 --- a/internal/ceres/preconditioner.h +++ b/internal/ceres/preconditioner.h @@ -36,6 +36,7 @@ #include "ceres/compressed_row_sparse_matrix.h" #include "ceres/linear_operator.h" #include "ceres/sparse_matrix.h" +#include "ceres/types.h" namespace ceres { namespace internal { @@ -48,6 +49,7 @@ class Preconditioner : public LinearOperator { struct Options { Options() : type(JACOBI), + visibility_clustering_type(CANONICAL_VIEWS), sparse_linear_algebra_library_type(SUITE_SPARSE), num_threads(1), row_block_size(Eigen::Dynamic), @@ -56,7 +58,7 @@ class Preconditioner : public LinearOperator { } PreconditionerType type; - + VisibilityClusteringType visibility_clustering_type; SparseLinearAlgebraLibraryType sparse_linear_algebra_library_type; // If possible, how many threads the preconditioner can use. @@ -94,6 +96,14 @@ class Preconditioner : public LinearOperator { int f_block_size; }; + // If the optimization problem is such that there are no remaining + // e-blocks, ITERATIVE_SCHUR with a Schur type preconditioner cannot + // be used. This function returns JACOBI if a preconditioner for + // ITERATIVE_SCHUR is used. The input preconditioner_type is + // returned otherwise. + static PreconditionerType PreconditionerForZeroEBlocks( + PreconditionerType preconditioner_type); + virtual ~Preconditioner(); // Update the numerical value of the preconditioner for the linear |