26 #ifndef CASADI_HPIPM_INTERFACE_HPP
27 #define CASADI_HPIPM_INTERFACE_HPP
29 #include "casadi/core/conic_impl.hpp"
30 #include "casadi/core/linsol.hpp"
31 #include <casadi/interfaces/hpipm/casadi_conic_hpipm_export.h>
59 #include <blasfeo_d_aux_ext_dep.h>
61 #include <hpipm_d_ocp_qp_ipm.h>
62 #include <hpipm_d_ocp_qp_dim.h>
63 #include <hpipm_d_ocp_qp.h>
64 #include <hpipm_d_ocp_qp_sol.h>
65 #include <hpipm_d_ocp_qp_utils.h>
69 #include "hpipm_runtime.hpp"
107 const std::map<std::string, Sparsity>& st) {
113 const std::map<std::string, Sparsity>& st);
116 Dict get_stats(
void* mem)
const override;
125 std::string
class_name()
const override {
return "HpipmInterface";}
133 void set_hpipm_prob();
140 void init(
const Dict& opts)
override;
146 int init_mem(
void* mem)
const override;
152 void set_work(
void* mem,
const double**& arg,
double**& res,
153 casadi_int*& iw,
double*& w)
const override;
156 int solve(
const double** arg,
double** res,
157 casadi_int* iw,
double* w,
void* mem)
const override;
160 static void mproject(
double factor,
const double* x,
const casadi_int* sp_x,
161 double* y,
const casadi_int* sp_y,
double* w);
165 static void dense_transfer(
double factor,
const double* x,
const casadi_int* sp_x,
double* y,
166 const casadi_int* sp_y,
double* w);
182 static Sparsity blocksparsity(casadi_int rows, casadi_int cols,
183 const std::vector<casadi_hpipm_block>& blocks,
bool eye=
false);
184 static void blockptr(std::vector<double *>& vs, std::vector<double>& v,
185 const std::vector<casadi_hpipm_block>& blocks,
bool eye=
false);
186 Sparsity Asp_, Bsp_, Csp_, Dsp_, Isp_, Rsp_, Ssp_, Qsp_, bsp_, lugsp_, usp_, xsp_;
191 std::vector< casadi_hpipm_block > R_blocks, S_blocks,
Q_blocks;
192 std::vector< casadi_hpipm_block >
b_blocks, lug_blocks;
193 std::vector< casadi_hpipm_block >
u_blocks, x_blocks;
196 std::vector< casadi_hpipm_block > lam_cu_blocks,
A_blocks, B_blocks,
Helper class for C code generation.
Helper class for Serialization.
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize with type disambiguation.
HpipmInterface()
Constructor.
std::vector< casadi_hpipm_block > lam_cl_blocks
void * alloc_mem() const override
Create memory block.
std::vector< casadi_hpipm_block > C_blocks
static void mproject(double factor, const double *x, const casadi_int *sp_x, double *y, const casadi_int *sp_y, double *w)
Helper function.
std::string class_name() const override
Readable name of the internal class.
static const std::string meta_doc
A documentation string.
void free_mem(void *mem) const override
Free memory block.
const char * plugin_name() const override
std::vector< casadi_hpipm_block > u_blocks
std::vector< casadi_hpipm_block > Q_blocks
std::vector< casadi_hpipm_block > lam_ul_blocks
static const Options options_
Options.
casadi_hpipm_prob< double > p_
static void dense_transfer(double factor, const double *x, const casadi_int *sp_x, double *y, const casadi_int *sp_y, double *w)
static Conic * creator(const std::string &name, const std::map< std::string, Sparsity > &st)
Create a new QP Solver.
const Options & get_options() const override
Options.
std::vector< casadi_hpipm_block > b_blocks
std::vector< int > zeros_
d_ocp_qp_ipm_arg hpipm_options_
std::vector< casadi_hpipm_block > A_blocks
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
casadi_hpipm_data< double > d
Options metadata for a class.