26 #ifndef CASADI_FATROP_CONIC_INTERFACE_HPP
27 #define CASADI_FATROP_CONIC_INTERFACE_HPP
29 #include "casadi/core/conic_impl.hpp"
30 #include "casadi/core/linsol.hpp"
31 #include <casadi/interfaces/fatrop/casadi_conic_fatrop_export.h>
61 #include "fatrop_conic_runtime.hpp"
64 #include <fatrop/ocp/OCPAbstract.hpp>
65 #include <fatrop/ocp/StageOCPApplication.hpp>
66 #include <fatrop/ocp/OCPCInterface.h>
74 class FatropConicInterface;
104 const std::map<std::string, Sparsity>& st) {
110 const std::map<std::string, Sparsity>& st);
113 Dict get_stats(
void* mem)
const override;
122 std::string
class_name()
const override {
return "FatropConicInterface";}
130 void set_fatrop_conic_prob();
133 void init(
const Dict& opts)
override;
139 int init_mem(
void* mem)
const override;
145 void set_work(
void* mem,
const double**& arg,
double**& res,
146 casadi_int*& iw,
double*& w)
const override;
148 void set_temp(
void* mem,
const double** arg,
double** res,
149 casadi_int* iw,
double* w)
const override;
152 int solve(
const double** arg,
double** res,
153 casadi_int* iw,
double* w,
void* mem)
const override;
156 static void mproject(
double factor,
const double* x,
const casadi_int* sp_x,
157 double* y,
const casadi_int* sp_y,
double* w);
161 static void dense_transfer(
double factor,
const double* x,
const casadi_int* sp_x,
double* y,
162 const casadi_int* sp_y,
double* w);
174 friend class CasadiStructuredQP;
182 static Sparsity blocksparsity(casadi_int rows, casadi_int cols,
183 const std::vector<casadi_ocp_block>& blocks,
bool eye=
false);
184 static void blockptr(std::vector<double *>& vs, std::vector<double>& v,
185 const std::vector<casadi_ocp_block>& blocks,
bool eye=
false);
186 Sparsity Asp_, Bsp_, Csp_, Dsp_, Isp_, Rsp_, Ssp_, Qsp_, bsp_, lugsp_, usp_, xsp_;
193 std::vector< casadi_ocp_block > R_blocks, S_blocks,
Q_blocks;
194 std::vector< casadi_ocp_block >
b_blocks, lug_blocks;
195 std::vector< casadi_ocp_block >
u_blocks, x_blocks;
198 std::vector< casadi_ocp_block > lam_cu_blocks,
A_blocks, B_blocks,
202 std::vector< casadi_ocp_block >
AB_blocks, CD_blocks, RSQ_blocks;
213 enum structure_detection {
Helper class for Serialization.
'fatrop' plugin for Conic
std::vector< casadi_ocp_block > u_blocks
FatropConicInterface()
Constructor.
static const std::string meta_doc
A documentation string.
void free_mem(void *mem) const override
Free memory block.
static void mproject(double factor, const double *x, const casadi_int *sp_x, double *y, const casadi_int *sp_y, double *w)
Helper function.
const Options & get_options() const override
Options.
std::vector< casadi_ocp_block > lam_cl_blocks
std::vector< casadi_ocp_block > AB_blocks
casadi_fatrop_conic_prob< double > p_
structure_detection structure_detection_
std::vector< casadi_int > AB_offsets_
std::vector< casadi_ocp_block > b_blocks
std::vector< int > zeros_
static const Options options_
Options.
std::vector< casadi_ocp_block > A_blocks
static Conic * creator(const std::string &name, const std::map< std::string, Sparsity > &st)
Create a new QP Solver.
void * alloc_mem() const override
Create memory block.
std::vector< casadi_ocp_block > Q_blocks
std::vector< casadi_ocp_block > lam_ul_blocks
const char * plugin_name() const override
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize with type disambiguation.
std::string class_name() const override
Readable name of the internal class.
static void dense_transfer(double factor, const double *x, const casadi_int *sp_x, double *y, const casadi_int *sp_y, double *w)
std::vector< casadi_ocp_block > C_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_fatrop_conic_data< double > d
Options metadata for a class.