25 #ifndef CASADI_CLARABEL_INTERFACE_HPP
26 #define CASADI_CLARABEL_INTERFACE_HPP
28 #include "casadi/core/conic_impl.hpp"
29 #include <casadi/interfaces/clarabel/casadi_conic_clarabel_export.h>
34 #include "clarabel_runtime.hpp"
50 struct ClarabelMemory :
public ConicMemory {
62 class ClarabelInterface :
public Conic {
65 static Conic* creator(
const std::string& name,
66 const std::map<std::string, Sparsity>& st) {
67 return new ClarabelInterface(name, st);
71 explicit ClarabelInterface(
const std::string& name,
72 const std::map<std::string, Sparsity>& st);
75 ~ClarabelInterface()
override;
78 const char* plugin_name()
const override {
return "clarabel"; }
81 std::string class_name()
const override {
return "ClarabelInterface"; }
84 static const Options options_;
85 const Options& get_options()
const override {
return options_; }
87 void set_clarabel_prob();
88 void set_clarabel_prob(CodeGenerator& g)
const;
91 void codegen_body(CodeGenerator& g)
const override;
94 void codegen_init_mem(CodeGenerator& g)
const override;
97 void codegen_free_mem(CodeGenerator& g)
const override;
100 std::string codegen_mem_type()
const override {
return "struct casadi_clarabel_data"; }
103 void init(
const Dict& opts)
override;
106 void init_dependent();
109 void* alloc_mem()
const override {
return new ClarabelMemory(); }
112 int init_mem(
void* mem)
const override;
115 void free_mem(
void* mem)
const override;
118 void set_work(
void* mem,
const double**& arg,
double**& res,
119 casadi_int*& iw,
double*& w)
const override;
122 Dict get_stats(
void* mem)
const override;
125 int solve(
const double** arg,
double** res,
126 casadi_int* iw,
double* w,
void* mem)
const override;
129 static const std::string meta_doc;
134 void serialize_body(SerializingStream &s)
const override;
137 static ProtoFunction* deserialize(DeserializingStream& s) {
return new ClarabelInterface(s); }
140 bool integer_support()
const override {
return false; }
144 explicit ClarabelInterface(DeserializingStream& s);
151 std::vector<int> colindp_, rowp_;
152 std::vector<int> colinda_, rowa_;
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.