26 #ifndef CASADI_LINSOL_INTERNAL_HPP
27 #define CASADI_LINSOL_INTERNAL_HPP
30 #include "function_internal.hpp"
31 #include "plugin_interface.hpp"
60 void disp(std::ostream& stream,
bool more)
const override;
65 virtual void disp_more(std::ostream& stream)
const {}
68 void init(
const Dict& opts)
override;
78 int init_mem(
void* mem)
const override;
86 virtual void linsol_eval_sx(
const SXElem** arg,
SXElem** res,
87 casadi_int* iw,
SXElem* w,
void* mem,
88 bool tr, casadi_int nrhs)
const;
92 casadi_int factorize(
void* mem,
const double* A)
const;
95 virtual bool needs_sfact(
void* mem,
const double* A)
const;
98 virtual bool needs_nfact(
void* mem,
const double* A)
const;
102 virtual int sfact(
void* mem,
const double* A)
const {
return 0;}
105 virtual int nfact(
void* mem,
const double* A)
const;
108 virtual int solve(
void* mem,
const double* A,
double* x, casadi_int nrhs,
bool tr)
const;
111 virtual double det(
void* mem,
const double* A)
const;
114 virtual casadi_int neig(
void* mem,
const double* A)
const;
117 virtual casadi_int rank(
void* mem,
const double* A)
const;
120 virtual void generate(
CodeGenerator& g,
const std::string& A,
const std::string& x,
121 casadi_int nrhs,
bool tr)
const;
124 virtual void generate_det(
CodeGenerator& g,
const std::string& A,
125 const std::string& d)
const;
143 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
144 static std::mutex mutex_solvers_;
154 casadi_int
nrow()
const {
return sp_.size1();}
155 casadi_int
ncol()
const {
return sp_.size2();}
156 const casadi_int*
colind()
const {
return sp_.colind();}
157 const casadi_int*
row()
const {
return sp_.row();}
158 casadi_int
nnz()
const {
return sp_.nnz();}
Helper class for C code generation.
Helper class for Serialization.
const casadi_int * colind() const
static std::map< std::string, Plugin > solvers_
Collection of solvers.
const casadi_int * row() const
void * alloc_mem() const override
Create memory block.
void free_mem(void *mem) const override
Free memory block.
virtual size_t sz_w_fact() const
virtual int sfact(void *mem, const double *A) const
const char * plugin_name() const override=0
casadi_int nrow() const
Get sparsity pattern.
virtual void disp_more(std::ostream &stream) const
Print more.
static const std::string infix_
Infix.
Sparse matrix class. SX and DM are specializations.
Interface for accessing input and output data structures.
Base class for FunctionInternal and LinsolInternal.
The basic scalar symbolic class of CasADi.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Function memory with temporary work vectors.