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 casadi_int neig(
void* mem,
const double* A)
const;
114 virtual casadi_int rank(
void* mem,
const double* A)
const;
117 virtual void generate(
CodeGenerator& g,
const std::string& A,
const std::string& x,
118 casadi_int nrhs,
bool tr)
const;
129 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
130 static std::mutex mutex_solvers_;
140 casadi_int
nrow()
const {
return sp_.size1();}
141 casadi_int
ncol()
const {
return sp_.size2();}
142 const casadi_int*
colind()
const {
return sp_.colind();}
143 const casadi_int*
row()
const {
return sp_.row();}
144 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 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.
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.