@@ -10,6 +10,16 @@ namespace polysolve::nonlinear
1010 const double characteristic_length,
1111 spdlog::logger &logger)
1212 {
13+ // Copies stuff from main newton
14+ json proj_solver_params = R"( {"ProjectedNewton": {}})" _json;
15+ proj_solver_params[" ProjectedNewton" ][" residual_tolerance" ] = solver_params[" Newton" ][" residual_tolerance" ];
16+
17+ json reg_solver_params = R"( {"RegularizedNewton": {}})" _json;
18+ reg_solver_params[" RegularizedNewton" ][" residual_tolerance" ] = solver_params[" Newton" ][" residual_tolerance" ];
19+ reg_solver_params[" RegularizedNewton" ][" reg_weight_min" ] = solver_params[" Newton" ][" reg_weight_min" ];
20+ reg_solver_params[" RegularizedNewton" ][" reg_weight_max" ] = solver_params[" Newton" ][" reg_weight_max" ];
21+ reg_solver_params[" RegularizedNewton" ][" reg_weight_inc" ] = solver_params[" Newton" ][" reg_weight_inc" ];
22+
1323 std::vector<std::shared_ptr<DescentStrategy>> res;
1424 const bool force_psd_projection = solver_params[" Newton" ][" force_psd_projection" ];
1525 if (!force_psd_projection)
@@ -22,14 +32,14 @@ namespace polysolve::nonlinear
2232 if (use_psd_projection)
2333 res.push_back (std::make_unique<ProjectedNewton>(
2434 sparse,
25- solver_params , linear_solver_params,
35+ proj_solver_params , linear_solver_params,
2636 characteristic_length, logger));
2737
2838 const double reg_weight_min = solver_params[" Newton" ][" reg_weight_min" ];
2939 if (reg_weight_min > 0 )
3040 res.push_back (std::make_unique<RegularizedNewton>(
3141 sparse,
32- solver_params , linear_solver_params,
42+ reg_solver_params , linear_solver_params,
3343 characteristic_length, logger));
3444
3545 if (res.empty ())
@@ -65,6 +75,7 @@ namespace polysolve::nonlinear
6575 spdlog::logger &logger)
6676 : Superclass(sparse, solver_params, linear_solver_params, characteristic_length, logger)
6777 {
78+ m_residual_tolerance = solver_params[" ProjectedNewton" ][" residual_tolerance" ];
6879 }
6980
7081 RegularizedNewton::RegularizedNewton (
@@ -75,9 +86,11 @@ namespace polysolve::nonlinear
7586 spdlog::logger &logger)
7687 : Superclass(sparse, solver_params, linear_solver_params, characteristic_length, logger)
7788 {
78- reg_weight_min = solver_params[" Newton" ][" reg_weight_min" ];
79- reg_weight_max = solver_params[" Newton" ][" reg_weight_max" ];
80- reg_weight_inc = solver_params[" Newton" ][" reg_weight_inc" ];
89+
90+ m_residual_tolerance = solver_params[" RegularizedNewton" ][" residual_tolerance" ];
91+ reg_weight_min = solver_params[" RegularizedNewton" ][" reg_weight_min" ];
92+ reg_weight_max = solver_params[" RegularizedNewton" ][" reg_weight_max" ];
93+ reg_weight_inc = solver_params[" RegularizedNewton" ][" reg_weight_inc" ];
8194
8295 reg_weight = reg_weight_min;
8396
0 commit comments