26 #ifndef CASADI_DAE_BUILDER_HPP
27 #define CASADI_DAE_BUILDER_HPP
29 #include "function.hpp"
34 class DaeBuilderInternal;
147 public SWIG_IF_ELSE(PrintableCommon, Printable<DaeBuilder>) {
243 explicit DaeBuilder(
const std::string& name,
const std::string&
path =
"",
279 const std::string& name()
const;
350 const MX& time()
const;
360 std::vector<std::string>
t_new()
const {
return all(
"t");}
412 std::vector<std::string>
x()
const {
return all(
"x");}
486 std::vector<std::string>
y()
const {
return all(
"y");}
497 std::vector<std::string>
z()
const {
return all(
"z");}
555 std::vector<std::string>
q()
const {
return all(
"q");}
621 std::vector<MX> inputs(
const std::string& cat)
const;
688 std::vector<MX> outputs(
const std::string& cat)
const;
690 #ifdef WITH_DEPRECATED_FEATURES
692 std::vector<MX>
ode()
const {
return outputs(
"ode");}
695 std::vector<MX>
alg()
const {
return outputs(
"alg");}
698 std::vector<MX>
quad()
const {
return outputs(
"quad");}
701 std::vector<MX>
zero()
const {
return outputs(
"zero");}
704 std::vector<MX>
ydef()
const {
return outputs(
"y");}
707 void set_y(
const std::vector<std::string>& name) {set_all(
"y", name);}
718 std::vector<std::string>
u()
const {
return all(
"u");}
761 std::vector<std::string>
p()
const {
return all(
"p");}
772 std::vector<std::string>
c()
const {
return all(
"c");}
783 std::vector<MX> cdef()
const;
795 std::vector<std::string>
d()
const {
return all(
"d");}
806 std::vector<MX> ddef()
const;
863 std::vector<std::string>
w()
const {
return all(
"w");}
874 std::vector<MX> wdef()
const;
917 std::vector<MX> init_lhs()
const;
926 std::vector<MX> init_rhs()
const;
928 #ifdef WITH_DEPRECATED_FEATURES
930 std::vector<std::string>
outputs()
const {
return y();}
944 std::vector<std::string> initial_unknowns()
const;
997 casadi_int nx()
const;
1006 casadi_int nz()
const;
1015 casadi_int nq()
const;
1025 casadi_int nzero()
const;
1034 casadi_int ny()
const;
1043 casadi_int nu()
const;
1052 casadi_int np()
const;
1061 casadi_int nc()
const;
1070 casadi_int nd()
const;
1079 casadi_int nw()
const;
1218 MX add(
const std::string& name,
1219 const std::string& causality,
1220 const std::string& variability,
1230 MX add(
const std::string& name,
1231 const std::string& causality,
1240 MX add(
const std::string& name,
1250 void add(
const std::string& name,
1251 const std::string& causality,
1252 const std::string& variability,
1400 void eq(
const MX& lhs,
const MX& rhs,
const Dict& opts=
Dict());
1483 void when(
const MX& cond,
const std::vector<std::string>& eqs,
const Dict& opts=
Dict());
1573 std::string assign(
const std::string& name,
const MX& val);
1633 std::string reinit(
const std::string& name,
const MX& val);
1697 void set_init(
const std::string& name,
const MX& init_rhs);
1726 void sanity_check()
const;
1803 void reorder(
const std::string& cat,
const std::vector<std::string>& v);
1899 void set_all(
const std::string& v,
const std::vector<std::string>& name);
1975 void eliminate(
const std::string& cat);
2045 void sort(
const std::string& cat);
2143 void lift(
bool lift_shared =
true,
bool lift_calls =
true);
2156 void prune(
bool prune_p =
true,
bool prune_u =
true);
2246 Function add_fun(
const std::string& name,
2247 const std::vector<std::string>& arg,
2248 const std::vector<std::string>& res,
const Dict& opts=
Dict());
2309 bool has_fun(
const std::string& name)
const;
2360 Function fun(
const std::string& name)
const;
2363 std::vector<Function> fun()
const;
2420 void gather_fun(casadi_int max_depth = -1);
2437 bool provides_directional_derivatives()
const;
2458 void load_fmi_description(
const std::string&
filename);
2509 std::string pack_fmu(
const Dict& files,
const Dict& opts=
Dict());
2571 void add_lc(
const std::string& name,
const std::vector<std::string>& f_out);
2580 Function create(
const std::string& fname,
2581 const std::vector<std::string>& name_in,
2582 const std::vector<std::string>& name_out,
bool sx,
bool lifted_calls =
false)
const;
2717 Function create(
const std::string& name,
2718 const std::vector<std::string>& name_in,
2719 const std::vector<std::string>& name_out,
2865 Function dependent_fun(
const std::string& fname,
2866 const std::vector<std::string>& s_in,
2867 const std::vector<std::string>& s_out)
const;
2940 Function transition(
const std::string& fname, casadi_int index)
const;
2995 Function transition(
const std::string& fname)
const;
3061 MX var(
const std::string& name)
const;
3114 std::vector<std::string> der()
const;
3173 std::vector<std::string> der(
const std::vector<std::string>& name)
const;
3277 MX der(
const MX& v)
const;
3278 MX der(
const MX& v);
3288 std::vector<std::string> pre(
const std::vector<std::string>& name)
const;
3299 MX pre(
const MX& v)
const;
3310 bool has_beq(
const std::string& name)
const;
3353 MX beq(
const std::string& name)
const;
3400 casadi_int value_reference(
const std::string& name)
const;
3401 void set_value_reference(
const std::string& name, casadi_int val);
3446 std::string
description(
const std::string& name)
const;
3447 void set_description(
const std::string& name,
const std::string& val);
3512 std::string type(
const std::string& name, casadi_int fmi_version = 3)
const;
3513 void set_type(
const std::string& name,
const std::string& val);
3557 std::string causality(
const std::string& name)
const;
3609 std::vector<std::string> categories(
const std::string& name)
const;
3679 void set_causality(
const std::string& name,
const std::string& val);
3688 std::string variability(
const std::string& name)
const;
3771 void set_variability(
const std::string& name,
const std::string& val);
3781 std::string category(
const std::string& name)
const;
3874 void set_category(
const std::string& name,
const std::string& val);
3926 std::string initial(
const std::string& name)
const;
3927 void set_initial(
const std::string& name,
const std::string& val);
3972 std::string unit(
const std::string& name)
const;
3973 void set_unit(
const std::string& name,
const std::string& val);
3983 std::string display_unit(
const std::string& name)
const;
3984 void set_display_unit(
const std::string& name,
const std::string& val);
4027 casadi_int numel(
const std::string& name)
const;
4037 std::vector<casadi_int> dimension(
const std::string& name)
const;
4087 double start_time()
const;
4090 void set_start_time(
double val);
4093 double stop_time()
const;
4096 void set_stop_time(
double val);
4099 double tolerance()
const;
4102 void set_tolerance(
double val);
4105 double step_size()
const;
4108 void set_step_size(
double val);
4112 #if !(defined(SWIG) && defined(SWIGMATLAB))
4118 std::string der(
const std::string& name)
const;
4121 std::string pre(
const std::string& name)
const;
4194 double attribute(
const std::string& a,
const std::string& name)
const;
4197 void set_attribute(
const std::string& a,
const std::string& name,
double val);
4249 double min(
const std::string& name)
const;
4252 void set_min(
const std::string& name,
double val);
4255 double max(
const std::string& name)
const;
4258 void set_max(
const std::string& name,
double val);
4261 double nominal(
const std::string& name)
const;
4264 void set_nominal(
const std::string& name,
double val);
4345 std::vector<double> start(
const std::string& name)
const;
4348 void set_start(
const std::string& name,
double val);
4351 void set_start(
const std::string& name,
const std::vector<double>& val);
4489 void set(
const std::string& name,
double val);
4492 void set(
const std::string& name,
const std::string& val);
4527 bool symbolic()
const;
4532 std::vector<double> attribute(
const std::string& a,
const std::vector<std::string>& name)
const;
4535 void set_attribute(
const std::string& a,
const std::vector<std::string>& name,
4536 const std::vector<double>& val);
4539 std::vector<double> min(
const std::vector<std::string>& name)
const;
4542 void set_min(
const std::vector<std::string>& name,
const std::vector<double>& val);
4545 std::vector<double> max(
const std::vector<std::string>& name)
const;
4548 void set_max(
const std::vector<std::string>& name,
const std::vector<double>& val);
4551 std::vector<double> nominal(
const std::vector<std::string>& name)
const;
4554 void set_nominal(
const std::vector<std::string>& name,
const std::vector<double>& val);
4557 std::vector<double> start(
const std::vector<std::string>& name)
const;
4565 void set_start(
const std::vector<std::string>& name,
const std::vector<double>& val);
4568 void set(
const std::vector<std::string>& name,
const std::vector<double>& val);
4571 void set(
const std::vector<std::string>& name,
const std::vector<std::string>& val);
4574 std::vector<GenericType> get(
const std::vector<std::string>& name)
const;
4616 bool has(
const std::string& name)
const;
4669 std::vector<std::string>
all()
const;
4677 std::vector<std::string>
all(
const std::string& cat)
const;
4760 Function oracle(
bool sx =
false,
bool elim_w =
false,
bool lifted_calls =
false)
const;
4808 Sparsity jac_sparsity(
const std::vector<std::string>& onames,
4809 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
Get variable expression by name.
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)