24        #ifdef QPALM_USE_LADEL  
   28        d.diag_elem = 1.0/work->
gamma;
 
 
  124    for (
size_t i = 0; i < work->
data->
m; i++) {
 
 
  137    for (
size_t i = 0; i < work->
data->
m; i++) {
 
 
#define RELATIVE_REFINEMENT_TOLERANCE
relative tolerance on the residual for linear systems solving
 
#define FACTORIZE_SCHUR
factorize the Schur complement
 
#define FACTORIZE_KKT
factorize the kkt system
 
#define ABSOLUTE_REFINEMENT_TOLERANCE
absolute tolerance on the residual for linear systems solving
 
ladel_int c_int
type for integer numbers
 
ladel_double c_float
type for floating point numbers
 
#define c_max(a, b)
maximum of two values
 
#define c_min(a, b)
minimum of two values
 
void vec_add_scaled(const c_float *a, const c_float *b, c_float *c, c_float sc, size_t n)
Scaled addition of one vector to another vector, .
 
void vec_mult_add_scaled(c_float *a, const c_float *b, c_float sc1, c_float sc2, size_t n)
Scaled addition of one vector to another vector, both being scaled, .
 
void vec_self_mult_scalar(c_float *a, c_float sc, size_t n)
Mulitply vector with a constant scale factor.
 
void prea_vec_copy(const c_float *a, c_float *b, size_t n)
Copy vector a into preallocated vector b.
 
c_float vec_norm_inf(const c_float *a, size_t n)
Infinity norm of a vector, .
 
void prea_int_vec_copy(const c_int *a, c_int *b, size_t n)
Copy integer vector a into preallocated vector b.
 
Linear algebra with vectors.
 
void set_entering_leaving_constraints(QPALMWorkspace *work)
Determines the entering and leaving constraints and stores them in work->solver->enter and work->solv...
 
void set_active_constraints(QPALMWorkspace *work)
Computes the set of active constraints and stores it in work->solver->active_constraints.
 
void newton_set_direction(QPALMWorkspace *work, solver_common *c)
Sets work->d to the direction calculated by the semismooth Newton method.
 
Functions to calculate the semismooth Newton direction.
 
void ldlsolveLD_neg_dphi(QPALMWorkspace *work, solver_common *c)
Solve the linear system .
 
void kkt_update_leaving_constraints(QPALMWorkspace *work, solver_common *c)
Perform a factorization update for the leaving constraints.
 
void qpalm_form_kkt(QPALMWorkspace *work)
Form the KKT system  .
 
void mat_vec(solver_sparse *A, solver_dense *x, solver_dense *y, solver_common *c)
Matrix-vector multiplication.
 
void ldldowndate_leaving_constraints(QPALMWorkspace *work, solver_common *c)
Downdate the  factorization given a set of leaving constraints.
 
void kkt_update_entering_constraints(QPALMWorkspace *work, solver_common *c)
Perform a factorization update for the entering constraints.
 
void ldlcholQAtsigmaA(QPALMWorkspace *work, solver_common *c)
Calculate  factorization of , with  and  the set of active constraints.
 
void ldlchol(solver_sparse *M, QPALMWorkspace *work, solver_common *c)
Calculate  factorization of a matrix .
 
void kkt_solve(QPALMWorkspace *work, solver_common *c)
Solve the KKT system  .
 
void qpalm_reform_kkt(QPALMWorkspace *work)
Reform the KKT system (i.e.
 
void ldlupdate_entering_constraints(QPALMWorkspace *work, solver_common *c)
Update the  factorization given a set of entering constraints.
 
size_t m
number of constraints m
 
c_float * bmin
dense array for lower bounds (size m)
 
size_t n
number of variables n
 
c_float * bmax
dense array for upper bounds (size m)
 
solver_sparse * Q
sparse quadratic part of the cost Q (size n x n)
 
c_int proximal
boolean, use proximal method of multipliers or not
 
c_int max_rank_update
maximum rank for the sparse factorization update
 
c_float max_rank_update_fraction
maximum rank (relative to n+m) for the factorization update
 
c_int ordering
ordering method for factorization
 
c_int * active_constraints
index set of active constraints
 
c_int reset_newton
boolean, after sigma is updated perform a new factorization
 
c_int * leave
index set of leaving constraints
 
solver_dense * rhs_kkt
[-dphi; zeros(m,1)]
 
solver_factor * LD
LD factor (part of LDL' factorization)
 
c_int factorization_method
factorize KKT or Schur complement
 
c_int * enter
index set of entering constraints
 
c_int * active_constraints_old
index set of active constraints in the previous iteration
 
c_int first_factorization
boolean, indicate we have not factorized previously
 
solver_dense * sol_kkt
sol_kkt = kkt \ rhs_kkt
 
c_int nb_leave
number of leaving constraints
 
c_int nb_active_constraints
number of active constraints
 
solver_symbolics * sym
symbolics for kkt (only used in LADEL)
 
solver_sparse * kkt_full
KKT matrix if all constraints would be active.
 
solver_sparse * kkt
KKT matrix.
 
c_int nb_enter
number of entering constraints
 
c_float * temp_m
placeholder for vector of size m
 
c_float * Axys
Ax + y./sigma.
 
QPALMSettings * settings
problem settings
 
c_float gamma
proximal penalty factor
 
c_float * dphi
gradient of the Lagrangian
 
QPALMSolver * solver
linsys variables
 
QPALMData * data
problem data to work on (possibly scaled)
 
c_float * temp_n
placeholder for vector of size n
 
c_float * d
primal update step