26 #ifndef CASADI_ROSENBROCK_HPP
27 #define CASADI_ROSENBROCK_HPP
29 #include "casadi/core/runtime_integrator.hpp"
30 #include <casadi/solvers/casadi_integrator_rosenbrock_export.h>
60 struct RosenbrockMemory :
public RuntimeIntegratorMemory {
69 class Rosenbrock :
public RuntimeIntegrator {
73 Rosenbrock(
const std::string& name,
const Function& dae,
double t0,
74 const std::vector<double>& tout);
77 static Integrator* creator(
const std::string& name,
const Function& dae,
78 double t0,
const std::vector<double>& tout) {
79 return new Rosenbrock(name, dae, t0, tout);
83 ~Rosenbrock()
override;
86 const char* plugin_name()
const override {
return "rosenbrock";}
89 std::string class_name()
const override {
return "Rosenbrock";}
93 static const Options options_;
94 const Options& get_options()
const override {
return options_;}
98 void init(
const Dict& opts)
override;
101 void set_work(
void* mem,
const double**& arg,
double**& res,
102 casadi_int*& iw,
double*& w)
const override;
105 void* alloc_mem()
const override {
return new RosenbrockMemory();}
108 void free_mem(
void *mem)
const override {
delete static_cast<RosenbrockMemory*
>(mem);}
111 static const std::string meta_doc;
114 void serialize_body(SerializingStream &s)
const override;
117 static ProtoFunction* deserialize(DeserializingStream& s) {
return new Rosenbrock(s); }
122 explicit Rosenbrock(DeserializingStream& s);
125 bool needs_jacobian()
const override {
return true;}
128 int kernel(RuntimeIntegratorMemory* m)
const override;
131 void codegen_method(CodeGenerator& g)
const override;
135 void set_iteration_matrix();
138 void set_coefficients();
141 void set_rosenbrock_prob();
144 void codegen_rosenbrock_prob(CodeGenerator& g,
const std::string& pe,
145 const std::string& p)
const;
148 std::vector<double> c_, gamma_sum_;
155 casadi_int init_max_iter_;
159 std::vector<casadi_int> iter_map_;
162 Sparsity sp_iter_v_, sp_iter_r_, sp_alg_v_, sp_alg_r_;
163 std::vector<casadi_int> iter_prinv_, iter_pc_, alg_prinv_, alg_pc_;
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.