26 #ifndef CASADI_DAE_BUILDER_HPP
27 #define CASADI_DAE_BUILDER_HPP
29 #include "function.hpp"
34 class DaeBuilderInternal;
70 public SWIG_IF_ELSE(PrintableCommon, Printable<DaeBuilder>) {
74 std::string
type_name()
const {
return "DaeBuilder";}
80 explicit DaeBuilder(
const std::string& name,
const std::string&
path =
"",
86 const std::string& name()
const;
93 const MX& time()
const;
98 std::vector<std::string>
t_new()
const {
return all(
"t");}
103 std::vector<std::string>
x()
const {
return all(
"x");}
108 std::vector<std::string>
y()
const {
return all(
"y");}
113 std::vector<std::string>
z()
const {
return all(
"z");}
118 std::vector<std::string>
q()
const {
return all(
"q");}
123 std::vector<MX> inputs(
const std::string& cat)
const;
128 std::vector<MX> outputs(
const std::string& cat)
const;
130 #ifdef WITH_DEPRECATED_FEATURES
132 std::vector<MX>
ode()
const {
return outputs(
"ode");}
135 std::vector<MX>
alg()
const {
return outputs(
"alg");}
138 std::vector<MX>
quad()
const {
return outputs(
"quad");}
141 std::vector<MX>
zero()
const {
return outputs(
"zero");}
144 std::vector<MX>
ydef()
const {
return outputs(
"y");}
147 void set_y(
const std::vector<std::string>& name) {set_all(
"y", name);}
153 std::vector<std::string>
u()
const {
return all(
"u");}
158 std::vector<std::string>
p()
const {
return all(
"p");}
163 std::vector<std::string>
c()
const {
return all(
"c");}
168 std::vector<MX> cdef()
const;
173 std::vector<std::string>
d()
const {
return all(
"d");}
180 std::vector<MX> ddef()
const;
185 std::vector<std::string>
w()
const {
return all(
"w");}
192 std::vector<MX> wdef()
const;
197 std::vector<MX> init_lhs()
const;
202 std::vector<MX> init_rhs()
const;
204 #ifdef WITH_DEPRECATED_FEATURES
206 std::vector<std::string>
outputs()
const {
return y();}
215 std::vector<std::string> initial_unknowns()
const;
228 casadi_int nx()
const;
233 casadi_int nz()
const;
238 casadi_int nq()
const;
243 casadi_int nzero()
const;
248 casadi_int ny()
const;
253 casadi_int nu()
const;
258 casadi_int np()
const;
263 casadi_int nc()
const;
268 casadi_int nd()
const;
273 casadi_int nw()
const;
282 MX add(
const std::string& name,
283 const std::string& causality,
284 const std::string& variability,
288 MX add(
const std::string& name,
289 const std::string& causality,
293 MX add(
const std::string& name,
297 void add(
const std::string& name,
298 const std::string& causality,
299 const std::string& variability,
304 void eq(
const MX& lhs,
const MX& rhs,
const Dict& opts=
Dict());
307 void when(
const MX& cond,
const std::vector<std::string>& eqs,
const Dict& opts=
Dict());
310 std::string assign(
const std::string& name,
const MX& val);
313 std::string reinit(
const std::string& name,
const MX& val);
316 void set_init(
const std::string& name,
const MX& init_rhs);
319 void sanity_check()
const;
323 void reorder(
const std::string& cat,
const std::vector<std::string>& v);
326 void set_all(
const std::string& v,
const std::vector<std::string>& name);
335 void eliminate(
const std::string& cat);
338 void sort(
const std::string& cat);
341 void lift(
bool lift_shared =
true,
bool lift_calls =
true);
344 void prune(
bool prune_p =
true,
bool prune_u =
true);
356 Function add_fun(
const std::string& name,
357 const std::vector<std::string>& arg,
358 const std::vector<std::string>& res,
const Dict& opts=
Dict());
368 bool has_fun(
const std::string& name)
const;
371 Function fun(
const std::string& name)
const;
374 std::vector<Function> fun()
const;
377 void gather_fun(casadi_int max_depth = -1);
387 bool provides_directional_derivatives()
const;
393 void load_fmi_description(
const std::string&
filename);
413 std::string pack_fmu(
const Dict& files,
const Dict& opts=
Dict());
416 void add_lc(
const std::string& name,
const std::vector<std::string>& f_out);
419 Function create(
const std::string& fname,
420 const std::vector<std::string>& name_in,
421 const std::vector<std::string>& name_out,
bool sx,
bool lifted_calls =
false)
const;
431 Function create(
const std::string& name,
432 const std::vector<std::string>& name_in,
433 const std::vector<std::string>& name_out,
451 Function dependent_fun(
const std::string& fname,
452 const std::vector<std::string>& s_in,
453 const std::vector<std::string>& s_out)
const;
456 Function transition(
const std::string& fname, casadi_int index)
const;
459 Function transition(
const std::string& fname)
const;
466 MX var(
const std::string& name)
const;
473 std::vector<std::string> der()
const;
476 std::vector<std::string> der(
const std::vector<std::string>& name)
const;
480 MX der(
const MX& v)
const;
485 std::vector<std::string> pre(
const std::vector<std::string>& name)
const;
488 MX pre(
const MX& v)
const;
491 bool has_beq(
const std::string& name)
const;
494 MX beq(
const std::string& name)
const;
498 casadi_int value_reference(
const std::string& name)
const;
499 void set_value_reference(
const std::string& name, casadi_int val);
504 std::string
description(
const std::string& name)
const;
505 void set_description(
const std::string& name,
const std::string& val);
510 std::string type(
const std::string& name, casadi_int fmi_version = 3)
const;
511 void set_type(
const std::string& name,
const std::string& val);
515 std::string causality(
const std::string& name)
const;
518 std::vector<std::string> categories(
const std::string& name)
const;
533 void set_causality(
const std::string& name,
const std::string& val);
536 std::string variability(
const std::string& name)
const;
548 void set_variability(
const std::string& name,
const std::string& val);
551 std::string category(
const std::string& name)
const;
563 void set_category(
const std::string& name,
const std::string& val);
567 std::string initial(
const std::string& name)
const;
568 void set_initial(
const std::string& name,
const std::string& val);
573 std::string unit(
const std::string& name)
const;
574 void set_unit(
const std::string& name,
const std::string& val);
579 std::string display_unit(
const std::string& name)
const;
580 void set_display_unit(
const std::string& name,
const std::string& val);
584 casadi_int numel(
const std::string& name)
const;
587 std::vector<casadi_int> dimension(
const std::string& name)
const;
590 double start_time()
const;
593 void set_start_time(
double val);
596 double stop_time()
const;
599 void set_stop_time(
double val);
602 double tolerance()
const;
605 void set_tolerance(
double val);
608 double step_size()
const;
611 void set_step_size(
double val);
615 #if !(defined(SWIG) && defined(SWIGMATLAB))
617 std::string der(
const std::string& name)
const;
620 std::string pre(
const std::string& name)
const;
623 double attribute(
const std::string& a,
const std::string& name)
const;
626 void set_attribute(
const std::string& a,
const std::string& name,
double val);
629 double min(
const std::string& name)
const;
632 void set_min(
const std::string& name,
double val);
635 double max(
const std::string& name)
const;
638 void set_max(
const std::string& name,
double val);
641 double nominal(
const std::string& name)
const;
644 void set_nominal(
const std::string& name,
double val);
647 std::vector<double> start(
const std::string& name)
const;
650 void set_start(
const std::string& name,
double val);
653 void set_start(
const std::string& name,
const std::vector<double>& val);
659 void set(
const std::string& name,
double val);
662 void set(
const std::string& name,
const std::string& val);
668 bool symbolic()
const;
673 std::vector<double> attribute(
const std::string& a,
const std::vector<std::string>& name)
const;
676 void set_attribute(
const std::string& a,
const std::vector<std::string>& name,
677 const std::vector<double>& val);
680 std::vector<double> min(
const std::vector<std::string>& name)
const;
683 void set_min(
const std::vector<std::string>& name,
const std::vector<double>& val);
686 std::vector<double> max(
const std::vector<std::string>& name)
const;
689 void set_max(
const std::vector<std::string>& name,
const std::vector<double>& val);
692 std::vector<double> nominal(
const std::vector<std::string>& name)
const;
695 void set_nominal(
const std::vector<std::string>& name,
const std::vector<double>& val);
698 std::vector<double> start(
const std::vector<std::string>& name)
const;
701 void set_start(
const std::vector<std::string>& name,
const std::vector<double>& val);
704 void set(
const std::vector<std::string>& name,
const std::vector<double>& val);
707 void set(
const std::vector<std::string>& name,
const std::vector<std::string>& val);
710 std::vector<GenericType> get(
const std::vector<std::string>& name)
const;
713 bool has(
const std::string& name)
const;
716 std::vector<std::string>
all()
const;
719 std::vector<std::string>
all(
const std::string& cat)
const;
722 Function oracle(
bool sx =
false,
bool elim_w =
false,
bool lifted_calls =
false)
const;
727 Sparsity jac_sparsity(
const std::vector<std::string>& onames,
728 const std::vector<std::string>& inames)
const;
A symbolic representation of a differential-algebraic equations model.
std::vector< std::string > q() const
Quadrature states.
std::vector< std::string > c() const
Named constants.
void parse_fmi(const std::string &filename)
Function transition() const
Construct an event transition function, default naming.
std::string type_name() const
Readable name of the class.
std::vector< std::string > derivatives() const
[DEPRECATED] Renamed "der"
bool provides_directional_derivative() const
Does the FMU provide support for analytic derivatives (FMI 2 naming)
Function create() const
Create a function with standard integrator DAE signature, default naming.
MX operator()(const std::string &name) const
std::vector< MX > alg() const
[DEPRECATED] Replaced with outputs("alg")
void set_y(const std::vector< std::string > &name)
[DEPRECATED] Replaced with set_all("y", name)
std::vector< std::string > x() const
Differential states.
std::vector< std::string > y() const
Outputs.
std::vector< std::string > z() const
Algebraic variables.
std::vector< MX > ode() const
[DEPRECATED] Replaced with outputs("ode")
std::vector< std::string > t_new() const
Independent variable (usually time)
std::vector< MX > ydef() const
[DEPRECATED] Replaced with outputs("y")
std::vector< std::string > p() const
Parameters.
std::vector< std::string > d() const
Dependent parameters.
std::vector< MX > zero() const
[DEPRECATED] Replaced with outputs("zero")
std::vector< std::string > outputs() const
[DEPRECATED] Renamed "y"
std::vector< std::string > w() const
Dependent variables.
std::vector< std::string > u() const
Free controls.
std::vector< MX > quad() const
[DEPRECATED] Replaced with outputs("quad")
Generic data type, can hold different types such as bool, casadi_int, std::string etc.
GenericShared implements a reference counting framework similar for efficient and.
std::string description(Category v)
void sort(const std::vector< T > &values, std::vector< T > &sorted_values, std::vector< casadi_int > &indices, bool invert_indices=false)
Sort the data in a vector.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
bool all(const std::vector< bool > &v)
Check if all arguments are true.
std::vector< casadi_int > path(const std::vector< casadi_int > &map, casadi_int i_start)
std::string filename(const std::string &path)