26 #ifndef CASADI_LINSOL_LDL_HPP
27 #define CASADI_LINSOL_LDL_HPP
39 #include "casadi/core/linsol_internal.hpp"
40 #include <casadi/solvers/casadi_linsol_ldl_export.h>
43 struct LinsolLdlMemory :
public LinsolMemory {
44 std::vector<double> l, d, w;
51 class LinsolLdl :
public LinsolInternal {
55 LinsolLdl(
const std::string& name,
const Sparsity& sp);
58 static LinsolInternal* creator(
const std::string& name,
const Sparsity& sp) {
59 return new LinsolLdl(name, sp);
63 ~LinsolLdl()
override;
67 static const Options options_;
68 const Options& get_options()
const override {
return options_;}
72 void init(
const Dict& opts)
override;
75 void* alloc_mem()
const override {
return new LinsolLdlMemory();}
78 int init_mem(
void* mem)
const override;
81 void free_mem(
void *mem)
const override {
delete static_cast<LinsolLdlMemory*
>(mem);}
84 int sfact(
void* mem,
const double* A)
const override;
87 int nfact(
void* mem,
const double* A)
const override;
90 int solve(
void* mem,
const double* A,
double* x, casadi_int nrhs,
bool tr)
const override;
93 void generate(CodeGenerator& g,
const std::string& A,
const std::string& x,
94 casadi_int nrhs,
bool tr)
const override;
97 casadi_int neig(
void* mem,
const double* A)
const override;
100 casadi_int rank(
void* mem,
const double* A)
const override;
103 static const std::string meta_doc;
106 const char* plugin_name()
const override {
return "ldl";}
109 std::string class_name()
const override {
return "LinsolLdl";}
112 std::vector<casadi_int> p_;
117 bool incomplete_, amd_;
121 void serialize_body(SerializingStream &s)
const override;
124 static ProtoFunction* deserialize(DeserializingStream& s) {
return new LinsolLdl(s); }
128 explicit LinsolLdl(DeserializingStream& s);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.