26 #include "expm_impl.hpp"
27 #include "sparsity_interface.hpp"
40 std::string
doc_expm(
const std::string& name) {
89 "Assume A is constant. Default: false."}}
100 for (
auto&& op : opts) {
101 if (op.first==
"const_A") {
109 const std::vector<std::string>& inames,
110 const std::vector<std::string>& onames,
111 const Dict& opts)
const {
118 MX Ydot = mtimes(A,
Y)*tdot;
124 MX R = expm(extended*t);
131 return ret.
map(name,
"serial", nfwd,
132 std::vector<casadi_int>{0, 1, 2}, std::vector<casadi_int>{});
137 const std::vector<std::string>& inames,
138 const std::vector<std::string>& onames,
139 const Dict& opts)
const {
145 MX tbar = sum2(sum1(Ybar*mtimes(A,
Y)));
154 MX R = expm(extended*t);
161 return ret.
map(name,
"serial", nadj,
162 std::vector<casadi_int>{0, 1, 2}, std::vector<casadi_int>{});
178 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
179 std::mutex Expm::mutex_solvers_;
Sparsity get_sparsity_out(casadi_int i) override
Sparsities of function inputs and outputs.
Function get_forward(casadi_int nfwd, const std::string &name, const std::vector< std::string > &inames, const std::vector< std::string > &onames, const Dict &opts) const override
Generate a function that calculates nfwd forward derivatives.
void init(const Dict &opts) override
Initialize.
static const std::string infix_
Infix.
Sparsity get_jac_sparsity(casadi_int oind, casadi_int iind, bool symmetric) const override
Generate the sparsity of a Jacobian block.
Expm(const std::string &name, const Sparsity &A)
Sparsity get_sparsity_in(casadi_int i) override
Sparsities of function inputs and outputs.
static const Options options_
Options.
static std::map< std::string, Plugin > solvers_
Collection of solvers.
Function get_reverse(casadi_int nadj, const std::string &name, const std::vector< std::string > &inames, const std::vector< std::string > &onames, const Dict &opts) const override
Generate a function that calculates nadj adjoint derivatives.
Internal class for Function.
void init(const Dict &opts) override
Initialize.
casadi_int nnz_in() const
Number of input/output nonzeros.
static const Options options_
Options.
virtual Sparsity get_jac_sparsity(casadi_int oind, casadi_int iind, bool symmetric) const
Get Jacobian sparsity.
casadi_int nnz_out() const
Number of input/output nonzeros.
static Function create(FunctionInternal *node)
Create from node.
Function map(casadi_int n, const std::string ¶llelization="serial") const
Create a mapped version of this function.
static MX sym(const std::string &name, casadi_int nrow=1, casadi_int ncol=1)
Create an nrow-by-ncol symbolic primitive.
static MatType zeros(casadi_int nrow=1, casadi_int ncol=1)
Create a dense matrix or a matrix with specified sparsity with all entries zero.
static MX blockcat(const std::vector< std::vector< MX > > &v)
MX T() const
Transpose the matrix.
static bool has_plugin(const std::string &pname, bool verbose=false)
Check if a plugin is available or can be loaded.
static Expm * instantiate(const std::string &fname, const std::string &pname, Problem problem)
static Plugin & getPlugin(const std::string &pname)
Load and get the creator function.
static Plugin load_plugin(const std::string &pname, bool register_plugin=true, bool needs_lock=true)
Load a plugin dynamically.
Class representing a Slice.
casadi_int size1() const
Get the number of rows.
static Sparsity dense(casadi_int nrow, casadi_int ncol=1)
Create a dense rectangular sparsity pattern *.
std::pair< casadi_int, casadi_int > size() const
Get the shape.
bool is_square() const
Is square?
Function expmsol(const std::string &name, const std::string &solver, const Sparsity &A, const Dict &opts)
bool has_expm(const std::string &name)
Check if a particular plugin is available.
void load_expm(const std::string &name)
Explicitly load a plugin dynamically.
casadi_int expm_n_out()
Get the number of expm solver outputs.
casadi_int expm_n_in()
Get the number of expm solver inputs.
std::string doc_expm(const std::string &name)
Get the documentation string for a plugin.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Options metadata for a class.