dae_builder.hpp
1 /*
2  * This file is part of CasADi.
3  *
4  * CasADi -- A symbolic framework for dynamic optimization.
5  * Copyright (C) 2010-2023 Joel Andersson, Joris Gillis, Moritz Diehl,
6  * KU Leuven. All rights reserved.
7  * Copyright (C) 2011-2014 Greg Horn
8  *
9  * CasADi is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 3 of the License, or (at your option) any later version.
13  *
14  * CasADi is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with CasADi; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22  *
23  */
24 
25 
26 #ifndef CASADI_DAE_BUILDER_HPP
27 #define CASADI_DAE_BUILDER_HPP
28 
29 #include "function.hpp"
30 
31 namespace casadi {
32 
33 // Forward declarations
34 class DaeBuilderInternal;
35 
68 class CASADI_EXPORT DaeBuilder
69  : public SharedObject,
70  public SWIG_IF_ELSE(PrintableCommon, Printable<DaeBuilder>) {
71  public:
72 
74  std::string type_name() const {return "DaeBuilder";}
75 
78 
80  explicit DaeBuilder(const std::string& name, const std::string& path = "",
81  const Dict& opts = Dict());
82 
86  const std::string& name() const;
87 
90 
93  const MX& time() const;
94 
98  std::vector<std::string> t_new() const {return all("t");}
99 
103  std::vector<std::string> x() const {return all("x");}
104 
106  std::vector<std::string> y() const;
107 
111  std::vector<MX> ode() const;
112 
116  std::vector<std::string> z() const {return all("z");}
117 
121  std::vector<MX> alg() const;
122 
126  std::vector<std::string> q() const {return all("q");}
127 
131  std::vector<MX> quad() const;
132 
136  std::vector<MX> zero() const;
137 
141  std::vector<MX> ydef() const;
142 
146  std::vector<std::string> u() const {return all("u");}
147 
151  std::vector<std::string> p() const {return all("p");}
152 
156  std::vector<std::string> c() const {return all("c");}
157 
161  std::vector<MX> cdef() const;
162 
166  std::vector<std::string> d() const {return all("d");}
167 
173  std::vector<MX> ddef() const;
174 
178  std::vector<std::string> w() const {return all("w");}
179 
185  std::vector<MX> wdef() const;
186 
190  std::vector<MX> init_lhs() const;
191 
195  std::vector<MX> init_rhs() const;
196 
200  std::vector<std::string> outputs() const;
201 
205  std::vector<std::string> derivatives() const;
206 
210  std::vector<std::string> initial_unknowns() const;
211 
214 
218  bool has_t() const;
219 
223  casadi_int nx() const;
224 
228  casadi_int nz() const;
229 
233  casadi_int nq() const;
234 
238  casadi_int nzero() const;
239 
243  casadi_int ny() const;
244 
248  casadi_int nu() const;
249 
253  casadi_int np() const;
254 
258  casadi_int nc() const;
259 
263  casadi_int nd() const;
264 
268  casadi_int nw() const;
270 
275 
277  MX add(const std::string& name,
278  const std::string& causality,
279  const std::string& variability,
280  const Dict& opts=Dict());
281 
283  MX add(const std::string& name,
284  const std::string& causality,
285  const Dict& opts=Dict());
286 
288  MX add(const std::string& name,
289  const Dict& opts=Dict());
290 
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
300  const MX& t() const { return time();}
301 
303  MX add_t(const std::string& name="t");
304 
306  MX add_p(const std::string& name=std::string());
307 
309  MX add_u(const std::string& name=std::string());
310 
312  MX add_x(const std::string& name=std::string());
313 
315  MX add_z(const std::string& name=std::string());
316 
318  MX add_q(const std::string& name=std::string());
319 
321  MX add_c(const std::string& name, const MX& new_cdef);
322 
324  MX add_d(const std::string& name, const MX& new_ddef);
325 
327  MX add_w(const std::string& name, const MX& new_wdef);
328 
330  MX add_y(const std::string& name, const MX& new_ydef);
331 
333  void set_beq(const std::string& name, const MX& val);
334 
335  #endif // WITH_DEPRECATED_FEATURES
336 
338  void eq(const MX& lhs, const MX& rhs, const Dict& opts=Dict());
339 
341  void when(const MX& cond, const std::vector<std::string>& eqs, const Dict& opts=Dict());
342 
344  std::string assign(const std::string& name, const MX& val);
345 
347  std::string reinit(const std::string& name, const MX& val);
348 
350  void set_init(const std::string& name, const MX& init_rhs);
351 
352 #ifdef WITH_DEPRECATED_FEATURES
354  void set_ode(const std::string& name, const MX& ode_rhs) {
355  eq(var(name), ode_rhs);
356  }
357 
359  void set_alg(const std::string& name, const MX& alg_rhs) {
360  (void)name;
361  eq(0, alg_rhs);
362  }
363 
365  void add_init(const MX& lhs, const MX& rhs) {
366  set_init(lhs.name(), rhs);
367  }
368 
370  casadi_int ne() const {return nzero();}
371 
373  std::vector<std::string> e() const {return all("zero");}
374 
375  #endif // WITH_DEPRECATED_FEATURES
376 
378  void sanity_check() const;
380 
382  void reorder(const std::string& cat, const std::vector<std::string>& v);
383 
384 #ifdef WITH_DEPRECATED_FEATURES
386  void clear_all(const std::string& v);
387 
389  void set_all(const std::string& v, const std::vector<std::string>& name);
390 
393  void register_t(const std::string& name);
394  void register_p(const std::string& name);
395  void register_u(const std::string& name);
396  void register_x(const std::string& name);
397  void register_z(const std::string& name);
398  void register_q(const std::string& name);
399  void register_c(const std::string& name);
400  void register_d(const std::string& name);
401  void register_w(const std::string& name);
402  void register_y(const std::string& name);
403  void register_e(const std::string& name);
405 
407  void eliminate_d();
408 
410  void eliminate_w();
411 
414 
416  void sort_d();
417 
419  void sort_w();
420 
422  void sort_z(const std::vector<std::string>& z_order);
423 
424  #endif // WITH_DEPRECATED_FEATURES
425 
430 
431 
433  void eliminate(const std::string& cat);
434 
436  void sort(const std::string& cat);
437 
439  void lift(bool lift_shared = true, bool lift_calls = true);
440 
442  void prune(bool prune_p = true, bool prune_u = true);
443 
445  void tear();
447 
452 
454  Function add_fun(const std::string& name,
455  const std::vector<std::string>& arg,
456  const std::vector<std::string>& res, const Dict& opts=Dict());
457 
460 
462  Function add_fun(const std::string& name, const Importer& compiler,
463  const Dict& opts=Dict());
464 
466  bool has_fun(const std::string& name) const;
467 
469  Function fun(const std::string& name) const;
470 
472  std::vector<Function> fun() const;
473 
475  void gather_fun(casadi_int max_depth = -1);
477 
482  void parse_fmi(const std::string& filename) {load_fmi_description(filename); }
483 
486 
488  bool provides_directional_derivative() const {return provides_directional_derivatives();}
489 
491  void load_fmi_description(const std::string& filename);
492 
494  std::vector<std::string> export_fmu(const Dict& opts=Dict());
495 
497  void add_lc(const std::string& name, const std::vector<std::string>& f_out);
498 
500  Function create(const std::string& fname,
501  const std::vector<std::string>& name_in,
502  const std::vector<std::string>& name_out, bool sx, bool lifted_calls = false) const;
503 
512  Function create(const std::string& name,
513  const std::vector<std::string>& name_in,
514  const std::vector<std::string>& name_out,
515  const Dict& opts=Dict()) const;
517 
524  Function create(const std::string& fname, const Dict& opts=Dict()) const;
525 
529  Function create() const {return create(name() + "_dae");}
530 
532  Function dependent_fun(const std::string& fname,
533  const std::vector<std::string>& s_in,
534  const std::vector<std::string>& s_out) const;
535 
537  Function transition(const std::string& fname, casadi_int index) const;
538 
540  Function transition(const std::string& fname) const;
541 
543  Function transition() const {return transition(name() + "_transition");}
544 
547  MX var(const std::string& name) const;
548  MX operator()(const std::string& name) const {return var(name);}
550 
552  std::vector<std::string> der(const std::vector<std::string>& name) const;
553 
556  MX der(const MX& v) const;
557  MX der(const MX& v);
559 
561  std::vector<std::string> pre(const std::vector<std::string>& name) const;
562 
564  MX pre(const MX& v) const;
565 
567  bool has_beq(const std::string& name) const;
568 
570  MX beq(const std::string& name) const;
571 
574  casadi_int value_reference(const std::string& name) const;
575  void set_value_reference(const std::string& name, casadi_int val);
577 
580  std::string description(const std::string& name) const;
581  void set_description(const std::string& name, const std::string& val);
583 
586  std::string type(const std::string& name, casadi_int fmi_version = 3) const;
587  void set_type(const std::string& name, const std::string& val);
589 
591  std::string causality(const std::string& name) const;
592 
606  void set_causality(const std::string& name, const std::string& val);
607 
609  std::string variability(const std::string& name) const;
610 
621  void set_variability(const std::string& name, const std::string& val);
622 
624  std::string category(const std::string& name) const;
625 
636  void set_category(const std::string& name, const std::string& val);
637 
640  std::string initial(const std::string& name) const;
641  void set_initial(const std::string& name, const std::string& val);
643 
646  std::string unit(const std::string& name) const;
647  void set_unit(const std::string& name, const std::string& val);
649 
652  std::string display_unit(const std::string& name) const;
653  void set_display_unit(const std::string& name, const std::string& val);
655 
657  casadi_int numel(const std::string& name) const;
658 
660  std::vector<casadi_int> dimension(const std::string& name) const;
661 
663  double start_time() const;
664 
666  void set_start_time(double val);
667 
669  double stop_time() const;
670 
672  void set_stop_time(double val);
673 
675  double tolerance() const;
676 
678  void set_tolerance(double val);
679 
681  double step_size() const;
682 
684  void set_step_size(double val);
685 
686  // The following routines are not needed in MATLAB and would cause ambiguity
687  // Note that a multirow strings can be interpreted as a vector of strings
688 #if !(defined(SWIG) && defined(SWIGMATLAB))
690  std::string der(const std::string& name) const;
691 
693  std::string pre(const std::string& name) const;
694 
696  double attribute(const std::string& a, const std::string& name) const;
697 
699  void set_attribute(const std::string& a, const std::string& name, double val);
700 
702  double min(const std::string& name) const;
703 
705  void set_min(const std::string& name, double val);
706 
708  double max(const std::string& name) const;
709 
711  void set_max(const std::string& name, double val);
712 
714  double nominal(const std::string& name) const;
715 
717  void set_nominal(const std::string& name, double val);
718 
720  std::vector<double> start(const std::string& name) const;
721 
723  void set_start(const std::string& name, double val);
724 
726  void set_start(const std::string& name, const std::vector<double>& val);
727 
728  // Clear all set values
729  void reset();
730 
731  // Set the current value, single value
732  void set(const std::string& name, double val);
733 
734  // Set the current value, single value (string)
735  void set(const std::string& name, const std::string& val);
736 
738  GenericType get(const std::string& name) const;
739 
740 #endif // !SWIGMATLAB
741 
743  std::vector<double> attribute(const std::string& a, const std::vector<std::string>& name) const;
744 
746  void set_attribute(const std::string& a, const std::vector<std::string>& name,
747  const std::vector<double>& val);
748 
750  std::vector<double> min(const std::vector<std::string>& name) const;
751 
753  void set_min(const std::vector<std::string>& name, const std::vector<double>& val);
754 
756  std::vector<double> max(const std::vector<std::string>& name) const;
757 
759  void set_max(const std::vector<std::string>& name, const std::vector<double>& val);
760 
762  std::vector<double> nominal(const std::vector<std::string>& name) const;
763 
765  void set_nominal(const std::vector<std::string>& name, const std::vector<double>& val);
766 
768  std::vector<double> start(const std::vector<std::string>& name) const;
769 
771  void set_start(const std::vector<std::string>& name, const std::vector<double>& val);
772 
774  void set(const std::vector<std::string>& name, const std::vector<double>& val);
775 
777  void set(const std::vector<std::string>& name, const std::vector<std::string>& val);
778 
780  std::vector<GenericType> get(const std::vector<std::string>& name) const;
781 
783  bool has(const std::string& name) const;
784 
786  std::vector<std::string> all() const;
787 
789  std::vector<std::string> all(const std::string& cat) const;
790 
791 #ifdef WITH_DEPRECATED_FEATURES
793  MX add_variable(const std::string& name, casadi_int n=1);
794 
796  MX add_variable(const std::string& name, const Sparsity& sp);
797 
799  void add_variable(const MX& new_v);
800 
802  size_t add_variable_new(const std::string& name, casadi_int n=1);
803 
805  size_t add_variable_new(const std::string& name, const Sparsity& sp);
806 
808  size_t add_variable_new(const MX& new_v);
809 
811  bool has_variable(const std::string& name) const {return has(name);}
812 
814  std::vector<std::string> all_variables() const {return all();}
815 #endif // WITH_DEPRECATED_FEATURES
816 
818  Function oracle(bool sx = false, bool elim_w = false, bool lifted_calls = false) const;
819 
823  Sparsity jac_sparsity(const std::vector<std::string>& onames,
824  const std::vector<std::string>& inames) const;
825 
826 #ifndef SWIG
827 #ifdef WITH_DEPRECATED_FEATURES
829  Variable& new_variable(const std::string& name, casadi_int numel = 1);
830 
833  Variable& variable(const std::string& name);
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;
842 
845  const MX& var(size_t ind) const;
846  std::vector<MX> var(const std::vector<size_t>& ind) const;
848 
849 #endif // WITH_DEPRECATED_FEATURES
850 
852  const DaeBuilderInternal* operator->() const;
853 
855  DaeBuilderInternal* operator->();
856 
858  static bool test_cast(const SharedObjectInternal* ptr);
859 
860 #endif // SWIG
861 };
862 
863 } // namespace casadi
864 
865 #endif // CASADI_DAE_BUILDER_HPP
A symbolic representation of a differential-algebraic equations model.
Definition: dae_builder.hpp:70
double start_time() const
Get the start time.
const MX & time() const
Expression for independent variable (usually time)
DaeBuilder(const std::string &name, const std::string &path="", const Dict &opts=Dict())
Construct a DaeBuilder instance.
void when(const MX &cond, const std::vector< std::string > &eqs, const Dict &opts=Dict())
Add when equations.
bool has_fun(const std::string &name) const
Does a particular function already exist?
Function create(const std::string &fname, const std::vector< std::string > &name_in, const std::vector< std::string > &name_out, bool sx, bool lifted_calls=false) const
Construct a function object, legacy syntax.
void set_start(const std::string &name, const std::vector< double > &val)
Set the start attribute, vector argument.
std::vector< std::string > export_fmu(const Dict &opts=Dict())
Export instance into an FMU.
void register_w(const std::string &name)
void set(const std::vector< std::string > &name, const std::vector< std::string > &val)
Set the current value (string)
void set_stop_time(double val)
Set the stop time.
std::vector< std::string > q() const
Quadrature states.
casadi_int nu() const
Free controls.
double nominal(const std::string &name) const
Get the nominal value, single variable.
void set_beq(const std::string &name, const MX &val)
[DEPRECATED] Replaced by eq
void sort_z(const std::vector< std::string > &z_order)
[DEPRECATED] Use reorder("z", new_order)
Function add_fun(const std::string &name, const Importer &compiler, const Dict &opts=Dict())
Add an external function.
void sanity_check() const
Check if dimensions match.
Function add_fun(const std::string &name, const std::vector< std::string > &arg, const std::vector< std::string > &res, const Dict &opts=Dict())
Add a function from loaded expressions.
bool has(const std::string &name) const
Check if a particular variable exists.
MX add_variable(const std::string &name, casadi_int n=1)
[DEPRECATED] Use add
std::string variability(const std::string &name) const
Get the variability.
void set_alg(const std::string &name, const MX &alg_rhs)
[DEPRECATED] Replaced by eq
std::vector< double > min(const std::vector< std::string > &name) const
Get the lower bound.
void set_value_reference(const std::string &name, casadi_int val)
casadi_int nx() const
Differential states.
void set_start(const std::string &name, double val)
Set the start attribute, single variable.
Function transition(const std::string &fname, casadi_int index) const
Construct a function describing transition at a specific events.
void sort_d()
[DEPRECATED] Use sort("d")
double tolerance() const
Get the tolerance.
std::string initial(const std::string &name) const
std::vector< double > attribute(const std::string &a, const std::vector< std::string > &name) const
Get an attribute.
Function dependent_fun(const std::string &fname, const std::vector< std::string > &s_in, const std::vector< std::string > &s_out) const
Construct a function for evaluating dependent parameters.
double max(const std::string &name) const
Get the upper bound, single variable.
std::vector< MX > cdef() const
Definitions of named constants.
void set(const std::string &name, const std::string &val)
std::string unit(const std::string &name) const
MX der(const MX &v)
void clear_all(const std::string &v)
[DEPRECATED] Use set_variability, set_causality or set_category to change variable category
void set_min(const std::vector< std::string > &name, const std::vector< double > &val)
Set the lower bound.
void set_max(const std::string &name, double val)
Set the upper bound, single variable.
std::string der(const std::string &name) const
Get the time derivative of model variables, single variable.
Function oracle(bool sx=false, bool elim_w=false, bool lifted_calls=false) const
Get the (cached) oracle, SX or MX.
const MX & t() const
[DEPRECATED] Renamed "time"
MX add_t(const std::string &name="t")
[DEPRECATED] Replaced by add
void set_ode(const std::string &name, const MX &ode_rhs)
[DEPRECATED] Replaced by eq
Function fun(const std::string &name) const
Get function by name.
std::vector< std::string > c() const
Named constants.
std::string category(const std::string &name) const
Get the variable category.
void register_e(const std::string &name)
MX add_p(const std::string &name=std::string())
[DEPRECATED] Replaced by add
casadi_int nd() const
Dependent parameters.
void set_attribute(const std::string &a, const std::string &name, double val)
Set an attribute, single variable.
void reorder(const std::string &cat, const std::vector< std::string > &v)
Reorder variables in a category.
MX der(const MX &v) const
casadi_int ne() const
[DEPRECATED] Replaced by nzero()
std::vector< double > start(const std::string &name) const
Get the start attribute, single variable.
std::vector< std::string > der(const std::vector< std::string > &name) const
Get the time derivative of model variables.
double step_size() const
Get the step size.
MX add_c(const std::string &name, const MX &new_cdef)
[DEPRECATED] Replaced by add and eq
void parse_fmi(const std::string &filename)
void gather_fun(casadi_int max_depth=-1)
Collect embedded functions from the expression graph.
MX add_variable(const std::string &name, const Sparsity &sp)
[DEPRECATED] Use add
const std::string & name() const
Name of instance.
std::string pre(const std::string &name) const
Get the pre-variables of model variables.
std::string causality(const std::string &name) const
Get the causality.
std::vector< double > start(const std::vector< std::string > &name) const
Get the start attribute.
casadi_int nc() const
Named constants.
bool provides_directional_derivatives() const
Does the FMU provide support for analytic derivatives.
MX add(const std::string &name, const Dict &opts=Dict())
Add a new model variable, default variability and causality.
void set_tolerance(double val)
Set the tolerance.
void register_c(const std::string &name)
void eliminate_w()
[DEPRECATED] Use eliminate("w")
void set_min(const std::string &name, double val)
Set the lower bound, single variable.
std::vector< MX > wdef() const
Dependent variables and corresponding definitions.
bool has_variable(const std::string &name) const
[DEPRECATED] Ranamed "has"
std::string assign(const std::string &name, const MX &val)
Assignment inside a when-equation or if-else equation.
void tear()
Identify iteration variables and residual equations using naming convention.
Function transition() const
Construct an event transition function, default naming.
Function create(const std::string &fname, const Dict &opts=Dict()) const
Create a function with standard integrator DAE signature.
std::string type_name() const
Readable name of the class.
Definition: dae_builder.hpp:74
void eliminate_quad()
[DEPRECATED] Use eliminate("q")
void set_type(const std::string &name, const std::string &val)
double attribute(const std::string &a, const std::string &name) const
Get an attribute, single variable.
void set_unit(const std::string &name, const std::string &val)
std::vector< std::string > e() const
[DEPRECATED] Use all("zero") *‍/
void sort(const std::string &cat)
Sort dependent parameters.
std::vector< std::string > derivatives() const
Model structure: derivatives.
bool provides_directional_derivative() const
Does the FMU provide support for analytic derivatives (FMI 2 naming)
double stop_time() const
Get the stop time.
Function create() const
Create a function with standard integrator DAE signature, default naming.
std::vector< Function > fun() const
Get all functions.
double min(const std::string &name) const
Get the lower bound, single variable.
std::vector< std::string > all() const
Get a list of all variables.
void set_max(const std::vector< std::string > &name, const std::vector< double > &val)
Set the upper bound.
Function add_fun(const Function &f)
Add an already existing function.
Function transition(const std::string &fname) const
Construct a function describing transition at any events.
std::vector< std::string > all(const std::string &cat) const
Get a list of all variables of a particular category.
void set_display_unit(const std::string &name, const std::string &val)
std::string reinit(const std::string &name, const MX &val)
Reinitialize a state inside when-equations.
std::vector< double > max(const std::vector< std::string > &name) const
Get the upper bound.
size_t add_variable_new(const std::string &name, const Sparsity &sp)
[DEPRECATED] Use add
MX operator()(const std::string &name) const
Function create(const std::string &name, const std::vector< std::string > &name_in, const std::vector< std::string > &name_out, const Dict &opts=Dict()) const
Construct a function object, names provided.
void register_z(const std::string &name)
std::vector< double > nominal(const std::vector< std::string > &name) const
Get the nominal value.
std::vector< MX > alg() const
Algebraic equations.
void set_init(const std::string &name, const MX &init_rhs)
Specify the initial equation for a variable.
void add_lc(const std::string &name, const std::vector< std::string > &f_out)
Add a named linear combination of output expressions.
void eq(const MX &lhs, const MX &rhs, const Dict &opts=Dict())
Add a simple equation.
MX add_u(const std::string &name=std::string())
[DEPRECATED] Replaced by add
std::vector< std::string > x() const
Differential states.
void set_category(const std::string &name, const std::string &val)
Set the variable category, if permitted.
casadi_int nz() const
Algebraic variables.
std::vector< std::string > y() const
Outputs *‍/.
bool has_beq(const std::string &name) const
Does a variable have a binding equation?
size_t add_variable_new(const MX &new_v)
[DEPRECATED] Use add
std::string display_unit(const std::string &name) const
void register_u(const std::string &name)
MX add(const std::string &name, const std::string &causality, const Dict &opts=Dict())
Add a new model variable, default variability.
void set_nominal(const std::string &name, double val)
Set the nominal value, single variable.
std::vector< casadi_int > dimension(const std::string &name) const
Get the dimensions of a variable.
MX pre(const MX &v) const
Get the pre-expression given variable expression.
void set_causality(const std::string &name, const std::string &val)
Set the causality, if permitted.
void prune(bool prune_p=true, bool prune_u=true)
Prune unused controls.
casadi_int nq() const
Quadrature states.
void add(const std::string &name, const std::string &causality, const std::string &variability, const MX &expr, const Dict &opts=Dict())
Add a new model variable, symbolic expression already available.
std::vector< std::string > z() const
Algebraic variables.
MX add_q(const std::string &name=std::string())
[DEPRECATED] Replaced by add
void set_attribute(const std::string &a, const std::vector< std::string > &name, const std::vector< double > &val)
Set an attribute.
MX add_y(const std::string &name, const MX &new_ydef)
[DEPRECATED] Replaced by add and eq
void set_variability(const std::string &name, const std::string &val)
Set the variability, if permitted.
MX add(const std::string &name, const std::string &causality, const std::string &variability, const Dict &opts=Dict())
Add a new model variable.
std::vector< MX > ode() const
Ordinary differential equations (ODE)
bool has_t() const
Is there a time variable?
void set_start_time(double val)
Set the start time.
DaeBuilder()
Default constructor.
void set(const std::string &name, double val)
std::vector< std::string > t_new() const
Independent variable (usually time)
Definition: dae_builder.hpp:98
void eliminate(const std::string &cat)
Eliminate all dependent parameters.
std::vector< std::string > initial_unknowns() const
Model structure: initial unknowns.
std::vector< MX > init_lhs() const
Initial conditions, left-hand-side.
void add_init(const MX &lhs, const MX &rhs)
[DEPRECATED] Replaced by set_init
casadi_int value_reference(const std::string &name) const
MX add_z(const std::string &name=std::string())
[DEPRECATED] Replaced by add
std::vector< MX > ydef() const
Definitions of output variables.
std::vector< std::string > p() const
Parameters.
Sparsity jac_sparsity(const std::vector< std::string > &onames, const std::vector< std::string > &inames) const
Get Jacobian sparsity.
casadi_int np() const
Parameters.
std::vector< std::string > pre(const std::vector< std::string > &name) const
Get the pre-variables of model variables.
std::vector< std::string > d() const
Dependent parameters.
void lift(bool lift_shared=true, bool lift_calls=true)
Lift problem formulation by extracting shared subexpressions.
void sort_w()
[DEPRECATED] Use sort("w")
MX var(const std::string &name) const
void register_y(const std::string &name)
MX add_x(const std::string &name=std::string())
[DEPRECATED] Replaced by add
void register_q(const std::string &name)
size_t add_variable_new(const std::string &name, casadi_int n=1)
[DEPRECATED] Use add
casadi_int ny() const
Output variables.
void set(const std::vector< std::string > &name, const std::vector< double > &val)
Set the current value.
std::vector< MX > zero() const
Zero-crossing functions.
void set_all(const std::string &v, const std::vector< std::string > &name)
[DEPRECATED] Use set_variability, set_causality, set_category and/or reorder
void register_t(const std::string &name)
std::vector< std::string > outputs() const
Model structure: outputs.
void load_fmi_description(const std::string &filename)
Import problem description from FMI or XML.
void register_x(const std::string &name)
std::vector< GenericType > get(const std::vector< std::string > &name) const
Evaluate the values for a set of variables at the initial time.
casadi_int numel(const std::string &name) const
Get the number of elements of a variable.
GenericType get(const std::string &name) const
Evaluate the values for a set of variables at the initial time, single value.
std::vector< std::string > w() const
Dependent variables.
std::vector< std::string > all_variables() const
Get a list of all variables.
std::vector< MX > ddef() const
Definitions of dependent parameters.
void register_p(const std::string &name)
casadi_int nw() const
Dependent variables.
std::vector< MX > init_rhs() const
Initial conditions, right-hand-side.
MX add_w(const std::string &name, const MX &new_wdef)
[DEPRECATED] Replaced by add and eq
void set_step_size(double val)
Set the step size.
void register_d(const std::string &name)
void add_variable(const MX &new_v)
Add a new variable from symbolic expressions.
casadi_int nzero() const
Zero-crossing functions.
std::string description(const std::string &name) const
void set_initial(const std::string &name, const std::string &val)
std::vector< std::string > u() const
Free controls.
void set_nominal(const std::vector< std::string > &name, const std::vector< double > &val)
Set the nominal value.
void eliminate_d()
[DEPRECATED] Use eliminate("d")
void set_start(const std::vector< std::string > &name, const std::vector< double > &val)
Set the start attribute.
std::vector< MX > quad() const
Quadrature equations.
MX beq(const std::string &name) const
Get the binding equation for a variable.
std::string type(const std::string &name, casadi_int fmi_version=3) const
MX add_d(const std::string &name, const MX &new_ddef)
[DEPRECATED] Replaced by add and eq
void set_description(const std::string &name, const std::string &val)
Function object.
Definition: function.hpp:60
Generic data type, can hold different types such as bool, casadi_int, std::string etc.
Importer.
Definition: importer.hpp:86
MX - Matrix expression.
Definition: mx.hpp:92
std::string name() const
Get the name.
GenericShared implements a reference counting framework similar for efficient and.
General sparsity class.
Definition: sparsity.hpp:106
The casadi namespace.
Definition: archiver.hpp:32
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Holds expressions and meta-data corresponding to a physical quantity evolving in time.