casadi 3.6.7__cp37-none-manylinux2014_aarch64.whl → 3.7.0__cp37-none-manylinux2014_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi-cli +0 -0
  3. casadi/casadi.py +6070 -3038
  4. casadi/cmake/casadi-config-version.cmake +1 -1
  5. casadi/cmake/casadi-targets-release.cmake +5 -5
  6. casadi/cmake/casadi-targets.cmake +5 -5
  7. casadi/{lib/cmake/tinyxml2/tinyxml2-config-version.cmake → cmake/ghc_filesystem/ghc_filesystem-config-version.cmake} +30 -10
  8. casadi/cmake/ghc_filesystem/ghc_filesystem-config.cmake +30 -0
  9. casadi/cmake/ghc_filesystem/ghc_filesystem-targets.cmake +107 -0
  10. casadi/cmake/libzip/libzip-config-version.cmake +43 -0
  11. casadi/cmake/libzip/libzip-config.cmake +69 -0
  12. casadi/cmake/libzip/libzip-targets-release.cmake +19 -0
  13. casadi/{lib/cmake/tinyxml2/tinyxml2-static-targets.cmake → cmake/libzip/libzip-targets.cmake} +11 -7
  14. casadi/cmake/libzip/modules/FindMbedTLS.cmake +141 -0
  15. casadi/cmake/libzip/modules/FindNettle.cmake +141 -0
  16. casadi/cmake/libzip/modules/Findzstd.cmake +186 -0
  17. casadi/include/casadi/casadi.i +194 -44
  18. casadi/include/casadi/config.h +11 -11
  19. casadi/include/casadi/core/archiver.hpp +58 -0
  20. casadi/include/casadi/core/blazing_spline.hpp +47 -0
  21. casadi/include/casadi/core/calculus.hpp +57 -2
  22. casadi/include/casadi/core/casadi_common.hpp +37 -0
  23. casadi/include/casadi/core/casadi_meta.hpp +15 -0
  24. casadi/include/casadi/core/casadi_misc.hpp +7 -0
  25. casadi/include/casadi/core/code_generator.hpp +95 -17
  26. casadi/include/casadi/core/core.hpp +5 -0
  27. casadi/include/casadi/core/dae_builder.hpp +283 -141
  28. casadi/include/casadi/core/dm.hpp +3 -0
  29. casadi/include/casadi/core/filesystem.hpp +58 -0
  30. casadi/include/casadi/core/fmu.hpp +51 -16
  31. casadi/include/casadi/core/function.hpp +19 -0
  32. casadi/include/casadi/core/generic_matrix.hpp +214 -7
  33. casadi/include/casadi/core/generic_shared.hpp +318 -0
  34. casadi/include/casadi/core/generic_shared_impl.hpp +214 -0
  35. casadi/include/casadi/core/generic_shared_internal.hpp +215 -0
  36. casadi/include/casadi/core/generic_type.hpp +3 -0
  37. casadi/include/casadi/core/global_options.hpp +10 -0
  38. casadi/include/casadi/core/integrator.hpp +41 -7
  39. casadi/include/casadi/core/matrix_decl.hpp +67 -0
  40. casadi/include/casadi/core/mx.hpp +63 -2
  41. casadi/include/casadi/core/options.hpp +6 -3
  42. casadi/include/casadi/core/optistack.hpp +43 -9
  43. casadi/include/casadi/core/printable.hpp +8 -0
  44. casadi/include/casadi/core/resource.hpp +107 -0
  45. casadi/include/casadi/core/runtime/casadi_blazing_1d_boor_eval.hpp +112 -0
  46. casadi/include/casadi/core/runtime/casadi_blazing_2d_boor_eval.hpp +311 -0
  47. casadi/include/casadi/core/runtime/casadi_blazing_3d_boor_eval.hpp +645 -0
  48. casadi/include/casadi/core/runtime/casadi_blazing_de_boor.hpp +101 -0
  49. casadi/include/casadi/core/runtime/casadi_nlp.hpp +8 -2
  50. casadi/include/casadi/core/runtime/casadi_printme.hpp +25 -0
  51. casadi/include/casadi/core/serializer.hpp +12 -4
  52. casadi/include/casadi/core/serializing_stream.hpp +3 -0
  53. casadi/include/casadi/core/shared_object.hpp +73 -161
  54. casadi/include/casadi/core/sparsity.hpp +13 -1
  55. casadi/include/casadi/core/sparsity_interface.hpp +19 -1
  56. casadi/include/casadi/core/sx.hpp +41 -0
  57. casadi/include/casadi/core/sx_elem.hpp +25 -0
  58. casadi/include/casadi/core/xml_node.hpp +5 -0
  59. casadi/include/casadi/doc.i +9703 -6539
  60. casadi/include/casadi/doc_merged.i +6483 -4447
  61. casadi/include/casadi/valgrind-casadi.supp +138 -0
  62. casadi/include/casadi/valgrind-python.supp +2470 -0
  63. casadi/include/fatrop/blasfeo_wrapper/LinearAlgebraBlasfeo.hpp +4 -1
  64. casadi/include/ghc/filesystem.hpp +6083 -0
  65. casadi/include/ghc/fs_fwd.hpp +38 -0
  66. casadi/include/ghc/fs_impl.hpp +35 -0
  67. casadi/include/ghc/fs_std.hpp +60 -0
  68. casadi/include/ghc/fs_std_fwd.hpp +63 -0
  69. casadi/include/ghc/fs_std_impl.hpp +46 -0
  70. casadi/include/licenses/ghc-external/LICENSE +19 -0
  71. casadi/include/licenses/libz-external/LICENSE +22 -0
  72. casadi/include/licenses/libz-external/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  73. casadi/include/licenses/libzip-external/LICENSE +31 -0
  74. casadi/include/zconf.h +545 -0
  75. casadi/include/zip.h +528 -0
  76. casadi/include/zipconf.h +48 -0
  77. casadi/include/zlib.h +1938 -0
  78. casadi/libcasadi.so +0 -0
  79. casadi/libcasadi.so.3.7 +0 -0
  80. casadi/libcasadi_archiver_libzip.so +0 -0
  81. casadi/libcasadi_archiver_libzip.so.3.7 +0 -0
  82. casadi/libcasadi_conic_cplex.so +0 -0
  83. casadi/libcasadi_conic_cplex.so.3.7 +0 -0
  84. casadi/libcasadi_conic_daqp.so +0 -0
  85. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  86. casadi/libcasadi_conic_fatrop.so +0 -0
  87. casadi/libcasadi_conic_fatrop.so.3.7 +0 -0
  88. casadi/libcasadi_conic_gurobi.so +0 -0
  89. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  90. casadi/libcasadi_conic_hpipm.so +0 -0
  91. casadi/libcasadi_conic_hpipm.so.3.7 +0 -0
  92. casadi/libcasadi_conic_ipqp.so +0 -0
  93. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  94. casadi/libcasadi_conic_nlpsol.so +0 -0
  95. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  96. casadi/libcasadi_conic_osqp.so +0 -0
  97. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  98. casadi/libcasadi_conic_proxqp.so +0 -0
  99. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  100. casadi/libcasadi_conic_qpoases.so +0 -0
  101. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  102. casadi/libcasadi_conic_qrqp.so +0 -0
  103. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  104. casadi/libcasadi_conic_superscs.so +0 -0
  105. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  106. casadi/libcasadi_filesystem_ghc.so +0 -0
  107. casadi/libcasadi_filesystem_ghc.so.3.7 +0 -0
  108. casadi/libcasadi_importer_shell.so +0 -0
  109. casadi/libcasadi_importer_shell.so.3.7 +0 -0
  110. casadi/libcasadi_integrator_collocation.so +0 -0
  111. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  112. casadi/libcasadi_integrator_cvodes.so +0 -0
  113. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  114. casadi/libcasadi_integrator_idas.so +0 -0
  115. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  116. casadi/libcasadi_integrator_rk.so +0 -0
  117. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  118. casadi/libcasadi_interpolant_bspline.so +0 -0
  119. casadi/libcasadi_interpolant_bspline.so.3.7 +0 -0
  120. casadi/libcasadi_interpolant_linear.so +0 -0
  121. casadi/libcasadi_interpolant_linear.so.3.7 +0 -0
  122. casadi/libcasadi_linsol_csparse.so +0 -0
  123. casadi/libcasadi_linsol_csparse.so.3.7 +0 -0
  124. casadi/libcasadi_linsol_csparsecholesky.so +0 -0
  125. casadi/libcasadi_linsol_csparsecholesky.so.3.7 +0 -0
  126. casadi/libcasadi_linsol_lapacklu.so +0 -0
  127. casadi/libcasadi_linsol_lapacklu.so.3.7 +0 -0
  128. casadi/libcasadi_linsol_lapackqr.so +0 -0
  129. casadi/libcasadi_linsol_lapackqr.so.3.7 +0 -0
  130. casadi/libcasadi_linsol_ldl.so +0 -0
  131. casadi/libcasadi_linsol_ldl.so.3.7 +0 -0
  132. casadi/libcasadi_linsol_lsqr.so +0 -0
  133. casadi/libcasadi_linsol_lsqr.so.3.7 +0 -0
  134. casadi/libcasadi_linsol_ma27.so +0 -0
  135. casadi/libcasadi_linsol_ma27.so.3.7 +0 -0
  136. casadi/libcasadi_linsol_mumps.so +0 -0
  137. casadi/libcasadi_linsol_mumps.so.3.7 +0 -0
  138. casadi/libcasadi_linsol_qr.so +0 -0
  139. casadi/libcasadi_linsol_qr.so.3.7 +0 -0
  140. casadi/libcasadi_linsol_symbolicqr.so +0 -0
  141. casadi/libcasadi_linsol_symbolicqr.so.3.7 +0 -0
  142. casadi/libcasadi_linsol_tridiag.so +0 -0
  143. casadi/libcasadi_linsol_tridiag.so.3.7 +0 -0
  144. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  145. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  146. casadi/libcasadi_nlpsol_ampl.so +0 -0
  147. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  148. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  149. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  150. casadi/libcasadi_nlpsol_fatrop.so +0 -0
  151. casadi/libcasadi_nlpsol_fatrop.so.3.7 +0 -0
  152. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  153. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  154. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  155. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  156. casadi/libcasadi_nlpsol_knitro.so +0 -0
  157. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  158. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  159. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  160. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  161. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  162. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  163. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  164. casadi/libcasadi_nlpsol_snopt.so +0 -0
  165. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  166. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  167. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  168. casadi/libcasadi_nlpsol_worhp.so +0 -0
  169. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  170. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  171. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  172. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  173. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  174. casadi/libcasadi_rootfinder_newton.so +0 -0
  175. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  176. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  177. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  178. casadi/libcasadi_sundials_common.so +0 -0
  179. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  180. casadi/libcasadi_xmlfile_tinyxml.so +0 -0
  181. casadi/libcasadi_xmlfile_tinyxml.so.3.7 +0 -0
  182. casadi/libcoinmumps.so +0 -0
  183. casadi/libcoinmumps.so.3 +0 -0
  184. casadi/libcoinmumps.so.3.0.1 +0 -0
  185. casadi/libfatrop.so +0 -0
  186. casadi/libipopt.so +0 -0
  187. casadi/libipopt.so.3 +0 -0
  188. casadi/libipopt.so.3.14.11 +0 -0
  189. casadi/libsipopt.so +0 -0
  190. casadi/libsipopt.so.3 +0 -0
  191. casadi/libsipopt.so.3.14.11 +0 -0
  192. casadi/libz.a +0 -0
  193. casadi/libz.so +0 -0
  194. casadi/libz.so.1 +0 -0
  195. casadi/libz.so.1.3.1 +0 -0
  196. casadi/libzip.a +0 -0
  197. casadi/pkgconfig/casadi.pc +1 -1
  198. casadi/pkgconfig/libzip.pc +14 -0
  199. casadi/tools/__init__.py +3 -1
  200. casadi/tools/graph/graph.py +1 -1
  201. casadi/tools/structure3.py +2 -2
  202. {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/METADATA +1 -1
  203. {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/RECORD +204 -166
  204. casadi/include/tinyxml2.h +0 -2380
  205. casadi/lib/cmake/tinyxml2/tinyxml2-config.cmake +0 -57
  206. casadi/lib/cmake/tinyxml2/tinyxml2-static-targets-release.cmake +0 -19
  207. casadi/lib/libtinyxml2.a +0 -0
  208. casadi/lib/pkgconfig/tinyxml2.pc +0 -10
  209. casadi/tools/structure.py +0 -1446
  210. {casadi-3.6.7.dist-info → casadi-3.7.0.dist-info}/WHEEL +0 -0
@@ -87,15 +87,23 @@ class CASADI_EXPORT DaeBuilder
87
87
 
88
88
  /** @name Variables and equations */
89
89
  ///@{
90
+ /** \brief Expression for independent variable (usually time)
91
+
92
+ \identifier{2by} */
93
+ const MX& time() const;
94
+
90
95
  /** \brief Independent variable (usually time)
91
96
 
92
- \identifier{5e} */
93
- const MX& t() const;
97
+ \identifier{2bz} */
98
+ std::vector<std::string> t_new() const {return all("t");}
94
99
 
95
100
  /** \brief Differential states
96
101
 
97
102
  \identifier{5f} */
98
- std::vector<std::string> x() const;
103
+ std::vector<std::string> x() const {return all("x");}
104
+
105
+ /// Outputs */
106
+ std::vector<std::string> y() const;
99
107
 
100
108
  /** \brief Ordinary differential equations (ODE)
101
109
 
@@ -105,7 +113,7 @@ class CASADI_EXPORT DaeBuilder
105
113
  /** \brief Algebraic variables
106
114
 
107
115
  \identifier{5h} */
108
- std::vector<std::string> z() const;
116
+ std::vector<std::string> z() const {return all("z");}
109
117
 
110
118
  /** \brief Algebraic equations
111
119
 
@@ -115,17 +123,17 @@ class CASADI_EXPORT DaeBuilder
115
123
  /** \brief Quadrature states
116
124
 
117
125
  \identifier{5j} */
118
- std::vector<std::string> q() const;
126
+ std::vector<std::string> q() const {return all("q");}
119
127
 
120
128
  /** \brief Quadrature equations
121
129
 
122
130
  \identifier{5k} */
123
131
  std::vector<MX> quad() const;
124
132
 
125
- /** \brief Output variables
133
+ /** \brief Zero-crossing functions
126
134
 
127
- \identifier{5l} */
128
- std::vector<std::string> y() const;
135
+ \identifier{2b0} */
136
+ std::vector<MX> zero() const;
129
137
 
130
138
  /** \brief Definitions of output variables
131
139
 
@@ -135,17 +143,17 @@ class CASADI_EXPORT DaeBuilder
135
143
  /** \brief Free controls
136
144
 
137
145
  \identifier{5n} */
138
- std::vector<std::string> u() const;
146
+ std::vector<std::string> u() const {return all("u");}
139
147
 
140
148
  /** \brief Parameters
141
149
 
142
150
  \identifier{5o} */
143
- std::vector<std::string> p() const;
151
+ std::vector<std::string> p() const {return all("p");}
144
152
 
145
153
  /** \brief Named constants
146
154
 
147
155
  \identifier{5p} */
148
- std::vector<std::string> c() const;
156
+ std::vector<std::string> c() const {return all("c");}
149
157
 
150
158
  /** \brief Definitions of named constants
151
159
 
@@ -155,7 +163,7 @@ class CASADI_EXPORT DaeBuilder
155
163
  /** \brief Dependent parameters
156
164
 
157
165
  \identifier{5r} */
158
- std::vector<std::string> d() const;
166
+ std::vector<std::string> d() const {return all("d");}
159
167
 
160
168
  /** \brief Definitions of dependent parameters
161
169
 
@@ -167,7 +175,7 @@ class CASADI_EXPORT DaeBuilder
167
175
  /** \brief Dependent variables
168
176
 
169
177
  \identifier{5t} */
170
- std::vector<std::string> w() const;
178
+ std::vector<std::string> w() const {return all("w");}
171
179
 
172
180
  /** \brief Dependent variables and corresponding definitions
173
181
 
@@ -176,36 +184,15 @@ class CASADI_EXPORT DaeBuilder
176
184
  \identifier{5u} */
177
185
  std::vector<MX> wdef() const;
178
186
 
179
- /** \brief Auxiliary variables: Used e.g. to define functions
180
-
181
- \identifier{5v} */
182
- const std::vector<MX>& aux() const;
183
-
184
187
  /** \brief Initial conditions, left-hand-side
185
188
 
186
- \identifier{5w} */
187
- const std::vector<MX>& init_lhs() const;
189
+ \identifier{2b1} */
190
+ std::vector<MX> init_lhs() const;
188
191
 
189
192
  /** \brief Initial conditions, right-hand-side
190
193
 
191
- \identifier{5x} */
192
- const std::vector<MX>& init_rhs() const;
193
-
194
- /** \brief When statement: triggering condition
195
-
196
- \identifier{5y} */
197
- const std::vector<MX>& when_cond() const;
198
-
199
- /** \brief When statement: left-hand-side
200
-
201
- \identifier{5z} */
202
- const std::vector<MX>& when_lhs() const;
203
-
204
- /** \brief When statement: right-hand-side
205
-
206
- \identifier{60} */
207
- const std::vector<MX>& when_rhs() const;
208
- ///@}
194
+ \identifier{2b2} */
195
+ std::vector<MX> init_rhs() const;
209
196
 
210
197
  /** \brief Model structure: outputs
211
198
 
@@ -245,6 +232,11 @@ class CASADI_EXPORT DaeBuilder
245
232
  \identifier{67} */
246
233
  casadi_int nq() const;
247
234
 
235
+ /** \brief Zero-crossing functions
236
+
237
+ \identifier{2cb} */
238
+ casadi_int nzero() const;
239
+
248
240
  /** \brief Output variables
249
241
 
250
242
  \identifier{68} */
@@ -280,62 +272,123 @@ class CASADI_EXPORT DaeBuilder
280
272
  * Formulate a dynamic system model
281
273
  */
282
274
  ///@{
283
- /// Add an independent variable (time)
275
+
276
+ /// Add a new model variable
277
+ MX add(const std::string& name,
278
+ const std::string& causality,
279
+ const std::string& variability,
280
+ const Dict& opts=Dict());
281
+
282
+ /// Add a new model variable, default variability
283
+ MX add(const std::string& name,
284
+ const std::string& causality,
285
+ const Dict& opts=Dict());
286
+
287
+ /// Add a new model variable, default variability and causality
288
+ MX add(const std::string& name,
289
+ const Dict& opts=Dict());
290
+
291
+ /// Add a new model variable, symbolic expression already available
292
+ void add(const std::string& name,
293
+ const std::string& causality,
294
+ const std::string& variability,
295
+ const MX& expr,
296
+ const Dict& opts=Dict());
297
+
298
+ #ifdef WITH_DEPRECATED_FEATURES
299
+ /// [DEPRECATED] Renamed "time"
300
+ const MX& t() const { return time();}
301
+
302
+ /// [DEPRECATED] Replaced by add
284
303
  MX add_t(const std::string& name="t");
285
304
 
286
- /// Add a new parameter
305
+ /// [DEPRECATED] Replaced by add
287
306
  MX add_p(const std::string& name=std::string());
288
307
 
289
- /// Add a new control
308
+ /// [DEPRECATED] Replaced by add
290
309
  MX add_u(const std::string& name=std::string());
291
310
 
292
- /// Add a new differential state
311
+ /// [DEPRECATED] Replaced by add
293
312
  MX add_x(const std::string& name=std::string());
294
313
 
295
- /// Add a new algebraic variable
314
+ /// [DEPRECATED] Replaced by add
296
315
  MX add_z(const std::string& name=std::string());
297
316
 
298
- /// Add a new quadrature state
317
+ /// [DEPRECATED] Replaced by add
299
318
  MX add_q(const std::string& name=std::string());
300
319
 
301
- /// Add a new constant
320
+ /// [DEPRECATED] Replaced by add and eq
302
321
  MX add_c(const std::string& name, const MX& new_cdef);
303
322
 
304
- /// Add a new dependent parameter
323
+ /// [DEPRECATED] Replaced by add and eq
305
324
  MX add_d(const std::string& name, const MX& new_ddef);
306
325
 
307
- /// Add a new dependent variable
326
+ /// [DEPRECATED] Replaced by add and eq
308
327
  MX add_w(const std::string& name, const MX& new_wdef);
309
328
 
310
- /// Add a new output
329
+ /// [DEPRECATED] Replaced by add and eq
311
330
  MX add_y(const std::string& name, const MX& new_ydef);
312
331
 
313
- /// Specify the ordinary differential equation for a state
314
- void set_ode(const std::string& name, const MX& ode_rhs);
332
+ /// [DEPRECATED] Replaced by eq
333
+ void set_beq(const std::string& name, const MX& val);
334
+
335
+ #endif // WITH_DEPRECATED_FEATURES
336
+
337
+ /// Add a simple equation
338
+ void eq(const MX& lhs, const MX& rhs, const Dict& opts=Dict());
315
339
 
316
- /// Specificy the residual equation for an algebraic variable
317
- void set_alg(const std::string& name, const MX& alg_rhs);
340
+ /// Add when equations
341
+ void when(const MX& cond, const std::vector<std::string>& eqs, const Dict& opts=Dict());
318
342
 
319
- /// Add an auxiliary variable
320
- MX add_aux(const std::string& name=std::string(), casadi_int n=1);
343
+ /// Assignment inside a when-equation or if-else equation
344
+ std::string assign(const std::string& name, const MX& val);
321
345
 
322
- /// Add an initial equation
323
- void add_init(const MX& lhs, const MX& rhs);
346
+ /// Reinitialize a state inside when-equations
347
+ std::string reinit(const std::string& name, const MX& val);
324
348
 
325
- /// Add a when statement
326
- void add_when(const MX& cond, const MX& lhs, const MX& rhs);
349
+ /// Specify the initial equation for a variable
350
+ void set_init(const std::string& name, const MX& init_rhs);
351
+
352
+ #ifdef WITH_DEPRECATED_FEATURES
353
+ /// [DEPRECATED] Replaced by eq
354
+ void set_ode(const std::string& name, const MX& ode_rhs) {
355
+ eq(var(name), ode_rhs);
356
+ }
357
+
358
+ /// [DEPRECATED] Replaced by eq
359
+ void set_alg(const std::string& name, const MX& alg_rhs) {
360
+ (void)name;
361
+ eq(0, alg_rhs);
362
+ }
363
+
364
+ /// [DEPRECATED] Replaced by set_init
365
+ void add_init(const MX& lhs, const MX& rhs) {
366
+ set_init(lhs.name(), rhs);
367
+ }
368
+
369
+ /// [DEPRECATED] Replaced by nzero()
370
+ casadi_int ne() const {return nzero();}
371
+
372
+ /// [DEPRECATED] Use all("zero") */
373
+ std::vector<std::string> e() const {return all("zero");}
374
+
375
+ #endif // WITH_DEPRECATED_FEATURES
327
376
 
328
377
  /// Check if dimensions match
329
378
  void sanity_check() const;
330
379
  ///@}
331
380
 
332
- /// Clear all variables of a type
381
+ /// Reorder variables in a category
382
+ void reorder(const std::string& cat, const std::vector<std::string>& v);
383
+
384
+ #ifdef WITH_DEPRECATED_FEATURES
385
+ /// [DEPRECATED] Use set_variability, set_causality or set_category to change variable category
333
386
  void clear_all(const std::string& v);
334
387
 
335
- /// Set all variables of a type
388
+ /// [DEPRECATED] Use set_variability, set_causality, set_category and/or reorder
336
389
  void set_all(const std::string& v, const std::vector<std::string>& name);
337
390
 
338
- /** @name Register an existing variable */
391
+ /** @name [DEPRECATED] Register an existing variable */
339
392
  ///@{
340
393
  void register_t(const std::string& name);
341
394
  void register_p(const std::string& name);
@@ -347,48 +400,44 @@ class CASADI_EXPORT DaeBuilder
347
400
  void register_d(const std::string& name);
348
401
  void register_w(const std::string& name);
349
402
  void register_y(const std::string& name);
403
+ void register_e(const std::string& name);
350
404
  ///@}
351
405
 
352
- #ifdef WITH_DEPRECATED_FEATURES
353
- /** @name [DEPRECATED] Specify all variables of a type: Call set_all instead */
354
- ///@{
355
- void set_u(const std::vector<std::string>& name) { set_all("u", name);}
356
- void set_x(const std::vector<std::string>& name) { set_all("x", name);}
357
- void set_z(const std::vector<std::string>& name,
358
- const std::vector<std::string>& alg = std::vector<std::string>());
359
- void set_q(const std::vector<std::string>& name) { set_all("q", name);}
360
- void set_y(const std::vector<std::string>& name) { set_all("y", name);}
361
- ///@}
362
- #endif // WITH_DEPRECATED_FEATURES
363
-
364
- /** @name Manipulation
365
- * Reformulate the dynamic optimization problem.
366
- */
367
- ///@{
406
+ /// [DEPRECATED] Use eliminate("d")
407
+ void eliminate_d();
368
408
 
369
- #ifdef WITH_DEPRECATED_FEATURES
370
- /// [DEPRECATED] Clear input variable: Replaced by clear_all
371
- void clear_in(const std::string& v) { clear_all(v);}
372
- #endif // WITH_DEPRECATED_FEATURES
373
-
374
- /// Eliminate all dependent variables
409
+ /// [DEPRECATED] Use eliminate("w")
375
410
  void eliminate_w();
376
411
 
377
- /// Lift problem formulation by extracting shared subexpressions
378
- void lift(bool lift_shared = true, bool lift_calls = true);
379
-
380
- /// Eliminate quadrature states and turn them into ODE states
412
+ /// [DEPRECATED] Use eliminate("q")
381
413
  void eliminate_quad();
382
414
 
383
- /// Sort dependent parameters
415
+ /// [DEPRECATED] Use sort("d")
384
416
  void sort_d();
385
417
 
386
- /// Sort dependent variables
418
+ /// [DEPRECATED] Use sort("w")
387
419
  void sort_w();
388
420
 
389
- /// Sort algebraic variables
421
+ /// [DEPRECATED] Use reorder("z", new_order)
390
422
  void sort_z(const std::vector<std::string>& z_order);
391
423
 
424
+ #endif // WITH_DEPRECATED_FEATURES
425
+
426
+ /** @name Manipulation
427
+ * Reformulate the dynamic optimization problem.
428
+ */
429
+ ///@{
430
+
431
+
432
+ /// Eliminate all dependent parameters
433
+ void eliminate(const std::string& cat);
434
+
435
+ /// Sort dependent parameters
436
+ void sort(const std::string& cat);
437
+
438
+ /// Lift problem formulation by extracting shared subexpressions
439
+ void lift(bool lift_shared = true, bool lift_calls = true);
440
+
392
441
  /// Prune unused controls
393
442
  void prune(bool prune_p = true, bool prune_u = true);
394
443
 
@@ -433,7 +482,10 @@ class CASADI_EXPORT DaeBuilder
433
482
  void parse_fmi(const std::string& filename) {load_fmi_description(filename); }
434
483
 
435
484
  /// Does the FMU provide support for analytic derivatives
436
- bool provides_directional_derivative() const;
485
+ bool provides_directional_derivatives() const;
486
+
487
+ /// Does the FMU provide support for analytic derivatives (FMI 2 naming)
488
+ bool provides_directional_derivative() const {return provides_directional_derivatives();}
437
489
 
438
490
  /// Import problem description from FMI or XML
439
491
  void load_fmi_description(const std::string& filename);
@@ -463,34 +515,60 @@ class CASADI_EXPORT DaeBuilder
463
515
  const Dict& opts=Dict()) const;
464
516
  ///@}
465
517
 
466
- /** \brief Load a function from an FMU DLL, standard IO conforming with simulator
518
+ /** \brief Create a function with standard integrator DAE signature
467
519
 
468
520
  \param name Name assigned to the resulting function object
469
521
  \param opts Optional settings
470
522
 
471
- \identifier{6f} */
472
- Function create(const std::string& name, const Dict& opts=Dict()) const;
523
+ \identifier{2c0} */
524
+ Function create(const std::string& fname, const Dict& opts=Dict()) const;
525
+
526
+ /** \brief Create a function with standard integrator DAE signature, default naming
527
+
528
+ \identifier{2c1} */
529
+ Function create() const {return create(name() + "_dae");}
473
530
 
474
531
  /// Construct a function for evaluating dependent parameters
475
532
  Function dependent_fun(const std::string& fname,
476
533
  const std::vector<std::string>& s_in,
477
534
  const std::vector<std::string>& s_out) const;
478
535
 
536
+ /// Construct a function describing transition at a specific events
537
+ Function transition(const std::string& fname, casadi_int index) const;
538
+
539
+ /// Construct a function describing transition at any events
540
+ Function transition(const std::string& fname) const;
541
+
542
+ /// Construct an event transition function, default naming
543
+ Function transition() const {return transition(name() + "_transition");}
544
+
479
545
  ///@{
480
546
  /// Get variable expression by name
481
547
  MX var(const std::string& name) const;
482
548
  MX operator()(const std::string& name) const {return var(name);}
483
549
  ///@}
484
550
 
485
- /// Get the time derivative of an expression
551
+ /// Get the time derivative of model variables
486
552
  std::vector<std::string> der(const std::vector<std::string>& name) const;
487
553
 
488
554
  ///@{
489
- /// Get/set the binding equation for a variable
490
- MX beq(const std::string& name) const;
491
- void set_beq(const std::string& name, const MX& val);
555
+ /// Differentiate an expression with respect to time
556
+ MX der(const MX& v) const;
557
+ MX der(const MX& v);
492
558
  ///@}
493
559
 
560
+ /// Get the pre-variables of model variables
561
+ std::vector<std::string> pre(const std::vector<std::string>& name) const;
562
+
563
+ /// Get the pre-expression given variable expression
564
+ MX pre(const MX& v) const;
565
+
566
+ /// Does a variable have a binding equation?
567
+ bool has_beq(const std::string& name) const;
568
+
569
+ /// Get the binding equation for a variable
570
+ MX beq(const std::string& name) const;
571
+
494
572
  ///@{
495
573
  /// Get/set value reference
496
574
  casadi_int value_reference(const std::string& name) const;
@@ -509,17 +587,53 @@ class CASADI_EXPORT DaeBuilder
509
587
  void set_type(const std::string& name, const std::string& val);
510
588
  ///@}
511
589
 
512
- ///@{
513
- /// Get/set the causality
590
+ /// Get the causality
514
591
  std::string causality(const std::string& name) const;
592
+
593
+ /** \brief Set the causality, if permitted
594
+
595
+ The following changes are permitted:
596
+ * For controls 'u' (variability 'continuous', causality 'input'), free parameters 'p'
597
+ (variability 'tunable', causality 'parameter') and fixed parameters 'c' (variability
598
+ 'fixed', causality 'parameter'), causality can only be changed indirectly, by updating
599
+ the variability
600
+ * Add or remove an output 'y' by setting the causality to 'output' or 'local',
601
+ respectively
602
+
603
+ No other changes are permitted.
604
+
605
+ \identifier{2c2} */
515
606
  void set_causality(const std::string& name, const std::string& val);
516
- ///@}
517
607
 
518
- ///@{
519
- /// Get/set the variability
608
+ /// Get the variability
520
609
  std::string variability(const std::string& name) const;
610
+
611
+ /** \brief Set the variability, if permitted
612
+
613
+ For controls 'u' (variability 'continuous', causality 'input'), free parameters 'p'
614
+ (variability 'tunable', causality 'parameter') and fixed parameters 'c'
615
+ (variability 'fixed', causality 'parameter'), update variability in
616
+ order to change the category. Causality is updated accordingly.
617
+
618
+ Other changes are not permitted
619
+
620
+ \identifier{2c3} */
521
621
  void set_variability(const std::string& name, const std::string& val);
522
- ///@}
622
+
623
+ /// Get the variable category
624
+ std::string category(const std::string& name) const;
625
+
626
+ /** \brief Set the variable category, if permitted
627
+
628
+ The following changes are permitted:
629
+ * Controls 'u' can be changed to/from tunable parameters 'p' or fixed parameters 'c'
630
+ * Differential states that do not appear in the right-hand-sides can be changed between
631
+ regular states 'x' and quadrature states 'q'
632
+
633
+ Other changes are not permitted. Causality and variability is updated accordingly.
634
+
635
+ \identifier{2c4} */
636
+ void set_category(const std::string& name, const std::string& val);
523
637
 
524
638
  ///@{
525
639
  /// Get/set the initial property
@@ -545,12 +659,39 @@ class CASADI_EXPORT DaeBuilder
545
659
  /// Get the dimensions of a variable
546
660
  std::vector<casadi_int> dimension(const std::string& name) const;
547
661
 
662
+ /// Get the start time
663
+ double start_time() const;
664
+
665
+ /// Set the start time
666
+ void set_start_time(double val);
667
+
668
+ /// Get the stop time
669
+ double stop_time() const;
670
+
671
+ /// Set the stop time
672
+ void set_stop_time(double val);
673
+
674
+ /// Get the tolerance
675
+ double tolerance() const;
676
+
677
+ /// Set the tolerance
678
+ void set_tolerance(double val);
679
+
680
+ /// Get the step size
681
+ double step_size() const;
682
+
683
+ /// Set the step size
684
+ void set_step_size(double val);
685
+
548
686
  // The following routines are not needed in MATLAB and would cause ambiguity
549
687
  // Note that a multirow strings can be interpreted as a vector of strings
550
688
  #if !(defined(SWIG) && defined(SWIGMATLAB))
551
- /// Get the time derivative of an expression, single variable
689
+ /// Get the time derivative of model variables, single variable
552
690
  std::string der(const std::string& name) const;
553
691
 
692
+ /// Get the pre-variables of model variables
693
+ std::string pre(const std::string& name) const;
694
+
554
695
  /// Get an attribute, single variable
555
696
  double attribute(const std::string& a, const std::string& name) const;
556
697
 
@@ -576,11 +717,14 @@ class CASADI_EXPORT DaeBuilder
576
717
  void set_nominal(const std::string& name, double val);
577
718
 
578
719
  /// Get the start attribute, single variable
579
- double start(const std::string& name) const;
720
+ std::vector<double> start(const std::string& name) const;
580
721
 
581
722
  /// Set the start attribute, single variable
582
723
  void set_start(const std::string& name, double val);
583
724
 
725
+ /// Set the start attribute, vector argument
726
+ void set_start(const std::string& name, const std::vector<double>& val);
727
+
584
728
  // Clear all set values
585
729
  void reset();
586
730
 
@@ -635,29 +779,40 @@ class CASADI_EXPORT DaeBuilder
635
779
  /// Evaluate the values for a set of variables at the initial time
636
780
  std::vector<GenericType> get(const std::vector<std::string>& name) const;
637
781
 
638
- /// Add a new variable: returns corresponding symbolic expression
782
+ /// Check if a particular variable exists
783
+ bool has(const std::string& name) const;
784
+
785
+ /// Get a list of all variables
786
+ std::vector<std::string> all() const;
787
+
788
+ /// Get a list of all variables of a particular category
789
+ std::vector<std::string> all(const std::string& cat) const;
790
+
791
+ #ifdef WITH_DEPRECATED_FEATURES
792
+ /// [DEPRECATED] Use add
639
793
  MX add_variable(const std::string& name, casadi_int n=1);
640
794
 
641
- /// Add a new variable: returns corresponding symbolic expression
795
+ /// [DEPRECATED] Use add
642
796
  MX add_variable(const std::string& name, const Sparsity& sp);
643
797
 
644
798
  /// Add a new variable from symbolic expressions
645
799
  void add_variable(const MX& new_v);
646
800
 
647
- /// Add a new variable: returns corresponding symbolic expression
801
+ /// [DEPRECATED] Use add
648
802
  size_t add_variable_new(const std::string& name, casadi_int n=1);
649
803
 
650
- /// Add a new variable: returns corresponding symbolic expression
804
+ /// [DEPRECATED] Use add
651
805
  size_t add_variable_new(const std::string& name, const Sparsity& sp);
652
806
 
653
- /// Add a new variable from symbolic expressions
807
+ /// [DEPRECATED] Use add
654
808
  size_t add_variable_new(const MX& new_v);
655
809
 
656
- /// Check if a particular variable exists
657
- bool has_variable(const std::string& name) const;
810
+ /// [DEPRECATED] Ranamed "has"
811
+ bool has_variable(const std::string& name) const {return has(name);}
658
812
 
659
813
  /// Get a list of all variables
660
- std::vector<std::string> all_variables() const;
814
+ std::vector<std::string> all_variables() const {return all();}
815
+ #endif // WITH_DEPRECATED_FEATURES
661
816
 
662
817
  /// Get the (cached) oracle, SX or MX
663
818
  Function oracle(bool sx = false, bool elim_w = false, bool lifted_calls = false) const;
@@ -669,21 +824,30 @@ class CASADI_EXPORT DaeBuilder
669
824
  const std::vector<std::string>& inames) const;
670
825
 
671
826
  #ifndef SWIG
672
- /// Create a new variable
827
+ #ifdef WITH_DEPRECATED_FEATURES
828
+ /// [DEPRECATED] Use add
673
829
  Variable& new_variable(const std::string& name, casadi_int numel = 1);
674
830
 
675
831
  ///@{
676
- /// Access a variable by name
832
+ /// [DEPRECATED] Access to internal class and corresponding indexing removed
677
833
  Variable& variable(const std::string& name);
678
834
  const Variable& variable(const std::string& name) const;
835
+ Variable& variable(size_t ind);
836
+ const Variable& variable(size_t ind) const;
837
+ size_t find(const std::string& name) const;
838
+ std::vector<size_t> find(const std::vector<std::string>& name) const;
839
+ const std::string& name(size_t ind) const;
840
+ std::vector<std::string> name(const std::vector<size_t>& ind) const;
679
841
  ///@}
680
842
 
681
843
  ///@{
682
- /// Access a variable by index
683
- Variable& variable(size_t ind);
684
- const Variable& variable(size_t ind) const;
844
+ /// [DEPRECATED] Use string name, not internal index to access variables
845
+ const MX& var(size_t ind) const;
846
+ std::vector<MX> var(const std::vector<size_t>& ind) const;
685
847
  ///@}
686
848
 
849
+ #endif // WITH_DEPRECATED_FEATURES
850
+
687
851
  /// Access a member function or object
688
852
  const DaeBuilderInternal* operator->() const;
689
853
 
@@ -693,28 +857,6 @@ class CASADI_EXPORT DaeBuilder
693
857
  /// Check if a particular cast is allowed
694
858
  static bool test_cast(const SharedObjectInternal* ptr);
695
859
 
696
- /// Get single variable expression by index
697
- const MX& var(size_t ind) const;
698
-
699
- /// Get variable expressions by index
700
- std::vector<MX> var(const std::vector<size_t>& ind) const;
701
-
702
- /// Get index of variable
703
- size_t find(const std::string& name) const;
704
-
705
- /// Get indices of variable
706
- std::vector<size_t> find(const std::vector<std::string>& name) const;
707
-
708
- /** \brief Get variable name by index
709
-
710
- \identifier{6h} */
711
- const std::string& name(size_t ind) const;
712
-
713
- /** \brief Get variable names by indices
714
-
715
- \identifier{6i} */
716
- std::vector<std::string> name(const std::vector<size_t>& ind) const;
717
-
718
860
  #endif // SWIG
719
861
  };
720
862
 
@@ -65,6 +65,9 @@ namespace casadi {
65
65
  std::vector<DM> DM::
66
66
  cse(const std::vector<DM>& e);
67
67
 
68
+ template<>
69
+ std::vector<double> DM::call(const Function& f, const std::vector<double>& dep);
70
+
68
71
  template<> void DM::export_code(const std::string& lang,
69
72
  std::ostream &stream, const Dict& options) const;
70
73