-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathmod.rs
More file actions
70 lines (67 loc) · 3.46 KB
/
mod.rs
File metadata and controls
70 lines (67 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Submodules: csc_matrix.rs, supported_cones_T.rs
mod csc_matrix;
#[allow(non_snake_case)]
mod supported_cones_T;
// Re-export the submodule members
pub use csc_matrix::*;
pub use supported_cones_T::*;
// Uses
use crate::solver::implementations::default::settings::*;
use clarabel::algebra::FloatT;
/// Convert from the C struct to the Rust struct by copying the values
pub fn get_solver_settings_from_c<T: FloatT>(
value: &ClarabelDefaultSettings<T>,
) -> clarabel::solver::implementations::default::DefaultSettings<T> {
clarabel::solver::implementations::default::DefaultSettings::<T> {
max_iter: value.max_iter,
time_limit: value.time_limit,
verbose: value.verbose,
max_step_fraction: value.max_step_fraction,
tol_gap_abs: value.tol_gap_abs,
tol_gap_rel: value.tol_gap_rel,
tol_feas: value.tol_feas,
tol_infeas_abs: value.tol_infeas_abs,
tol_infeas_rel: value.tol_infeas_rel,
tol_ktratio: value.tol_ktratio,
reduced_tol_gap_abs: value.reduced_tol_gap_abs,
reduced_tol_gap_rel: value.reduced_tol_gap_rel,
reduced_tol_feas: value.reduced_tol_feas,
reduced_tol_infeas_abs: value.reduced_tol_infeas_abs,
reduced_tol_infeas_rel: value.reduced_tol_infeas_rel,
reduced_tol_ktratio: value.reduced_tol_ktratio,
equilibrate_enable: value.equilibrate_enable,
equilibrate_max_iter: value.equilibrate_max_iter,
equilibrate_min_scaling: value.equilibrate_min_scaling,
equilibrate_max_scaling: value.equilibrate_max_scaling,
linesearch_backtrack_step: value.linesearch_backtrack_step,
min_switch_step_length: value.min_switch_step_length,
min_terminate_step_length: value.min_terminate_step_length,
max_threads: value.max_threads,
direct_kkt_solver: value.direct_kkt_solver,
direct_solve_method: (&value.direct_solve_method).into(),
static_regularization_enable: value.static_regularization_enable,
static_regularization_constant: value.static_regularization_constant,
static_regularization_proportional: value.static_regularization_proportional,
dynamic_regularization_enable: value.dynamic_regularization_enable,
dynamic_regularization_eps: value.dynamic_regularization_eps,
dynamic_regularization_delta: value.dynamic_regularization_delta,
iterative_refinement_enable: value.iterative_refinement_enable,
iterative_refinement_reltol: value.iterative_refinement_reltol,
iterative_refinement_abstol: value.iterative_refinement_abstol,
iterative_refinement_max_iter: value.iterative_refinement_max_iter,
iterative_refinement_stop_ratio: value.iterative_refinement_stop_ratio,
presolve_enable: value.presolve_enable,
#[cfg(feature = "sdp")]
chordal_decomposition_enable: value.chordal_decomposition_enable,
#[cfg(feature = "sdp")]
chordal_decomposition_merge_method: match value.chordal_decomposition_merge_method {
ClarabelCliqueMergeMethods::CLIQUE_GRAPH => String::from("clique_graph"),
ClarabelCliqueMergeMethods::PARENT_CHILD => String::from("parent_child"),
ClarabelCliqueMergeMethods::NONE => String::from("none"),
},
#[cfg(feature = "sdp")]
chordal_decomposition_compact: value.chordal_decomposition_compact,
#[cfg(feature = "sdp")]
chordal_decomposition_complete_dual: value.chordal_decomposition_complete_dual,
}
}