# Julia API Reference

## Solver and main API

Clarabel.SolverType
Solver{T <: AbstractFloat}()

Initializes an empty Clarabel solver that can be filled with problem data using:

setup!(solver, P, q, A, b, cones, [settings]).
Clarabel.setup!Function
setup!(solver, P, q, A, b, cones, [settings])

Populates a Solver with a cost function defined by P and q, and one or more conic constraints defined by A, b and a description of a conic constraint composed of cones whose types and dimensions are specified by cones.

The solver will be configured to solve the following optimization problem:

min   1/2 x'Px + q'x
s.t.  Ax + s = b, s ∈ K

All data matrices must be sparse. The matrix P is assumed to be symmetric and positive semidefinite, and only the upper triangular part is used.

The cone K is a composite cone. To define the cone the user should provide a vector of cone specifications along with the appropriate dimensional information. For example, to generate a cone in the nonnegative orthant followed by a second order cone, use:

cones = [Clarabel.NonnegativeConeT(dim_1),
Clarabel.SecondOrderConeT(dim_2)]

If the argument 'cones' is constructed incrementally, the should should initialize it as an empty array of the supertype for all allowable cones, e.g.

cones = Clarabel.SupportedCone[]
push!(cones,Clarabel.NonnegativeConeT(dim_1))
...

The optional argument settings can be used to pass custom solver settings:

settings = Clarabel.Settings(verbose = true)
setup!(model, P, q, A, b, cones, settings)

To solve the problem, you must make a subsequent call to solve!

## Supported Cone Types

Clarabel.SupportedConeType
SupportedCone

An abstract type use by the Clarabel API used when passing cone specifications to the solver setup!. The currently supported concrete types are:

• ZeroConeT : The zero cone. Used to define equalities.
• NonnegativeConeT: The nonnegative orthant.
• SecondOrderConeT: The second order / Lorentz / ice-cream cone.
• PSDTriangleConeT: The positive semidefinite cone (triangular format).
• ExponentialConeT: The exponential cone (in R^3)
• PowerConeT : The power cone with power α (in R^3)

## Solver Status

Clarabel.SolverStatusType
SolverStatus

An Enum of of possible conditions set by solve!.

If no call has been made to solve!, then the SolverStatus is:

• UNSOLVED: The algorithm has not started.

Otherwise:

• SOLVED : Solver terminated with a solution.
• PRIMAL_INFEASIBLE : Problem is primal infeasible. Solution returned is a certificate of primal infeasibility.
• DUAL_INFEASIBLE : Problem is dual infeasible. Solution returned is a certificate of dual infeasibility.
• ALMOST_SOLVED : Solver terminated with a solution (reduced accuracy).
• ALMOST_PRIMAL_INFEASIBLE : Problem is primal infeasible. Solution returned is a certificate of primal infeasibility (reduced accuracy).
• ALMOST_DUAL_INFEASIBLE : Problem is dual infeasible. Solution returned is a certificate of dual infeasibility (reduced accuracy).
• MAX_ITERATIONS : Iteration limit reached before solution or infeasibility certificate found.
• MAX_TIME : Time limit reached before solution or infeasibility certificate found.
• NUMERICAL_ERROR : Solver terminated with a numerical error.
• INSUFFICIENT_PROGRESS : Solver terminated due to lack of progress.