diff --git a/nonlinear/NonlinearOptimization-inl.h b/nonlinear/NonlinearOptimization-inl.h index 7c0c827f9..660dfdbc3 100644 --- a/nonlinear/NonlinearOptimization-inl.h +++ b/nonlinear/NonlinearOptimization-inl.h @@ -55,6 +55,14 @@ namespace gtsam { throw runtime_error("optimizeMultiFrontal: not implemented"); } + /** + * The multifrontal solver + */ + template + T optimizeSPCG(const G& graph, const T& initialEstimate, const NonlinearOptimizationParameters& parameters) { + throw runtime_error("optimizeSPCG: not implemented"); + } + /** * optimization that returns the values */ @@ -66,7 +74,10 @@ namespace gtsam { return optimizeElimination(graph, initialEstimate, parameters); case MULTIFRONTAL: return optimizeMultiFrontal(graph, initialEstimate, parameters); + case SPCG: + return optimizeSPCG(graph, initialEstimate, parameters) ; } + throw runtime_error("optimizeSPCG: undefined solver"); } } //namespace gtsam diff --git a/nonlinear/NonlinearOptimization.h b/nonlinear/NonlinearOptimization.h index 220f14d24..f0cd9ae39 100644 --- a/nonlinear/NonlinearOptimization.h +++ b/nonlinear/NonlinearOptimization.h @@ -36,7 +36,8 @@ namespace gtsam { */ enum LinearSolver{ ELIMINATION, // Elimination - MULTIFRONTAL // Multi-frontal + MULTIFRONTAL, // Multi-frontal + SPCG, // Subgraph Preconditioned Conjugate Gradient };