From 733d5e57c9ae5fc8fefe85ed6e7760138bc0e088 Mon Sep 17 00:00:00 2001 From: Thibault Poignonec Date: Wed, 24 Apr 2024 17:03:51 +0200 Subject: [PATCH 1/6] change Acados version to 0.3.2 --- acados_solver_ros2.repos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acados_solver_ros2.repos b/acados_solver_ros2.repos index 58e342e..9d61f46 100644 --- a/acados_solver_ros2.repos +++ b/acados_solver_ros2.repos @@ -2,4 +2,4 @@ repositories: acados_vendor_ros2: type: git url: https://github.com/ICube-Robotics/acados_vendor_ros2.git - version: v0.3.0 + version: v0.3.2 From 9a7b2bb17ccae0d484195a254254d2fccbde058d Mon Sep 17 00:00:00 2001 From: Thibault Poignonec Date: Wed, 24 Apr 2024 17:04:06 +0200 Subject: [PATCH 2/6] update changelog --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 863421b..2d7a30c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,22 @@ # Change Log +## [0.2.1] - 2024-04-24 + +### Added + +### Changed + +- Acados vendor ros2 v0.3.0 -> v0.3.2 + +### Fixed + +- [PR #7](https://github.com/ICube-Robotics/acados_solver_ros2/pull/7) Fixed `utils::get_stats_cost_value()` getter.F + +- [PR #6](https://github.com/ICube-Robotics/acados_solver_ros2/pull/6) Fixed `AcadosSolver::set_runtime_parameters()` getter. + +- Fixed CI for doc generation. + ## [0.2.0] - 2024-02-14 Note: the URL has changed from `https://github.com/tpoignonec/acados_controllers_ros2` to `https://github.com/ICube-Robotics/acados_solver_ros2`. See [PR #1 (acados_solver_ros2)](https://github.com/tpoignonec/acados_solver_ros2/pull/1) From 24532bfafaa57651fbfd1195922fc1ceafb1f6aa Mon Sep 17 00:00:00 2001 From: Thibault Poignonec Date: Wed, 24 Apr 2024 17:05:30 +0200 Subject: [PATCH 3/6] fix typo in changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d7a30c..bb7d58e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ ### Fixed -- [PR #7](https://github.com/ICube-Robotics/acados_solver_ros2/pull/7) Fixed `utils::get_stats_cost_value()` getter.F +- [PR #7](https://github.com/ICube-Robotics/acados_solver_ros2/pull/7) Fixed `utils::get_stats_cost_value()` getter. - [PR #6](https://github.com/ICube-Robotics/acados_solver_ros2/pull/6) Fixed `AcadosSolver::set_runtime_parameters()` getter. From e0541a728aa352b2e57107df5b7c1288ecef4023 Mon Sep 17 00:00:00 2001 From: Thibault Poignonec Date: Wed, 24 Apr 2024 17:12:41 +0200 Subject: [PATCH 4/6] update package version number --- acados_solver_base/package.xml | 2 +- acados_solver_plugins/package.xml | 2 +- acados_solver_ros2/package.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/acados_solver_base/package.xml b/acados_solver_base/package.xml index 6e7ad41..8afb4ac 100644 --- a/acados_solver_base/package.xml +++ b/acados_solver_base/package.xml @@ -2,7 +2,7 @@ acados_solver_base - 0.2.0 + 0.2.1 Base class for Acados solvers plugins (pluginlib). See "acados_solver_plugins" for available plugins and generating new ones. Thibault Poignonec Apache License 2.0 diff --git a/acados_solver_plugins/package.xml b/acados_solver_plugins/package.xml index 023066e..17ef360 100644 --- a/acados_solver_plugins/package.xml +++ b/acados_solver_plugins/package.xml @@ -2,7 +2,7 @@ acados_solver_plugins - 0.2.0 + 0.2.1 Package to generate and load Acados solvers plugins from c++ (pluginlib) or python. See "acados_solver_generic" package for base class. Thibault Poignonec Apache License 2.0 diff --git a/acados_solver_ros2/package.xml b/acados_solver_ros2/package.xml index a16c125..b3c367a 100644 --- a/acados_solver_ros2/package.xml +++ b/acados_solver_ros2/package.xml @@ -2,7 +2,7 @@ acados_solver_ros2 - 0.2.0 + 0.2.1 Meta-package aggregating the acados_solver_ros2 packages and documentation Thibault Poignonec Apache License 2.0 From b5c2b252464d92d0724157e00aca6e52c1b8b34a Mon Sep 17 00:00:00 2001 From: Thibault Poignonec Date: Wed, 24 Apr 2024 18:22:33 +0200 Subject: [PATCH 5/6] update tests for new version --- .../acados_ocp_mock_acados_solver.json | 425 ++++ .../add_pluging_to_build.cmake | 39 + .../acados_sim_solver_mock_acados_solver.c | 484 ++--- .../acados_sim_solver_mock_acados_solver.h | 100 +- .../acados_solver_mock_acados_solver.c | 1815 +++++++++-------- .../acados_solver_mock_acados_solver.h | 145 +- .../generated_c_code/legacy_CMakeLists.txt | 32 +- ...libacados_ocp_solver_mock_acados_solver.so | Bin 102176 -> 103168 bytes .../main_mock_acados_solver.c | 280 ++- .../main_sim_mock_acados_solver.c | 145 +- .../mock_acados_solver_constraints.h | 43 - .../mock_acados_solver_cost.h | 86 +- .../mock_acados_solver_cost_ext_cost_0_fun.c | 131 +- ...ck_acados_solver_cost_ext_cost_0_fun_jac.c | 162 +- ...ados_solver_cost_ext_cost_0_fun_jac_hess.c | 185 +- .../mock_acados_solver_cost_ext_cost_e_fun.c | 123 +- ...ck_acados_solver_cost_ext_cost_e_fun_jac.c | 148 +- ...ados_solver_cost_ext_cost_e_fun_jac_hess.c | 169 +- .../mock_acados_solver_cost_ext_cost_fun.c | 131 +- ...mock_acados_solver_cost_ext_cost_fun_jac.c | 162 +- ...acados_solver_cost_ext_cost_fun_jac_hess.c | 182 +- .../mock_acados_solver_impl_dae_fun.c | 188 +- ..._acados_solver_impl_dae_fun_jac_x_xdot_u.c | 315 ++- ...cados_solver_impl_dae_fun_jac_x_xdot_u_z.c | 322 ++- ..._acados_solver_impl_dae_fun_jac_x_xdot_z.c | 303 ++- .../mock_acados_solver_impl_dae_hess.c | 575 +++--- ...ck_acados_solver_impl_dae_jac_x_xdot_u_z.c | 284 ++- .../mock_acados_solver_model.h | 44 +- .../mock_acados_solver/mock_acados_solver.cpp | 16 +- .../mock_acados_solver/mock_acados_solver.hpp | 8 +- 30 files changed, 3597 insertions(+), 3445 deletions(-) create mode 100644 acados_solver_base/test/mock_acados_solver/acados_ocp_mock_acados_solver.json create mode 100644 acados_solver_base/test/mock_acados_solver/add_pluging_to_build.cmake delete mode 100644 acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_constraints/mock_acados_solver_constraints.h diff --git a/acados_solver_base/test/mock_acados_solver/acados_ocp_mock_acados_solver.json b/acados_solver_base/test/mock_acados_solver/acados_ocp_mock_acados_solver.json new file mode 100644 index 0000000..fb9e008 --- /dev/null +++ b/acados_solver_base/test/mock_acados_solver/acados_ocp_mock_acados_solver.json @@ -0,0 +1,425 @@ +{ + "acados_include_path": "/home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/install/acados_vendor_ros2/opt/acados_vendor_ros2/include", + "acados_lib_path": "/home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/install/acados_vendor_ros2/opt/acados_vendor_ros2/lib", + "code_export_directory": "/home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/src/external/acados_solver_ros2/acados_solver_plugins/src/plugins/mock_acados_solver/generated_c_code", + "constraints": { + "C": [], + "C_e": [], + "D": [], + "constr_type": "BGH", + "constr_type_0": "BGH", + "constr_type_e": "BGH", + "has_x0": true, + "idxbu": [ + 0 + ], + "idxbx": [ + 2 + ], + "idxbx_0": [ + 0, + 1, + 2, + 3 + ], + "idxbx_e": [ + 2 + ], + "idxbxe_0": [ + 0, + 1, + 2, + 3 + ], + "idxsbu": [], + "idxsbx": [], + "idxsbx_e": [], + "idxsg": [], + "idxsg_e": [], + "idxsh": [], + "idxsh_0": [], + "idxsh_e": [], + "idxsphi": [], + "idxsphi_0": [], + "idxsphi_e": [], + "lbu": [ + -80 + ], + "lbx": [ + -10 + ], + "lbx_0": [ + 0.0, + 3.141592653589793, + 0.0, + 0.0 + ], + "lbx_e": [ + -10 + ], + "lg": [], + "lg_e": [], + "lh": [], + "lh_0": [], + "lh_e": [], + "lphi": [], + "lphi_0": [], + "lphi_e": [], + "lsbu": [], + "lsbx": [], + "lsbx_e": [], + "lsg": [], + "lsg_e": [], + "lsh": [], + "lsh_0": [], + "lsh_e": [], + "lsphi": [], + "lsphi_0": [], + "lsphi_e": [], + "ubu": [ + 80 + ], + "ubx": [ + 10 + ], + "ubx_0": [ + 0.0, + 3.141592653589793, + 0.0, + 0.0 + ], + "ubx_e": [ + 10 + ], + "ug": [], + "ug_e": [], + "uh": [], + "uh_0": [], + "uh_e": [], + "uphi": [], + "uphi_0": [], + "uphi_e": [], + "usbu": [], + "usbx": [], + "usbx_e": [], + "usg": [], + "usg_e": [], + "ush": [], + "ush_0": [], + "ush_e": [], + "usphi": [], + "usphi_0": [], + "usphi_e": [] + }, + "cost": { + "Vu": [], + "Vu_0": [], + "Vx": [], + "Vx_0": [], + "Vx_e": [], + "Vz": [], + "Vz_0": [], + "W": [], + "W_0": [], + "W_e": [], + "Zl": [], + "Zl_0": [], + "Zl_e": [], + "Zu": [], + "Zu_0": [], + "Zu_e": [], + "cost_ext_fun_type": "casadi", + "cost_ext_fun_type_0": "casadi", + "cost_ext_fun_type_e": "casadi", + "cost_type": "EXTERNAL", + "cost_type_0": "EXTERNAL", + "cost_type_e": "EXTERNAL", + "yref": [], + "yref_0": [], + "yref_e": [], + "zl": [], + "zl_0": [], + "zl_e": [], + "zu": [], + "zu_0": [], + "zu_e": [] + }, + "cython_include_dirs": [ + "/home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/.venv/lib/python3.10/site-packages/numpy/core/include", + "/usr/include/python3.10" + ], + "dims": { + "N": 20, + "nbu": 1, + "nbx": 1, + "nbx_0": 4, + "nbx_e": 1, + "nbxe_0": 4, + "ng": 0, + "ng_e": 0, + "nh": 0, + "nh_0": 0, + "nh_e": 0, + "np": 2, + "nphi": 0, + "nphi_0": 0, + "nphi_e": 0, + "nr": 0, + "nr_0": 0, + "nr_e": 0, + "ns": 0, + "ns_0": 0, + "ns_e": 0, + "nsbu": 0, + "nsbx": 0, + "nsbx_e": 0, + "nsg": 0, + "nsg_e": 0, + "nsh": 0, + "nsh_0": 0, + "nsh_e": 0, + "nsphi": 0, + "nsphi_0": 0, + "nsphi_e": 0, + "nu": 1, + "nx": 4, + "ny": 0, + "ny_0": 0, + "ny_e": 0, + "nz": 0 + }, + "json_file": "/home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/src/external/acados_solver_ros2/acados_solver_plugins/src/plugins/mock_acados_solver/acados_ocp_mock_acados_solver.json", + "model": { + "con_h_expr": null, + "con_h_expr_0": null, + "con_h_expr_e": null, + "con_phi_expr": null, + "con_phi_expr_0": null, + "con_phi_expr_e": null, + "con_r_expr": null, + "con_r_expr_0": null, + "con_r_expr_e": null, + "con_r_in_phi": null, + "con_r_in_phi_0": null, + "con_r_in_phi_e": null, + "cost_conl_custom_outer_hess": null, + "cost_conl_custom_outer_hess_0": null, + "cost_conl_custom_outer_hess_e": null, + "cost_expr_ext_cost": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegfaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajganhaaaaaegpcaaaaaaaaaaaaaacaaaaaaaihbdchcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaehigfgehbgchfaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachlhebokhebokhejpdegpcaaaaaaaaaaaaaacaaaaaaaghbdchkaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaegehigfgehbgchoaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaagechcbaaaaaaaaaaaaaa", + "cost_expr_ext_cost_0": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegfaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajganhaaaaaegpcaaaaaaaaaaaaaacaaaaaaaihbdchcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaehigfgehbgchfaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachlhebokhebokhejpdegpcaaaaaaaaaaaaaacaaaaaaaghbdchkaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaegehigfgehbgchoaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaagechcbaaaaaaaaaaaaaa", + "cost_expr_ext_cost_custom_hess": null, + "cost_expr_ext_cost_custom_hess_0": null, + "cost_expr_ext_cost_custom_hess_e": null, + "cost_expr_ext_cost_e": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegfaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaajganhaaaaaegpcaaaaaaaaaaaaaacaaaaaaaihbdchcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaehigfgehbgchfaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachlhebokhebokhejpdegpcaaaaaaaaaaaaaacaaaaaaaghbdchkaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaegehigfgehbgchoaaaaaaaaaaaaaaa", + "cost_psi_expr": null, + "cost_psi_expr_0": null, + "cost_psi_expr_e": null, + "cost_r_in_psi_expr": null, + "cost_r_in_psi_expr_0": null, + "cost_r_in_psi_expr_e": null, + "cost_y_expr": null, + "cost_y_expr_0": null, + "cost_y_expr_e": null, + "disc_dyn_expr": null, + "dyn_disc_fun": null, + "dyn_disc_fun_jac": null, + "dyn_disc_fun_jac_hess": null, + "dyn_ext_fun_type": "casadi", + "dyn_generic_source": null, + "f_expl_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaacaaaaaaaghbdegpcaaaaaaaaaaaaaagaaaaaaaegehigfgehbgegeaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachpbfilobfilojdcaeegpcaaaaaaaaaaaaaabaaaaaaangegoaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaehigfgehbgegnaaaaaaaaaaaaaaachgaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachkjjjjjjjjjjjjopdcheaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaageegcaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaanecheaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaachhaaaaaaaaaaaaaaachhaaaaaaaaaaaaaaaegeaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachbbaaaaaaaaaaaaaachhaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachlaaaaaaaaaaaaaaacheaaaaaaaaaaaaaaachhaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaachcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachdaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaachdbaaaaaaaaaaaaaacheaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachlaaaaaaaaaaaaaaachhbaaaaaaaaaaaaaa", + "f_impl_expr": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaihbdpfegpgehegpcaaaaaaaaaaaaaacaaaaaaaghbdegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaajaaaaaaaehigfgehbgpfegpgehegpcaaaaaaaaaaaaaagaaaaaaaegehigfgehbgegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaghbdpfegpgehegeaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachpbfilobfilojdcaeegpcaaaaaaaaaaaaaabaaaaaaangegoaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaafaaaaaaaehigfgehbgegnaaaaaaaaaaaaaaachlaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegmcaaaaaaaaaaaaaachkjjjjjjjjjjjjopdchjaaaaaaaaaaaaaaachoaaaaaaaaaaaaaaachfaaaaaaaaaaaaaaachfaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaageegcaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaanechjaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachjaaaaaaaaaaaaaaachmaaaaaaaaaaaaaaachmaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaakaaaaaaaegehigfgehbgpfegpgehegeaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaaegcaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachgbaaaaaaaaaaaaaachmaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachabaaaaaaaaaaaaaachjaaaaaaaaaaaaaaachmaaaaaaaaaaaaaaachoaaaaaaaaaaaaaaachfaaaaaaaaaaaaaaachfaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachiaaaaaaaaaaaaaaaegbaaaaaaaaaaaaaaachibaaaaaaaaaaaaaachjaaaaaaaaaaaaaaachoaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaachabaaaaaaaaaaaaaachmbaaaaaaaaaaaaaa", + "gnsf": { + "nontrivial_f_LO": 1, + "purely_linear": 0 + }, + "name": "mock_acados_solver", + "nu_original": null, + "p": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaeggaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaaneegpcaaaaaaaaaaaaaabaaaaaaang", + "t": [], + "t_label": "t", + "u": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegfaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaabaaaaaaage", + "u_labels": null, + "x": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaacaaaaaaaihbdegpcaaaaaaaaaaaaaafaaaaaaaehigfgehbgegpcaaaaaaaaaaaaaacaaaaaaaghbdegpcaaaaaaaaaaaaaagaaaaaaaegehigfgehbg", + "x_labels": null, + "xdot": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegiaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaacaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaegpcaaaaaaaaaaaaaagaaaaaaaihbdpfegpgehegpcaaaaaaaaaaaaaajaaaaaaaehigfgehbgpfegpgehegpcaaaaaaaaaaaaaagaaaaaaaghbdpfegpgehegpcaaaaaaaaaaaaaakaaaaaaaegehigfgehbgpfegpgeh", + "z": "jhpnnagiieahaaaadaaaaaaaaaaaaaaaaaegdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + }, + "name": "mock_acados_solver", + "parameter_values": [ + 1.0, + 0.1 + ], + "problem_class": "OCP", + "shared_lib_ext": ".so", + "simulink_opts": null, + "solver_options": { + "Tsim": 0.05, + "alpha_min": 0.05, + "alpha_reduction": 0.7, + "as_rti_iter": 1, + "as_rti_level": 4, + "collocation_type": "GAUSS_LEGENDRE", + "cost_discretization": "EULER", + "custom_templates": [], + "custom_update_copy": true, + "custom_update_filename": "", + "custom_update_header_filename": "", + "eps_sufficient_descent": 0.0001, + "exact_hess_constr": 1, + "exact_hess_cost": 1, + "exact_hess_dyn": 1, + "ext_cost_num_hess": 0, + "ext_fun_compile_flags": "-O2", + "fixed_hess": 0, + "full_step_dual": 0, + "globalization": "FIXED_STEP", + "globalization_use_SOC": 0, + "hessian_approx": "EXACT", + "hpipm_mode": "BALANCE", + "initialize_t_slacks": 0, + "integrator_type": "IRK", + "levenberg_marquardt": 0.0, + "line_search_use_sufficient_descent": 0, + "model_external_shared_lib_dir": null, + "model_external_shared_lib_name": null, + "nlp_solver_ext_qp_res": 0, + "nlp_solver_max_iter": 100, + "nlp_solver_step_length": 1.0, + "nlp_solver_tol_comp": 1e-06, + "nlp_solver_tol_eq": 1e-06, + "nlp_solver_tol_ineq": 1e-06, + "nlp_solver_tol_stat": 1e-06, + "nlp_solver_type": "SQP", + "print_level": 0, + "qp_solver": "PARTIAL_CONDENSING_HPIPM", + "qp_solver_cond_N": 20, + "qp_solver_cond_ric_alg": 1, + "qp_solver_iter_max": 50, + "qp_solver_ric_alg": 1, + "qp_solver_tol_comp": null, + "qp_solver_tol_eq": null, + "qp_solver_tol_ineq": null, + "qp_solver_tol_stat": null, + "qp_solver_warm_start": 0, + "reg_epsilon": 0.0001, + "regularize_method": "NO_REGULARIZE", + "rti_log_residuals": 0, + "shooting_nodes": [ + 0.0, + 0.05, + 0.1, + 0.15000000000000002, + 0.2, + 0.25, + 0.3, + 0.35, + 0.39999999999999997, + 0.44999999999999996, + 0.49999999999999994, + 0.5499999999999999, + 0.6, + 0.65, + 0.7000000000000001, + 0.7500000000000001, + 0.8000000000000002, + 0.8500000000000002, + 0.9000000000000002, + 0.9500000000000003, + 1.0000000000000002 + ], + "sim_method_jac_reuse": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sim_method_newton_iter": 3, + "sim_method_newton_tol": 0.0, + "sim_method_num_stages": [ + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + "sim_method_num_steps": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "tf": 1.0, + "time_steps": [ + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05, + 0.05 + ], + "with_solution_sens_wrt_params": false, + "with_value_sens_wrt_params": false + }, + "zoro_description": null +} \ No newline at end of file diff --git a/acados_solver_base/test/mock_acados_solver/add_pluging_to_build.cmake b/acados_solver_base/test/mock_acados_solver/add_pluging_to_build.cmake new file mode 100644 index 0000000..9de7a92 --- /dev/null +++ b/acados_solver_base/test/mock_acados_solver/add_pluging_to_build.cmake @@ -0,0 +1,39 @@ +# Copyright 2023 ICUBE Laboratory, University of Strasbourg +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Author: Thibault Poignonec (tpoignonec@unistra.fr) + +# set(ACADOS_SOLVER_PLUGINGS_GENERATION_EXPORT_DIR ...) in parent CMakeLists! + +# Add header and source files for the plugin +list(APPEND + SOLVER_PLUGINS_SOURCES + ${ACADOS_SOLVER_PLUGINGS_GENERATION_EXPORT_DIR}/mock_acados_solver/mock_acados_solver.hpp +) +list(APPEND + SOLVER_PLUGINS_SOURCES + ${ACADOS_SOLVER_PLUGINGS_GENERATION_EXPORT_DIR}/mock_acados_solver/mock_acados_solver.cpp +) + +# Add .so generated C-code +list(APPEND + SOLVER_PLUGINS_PRE_GENERATED_LIBS + ${ACADOS_SOLVER_PLUGINGS_GENERATION_EXPORT_DIR}/mock_acados_solver/generated_c_code/libacados_ocp_solver_mock_acados_solver.so +) + +# Add plugin.xml +list(APPEND + SOLVER_PLUGINS_EXPORT_XML_FILES + ${ACADOS_SOLVER_PLUGINGS_GENERATION_EXPORT_DIR}/mock_acados_solver/export_plugin.xml +) \ No newline at end of file diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.c index aaaf301..d2a1a5d 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.c @@ -48,300 +48,262 @@ // ** solver data ** -sim_solver_capsule * mock_acados_solver_acados_sim_solver_create_capsule() +mock_acados_solver_sim_solver_capsule * mock_acados_solver_acados_sim_solver_create_capsule() { - void * capsule_mem = malloc(sizeof(sim_solver_capsule)); - sim_solver_capsule * capsule = (sim_solver_capsule *) capsule_mem; + void* capsule_mem = malloc(sizeof(mock_acados_solver_sim_solver_capsule)); + mock_acados_solver_sim_solver_capsule *capsule = (mock_acados_solver_sim_solver_capsule *) capsule_mem; - return capsule; + return capsule; } -int mock_acados_solver_acados_sim_solver_free_capsule(sim_solver_capsule * capsule) +int mock_acados_solver_acados_sim_solver_free_capsule(mock_acados_solver_sim_solver_capsule * capsule) { - free(capsule); - return 0; + free(capsule); + return 0; } -int mock_acados_solver_acados_sim_create(sim_solver_capsule * capsule) +int mock_acados_solver_acados_sim_create(mock_acados_solver_sim_solver_capsule * capsule) { - // initialize - const int nx = MOCK_ACADOS_SOLVER_NX; - const int nu = MOCK_ACADOS_SOLVER_NU; - const int nz = MOCK_ACADOS_SOLVER_NZ; - const int np = MOCK_ACADOS_SOLVER_NP; - bool tmp_bool; - - - double Tsim = 0.05; - - - capsule->sim_impl_dae_fun = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - capsule->sim_impl_dae_fun_jac_x_xdot_z = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - capsule->sim_impl_dae_jac_x_xdot_u_z = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - // external functions (implicit model) - capsule->sim_impl_dae_fun->casadi_fun = &mock_acados_solver_impl_dae_fun; - capsule->sim_impl_dae_fun->casadi_work = &mock_acados_solver_impl_dae_fun_work; - capsule->sim_impl_dae_fun->casadi_sparsity_in = &mock_acados_solver_impl_dae_fun_sparsity_in; - capsule->sim_impl_dae_fun->casadi_sparsity_out = &mock_acados_solver_impl_dae_fun_sparsity_out; - capsule->sim_impl_dae_fun->casadi_n_in = &mock_acados_solver_impl_dae_fun_n_in; - capsule->sim_impl_dae_fun->casadi_n_out = &mock_acados_solver_impl_dae_fun_n_out; - external_function_param_casadi_create(capsule->sim_impl_dae_fun, np); - - capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_fun = - &mock_acados_solver_impl_dae_fun_jac_x_xdot_z; - capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_work = - &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_work; - capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_sparsity_in = - &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_in; - capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_sparsity_out = - &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_out; - capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_n_in = - &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_in; - capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_n_out = - &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_out; - external_function_param_casadi_create(capsule->sim_impl_dae_fun_jac_x_xdot_z, np); - - // external_function_param_casadi impl_dae_jac_x_xdot_u_z; - capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_fun = &mock_acados_solver_impl_dae_jac_x_xdot_u_z; - capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_work = - &mock_acados_solver_impl_dae_jac_x_xdot_u_z_work; - capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_sparsity_in = - &mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_in; - capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_sparsity_out = - &mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_out; - capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_n_in = - &mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_in; - capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_n_out = - &mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_out; - external_function_param_casadi_create(capsule->sim_impl_dae_jac_x_xdot_u_z, np); - capsule->sim_impl_dae_hess = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); - // external_function_param_casadi impl_dae_jac_x_xdot_u_z; - capsule->sim_impl_dae_hess->casadi_fun = &mock_acados_solver_impl_dae_hess; - capsule->sim_impl_dae_hess->casadi_work = &mock_acados_solver_impl_dae_hess_work; - capsule->sim_impl_dae_hess->casadi_sparsity_in = &mock_acados_solver_impl_dae_hess_sparsity_in; - capsule->sim_impl_dae_hess->casadi_sparsity_out = &mock_acados_solver_impl_dae_hess_sparsity_out; - capsule->sim_impl_dae_hess->casadi_n_in = &mock_acados_solver_impl_dae_hess_n_in; - capsule->sim_impl_dae_hess->casadi_n_out = &mock_acados_solver_impl_dae_hess_n_out; - external_function_param_casadi_create(capsule->sim_impl_dae_hess, np); - - - // sim plan & config - sim_solver_plan_t plan; - plan.sim_solver = IRK; - - // create correct config based on plan - sim_config * mock_acados_solver_sim_config = sim_config_create(plan); - capsule->acados_sim_config = mock_acados_solver_sim_config; - - // sim dims - void * mock_acados_solver_sim_dims = sim_dims_create(mock_acados_solver_sim_config); - capsule->acados_sim_dims = mock_acados_solver_sim_dims; - sim_dims_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, "nx", &nx); - sim_dims_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, "nu", &nu); - sim_dims_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, "nz", &nz); - - - // sim opts - sim_opts * mock_acados_solver_sim_opts = sim_opts_create( - mock_acados_solver_sim_config, - mock_acados_solver_sim_dims); - capsule->acados_sim_opts = mock_acados_solver_sim_opts; - int tmp_int = 3; - sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "newton_iter", &tmp_int); - double tmp_double = 0; - sim_opts_set( - mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "newton_tol", - &tmp_double); - sim_collocation_type collocation_type = GAUSS_LEGENDRE; - sim_opts_set( - mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "collocation_type", - &collocation_type); - - - tmp_int = 4; - sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "num_stages", &tmp_int); - tmp_int = 1; - sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "num_steps", &tmp_int); - tmp_bool = 0; - sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "jac_reuse", &tmp_bool); - - - // sim in / out - sim_in * mock_acados_solver_sim_in = sim_in_create( - mock_acados_solver_sim_config, - mock_acados_solver_sim_dims); - capsule->acados_sim_in = mock_acados_solver_sim_in; - sim_out * mock_acados_solver_sim_out = sim_out_create( - mock_acados_solver_sim_config, - mock_acados_solver_sim_dims); - capsule->acados_sim_out = mock_acados_solver_sim_out; - - sim_in_set( - mock_acados_solver_sim_config, mock_acados_solver_sim_dims, - mock_acados_solver_sim_in, "T", &Tsim); - - // model functions - mock_acados_solver_sim_config->model_set( - mock_acados_solver_sim_in->model, - "impl_ode_fun", capsule->sim_impl_dae_fun); - mock_acados_solver_sim_config->model_set( - mock_acados_solver_sim_in->model, - "impl_ode_fun_jac_x_xdot", capsule->sim_impl_dae_fun_jac_x_xdot_z); - mock_acados_solver_sim_config->model_set( - mock_acados_solver_sim_in->model, - "impl_ode_jac_x_xdot_u", capsule->sim_impl_dae_jac_x_xdot_u_z); - mock_acados_solver_sim_config->model_set( - mock_acados_solver_sim_in->model, - "impl_dae_hess", capsule->sim_impl_dae_hess); - - // sim solver - sim_solver * mock_acados_solver_sim_solver = sim_solver_create( - mock_acados_solver_sim_config, - mock_acados_solver_sim_dims, mock_acados_solver_sim_opts); - capsule->acados_sim_solver = mock_acados_solver_sim_solver; - - - /* initialize parameter values */ - double * p = calloc(np, sizeof(double)); - - p[0] = 1; - p[1] = 0.1; - - mock_acados_solver_acados_sim_update_params(capsule, p, np); - free(p); - - - /* initialize input */ - // x - double x0[4]; - for (int ii = 0; ii < 4; ii++) { - x0[ii] = 0.0; - } - - sim_in_set( - mock_acados_solver_sim_config, mock_acados_solver_sim_dims, - mock_acados_solver_sim_in, "x", x0); - - - // u - double u0[1]; - for (int ii = 0; ii < 1; ii++) { - u0[ii] = 0.0; - } - - sim_in_set( - mock_acados_solver_sim_config, mock_acados_solver_sim_dims, - mock_acados_solver_sim_in, "u", u0); - - // S_forw - double S_forw[20]; - for (int ii = 0; ii < 20; ii++) { - S_forw[ii] = 0.0; - } - for (int ii = 0; ii < 4; ii++) { - S_forw[ii + ii * 4] = 1.0; - } - - - sim_in_set( - mock_acados_solver_sim_config, mock_acados_solver_sim_dims, - mock_acados_solver_sim_in, "S_forw", S_forw); - - int status = sim_precompute( - mock_acados_solver_sim_solver, mock_acados_solver_sim_in, - mock_acados_solver_sim_out); - - return status; + // initialize + const int nx = MOCK_ACADOS_SOLVER_NX; + const int nu = MOCK_ACADOS_SOLVER_NU; + const int nz = MOCK_ACADOS_SOLVER_NZ; + const int np = MOCK_ACADOS_SOLVER_NP; + bool tmp_bool; + + + double Tsim = 0.05; + + + capsule->sim_impl_dae_fun = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); + capsule->sim_impl_dae_fun_jac_x_xdot_z = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); + capsule->sim_impl_dae_jac_x_xdot_u_z = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); + // external functions (implicit model) + capsule->sim_impl_dae_fun->casadi_fun = &mock_acados_solver_impl_dae_fun; + capsule->sim_impl_dae_fun->casadi_work = &mock_acados_solver_impl_dae_fun_work; + capsule->sim_impl_dae_fun->casadi_sparsity_in = &mock_acados_solver_impl_dae_fun_sparsity_in; + capsule->sim_impl_dae_fun->casadi_sparsity_out = &mock_acados_solver_impl_dae_fun_sparsity_out; + capsule->sim_impl_dae_fun->casadi_n_in = &mock_acados_solver_impl_dae_fun_n_in; + capsule->sim_impl_dae_fun->casadi_n_out = &mock_acados_solver_impl_dae_fun_n_out; + external_function_param_casadi_create(capsule->sim_impl_dae_fun, np); + + capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_fun = &mock_acados_solver_impl_dae_fun_jac_x_xdot_z; + capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_work = &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_work; + capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_sparsity_in = &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_in; + capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_sparsity_out = &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_out; + capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_n_in = &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_in; + capsule->sim_impl_dae_fun_jac_x_xdot_z->casadi_n_out = &mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_out; + external_function_param_casadi_create(capsule->sim_impl_dae_fun_jac_x_xdot_z, np); + + // external_function_param_casadi impl_dae_jac_x_xdot_u_z; + capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_fun = &mock_acados_solver_impl_dae_jac_x_xdot_u_z; + capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_work = &mock_acados_solver_impl_dae_jac_x_xdot_u_z_work; + capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_sparsity_in = &mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_in; + capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_sparsity_out = &mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_out; + capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_n_in = &mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_in; + capsule->sim_impl_dae_jac_x_xdot_u_z->casadi_n_out = &mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_out; + external_function_param_casadi_create(capsule->sim_impl_dae_jac_x_xdot_u_z, np); + capsule->sim_impl_dae_hess = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)); + // external_function_param_casadi impl_dae_jac_x_xdot_u_z; + capsule->sim_impl_dae_hess->casadi_fun = &mock_acados_solver_impl_dae_hess; + capsule->sim_impl_dae_hess->casadi_work = &mock_acados_solver_impl_dae_hess_work; + capsule->sim_impl_dae_hess->casadi_sparsity_in = &mock_acados_solver_impl_dae_hess_sparsity_in; + capsule->sim_impl_dae_hess->casadi_sparsity_out = &mock_acados_solver_impl_dae_hess_sparsity_out; + capsule->sim_impl_dae_hess->casadi_n_in = &mock_acados_solver_impl_dae_hess_n_in; + capsule->sim_impl_dae_hess->casadi_n_out = &mock_acados_solver_impl_dae_hess_n_out; + external_function_param_casadi_create(capsule->sim_impl_dae_hess, np); + + + + // sim plan & config + sim_solver_plan_t plan; + plan.sim_solver = IRK; + + // create correct config based on plan + sim_config * mock_acados_solver_sim_config = sim_config_create(plan); + capsule->acados_sim_config = mock_acados_solver_sim_config; + + // sim dims + void *mock_acados_solver_sim_dims = sim_dims_create(mock_acados_solver_sim_config); + capsule->acados_sim_dims = mock_acados_solver_sim_dims; + sim_dims_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, "nx", &nx); + sim_dims_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, "nu", &nu); + sim_dims_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, "nz", &nz); + + + // sim opts + sim_opts *mock_acados_solver_sim_opts = sim_opts_create(mock_acados_solver_sim_config, mock_acados_solver_sim_dims); + capsule->acados_sim_opts = mock_acados_solver_sim_opts; + int tmp_int = 3; + sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "newton_iter", &tmp_int); + double tmp_double = 0; + sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "newton_tol", &tmp_double); + sim_collocation_type collocation_type = GAUSS_LEGENDRE; + sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "collocation_type", &collocation_type); + + + tmp_int = 4; + sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "num_stages", &tmp_int); + tmp_int = 1; + sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "num_steps", &tmp_int); + tmp_bool = 0; + sim_opts_set(mock_acados_solver_sim_config, mock_acados_solver_sim_opts, "jac_reuse", &tmp_bool); + + + // sim in / out + sim_in *mock_acados_solver_sim_in = sim_in_create(mock_acados_solver_sim_config, mock_acados_solver_sim_dims); + capsule->acados_sim_in = mock_acados_solver_sim_in; + sim_out *mock_acados_solver_sim_out = sim_out_create(mock_acados_solver_sim_config, mock_acados_solver_sim_dims); + capsule->acados_sim_out = mock_acados_solver_sim_out; + + sim_in_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, + mock_acados_solver_sim_in, "T", &Tsim); + + // model functions + mock_acados_solver_sim_config->model_set(mock_acados_solver_sim_in->model, + "impl_ode_fun", capsule->sim_impl_dae_fun); + mock_acados_solver_sim_config->model_set(mock_acados_solver_sim_in->model, + "impl_ode_fun_jac_x_xdot", capsule->sim_impl_dae_fun_jac_x_xdot_z); + mock_acados_solver_sim_config->model_set(mock_acados_solver_sim_in->model, + "impl_ode_jac_x_xdot_u", capsule->sim_impl_dae_jac_x_xdot_u_z); + mock_acados_solver_sim_config->model_set(mock_acados_solver_sim_in->model, + "impl_dae_hess", capsule->sim_impl_dae_hess); + + // sim solver + sim_solver *mock_acados_solver_sim_solver = sim_solver_create(mock_acados_solver_sim_config, + mock_acados_solver_sim_dims, mock_acados_solver_sim_opts); + capsule->acados_sim_solver = mock_acados_solver_sim_solver; + + + /* initialize parameter values */ + double* p = calloc(np, sizeof(double)); + + p[0] = 1; + p[1] = 0.1; + + mock_acados_solver_acados_sim_update_params(capsule, p, np); + free(p); + + + /* initialize input */ + // x + double x0[4]; + for (int ii = 0; ii < 4; ii++) + x0[ii] = 0.0; + + sim_in_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, + mock_acados_solver_sim_in, "x", x0); + + + // u + double u0[1]; + for (int ii = 0; ii < 1; ii++) + u0[ii] = 0.0; + + sim_in_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, + mock_acados_solver_sim_in, "u", u0); + + // S_forw + double S_forw[20]; + for (int ii = 0; ii < 20; ii++) + S_forw[ii] = 0.0; + for (int ii = 0; ii < 4; ii++) + S_forw[ii + ii * 4 ] = 1.0; + + + sim_in_set(mock_acados_solver_sim_config, mock_acados_solver_sim_dims, + mock_acados_solver_sim_in, "S_forw", S_forw); + + int status = sim_precompute(mock_acados_solver_sim_solver, mock_acados_solver_sim_in, mock_acados_solver_sim_out); + + return status; } -int mock_acados_solver_acados_sim_solve(sim_solver_capsule * capsule) +int mock_acados_solver_acados_sim_solve(mock_acados_solver_sim_solver_capsule *capsule) { - // integrate dynamics using acados sim_solver - int status = sim_solve( - capsule->acados_sim_solver, - capsule->acados_sim_in, capsule->acados_sim_out); - if (status != 0) { - printf("error in mock_acados_solver_acados_sim_solve()! Exiting.\n"); - } - - return status; + // integrate dynamics using acados sim_solver + int status = sim_solve(capsule->acados_sim_solver, + capsule->acados_sim_in, capsule->acados_sim_out); + if (status != 0) + printf("error in mock_acados_solver_acados_sim_solve()! Exiting.\n"); + + return status; } -int mock_acados_solver_acados_sim_free(sim_solver_capsule * capsule) +int mock_acados_solver_acados_sim_free(mock_acados_solver_sim_solver_capsule *capsule) { - // free memory - sim_solver_destroy(capsule->acados_sim_solver); - sim_in_destroy(capsule->acados_sim_in); - sim_out_destroy(capsule->acados_sim_out); - sim_opts_destroy(capsule->acados_sim_opts); - sim_dims_destroy(capsule->acados_sim_dims); - sim_config_destroy(capsule->acados_sim_config); - - // free external function - external_function_param_casadi_free(capsule->sim_impl_dae_fun); - external_function_param_casadi_free(capsule->sim_impl_dae_fun_jac_x_xdot_z); - external_function_param_casadi_free(capsule->sim_impl_dae_jac_x_xdot_u_z); - external_function_param_casadi_free(capsule->sim_impl_dae_hess); - - return 0; + // free memory + sim_solver_destroy(capsule->acados_sim_solver); + sim_in_destroy(capsule->acados_sim_in); + sim_out_destroy(capsule->acados_sim_out); + sim_opts_destroy(capsule->acados_sim_opts); + sim_dims_destroy(capsule->acados_sim_dims); + sim_config_destroy(capsule->acados_sim_config); + + // free external function + external_function_param_casadi_free(capsule->sim_impl_dae_fun); + external_function_param_casadi_free(capsule->sim_impl_dae_fun_jac_x_xdot_z); + external_function_param_casadi_free(capsule->sim_impl_dae_jac_x_xdot_u_z); + free(capsule->sim_impl_dae_fun); + free(capsule->sim_impl_dae_fun_jac_x_xdot_z); + free(capsule->sim_impl_dae_jac_x_xdot_u_z); + external_function_param_casadi_free(capsule->sim_impl_dae_hess); + free(capsule->sim_impl_dae_hess); + + return 0; } -int mock_acados_solver_acados_sim_update_params(sim_solver_capsule * capsule, double * p, int np) +int mock_acados_solver_acados_sim_update_params(mock_acados_solver_sim_solver_capsule *capsule, double *p, int np) { - int status = 0; - int casadi_np = MOCK_ACADOS_SOLVER_NP; - - if (casadi_np != np) { - printf( - "mock_acados_solver_acados_sim_update_params: trying to set %i parameters for external functions." - " External function has %i parameters. Exiting.\n", np, - casadi_np); - exit(1); - } - capsule->sim_impl_dae_fun[0].set_param(capsule->sim_impl_dae_fun, p); - capsule->sim_impl_dae_fun_jac_x_xdot_z[0].set_param(capsule->sim_impl_dae_fun_jac_x_xdot_z, p); - capsule->sim_impl_dae_jac_x_xdot_u_z[0].set_param(capsule->sim_impl_dae_jac_x_xdot_u_z, p); - capsule->sim_impl_dae_hess[0].set_param(capsule->sim_impl_dae_hess, p); - - return status; + int status = 0; + int casadi_np = MOCK_ACADOS_SOLVER_NP; + + if (casadi_np != np) { + printf("mock_acados_solver_acados_sim_update_params: trying to set %i parameters for external functions." + " External function has %i parameters. Exiting.\n", np, casadi_np); + exit(1); + } + capsule->sim_impl_dae_fun[0].set_param(capsule->sim_impl_dae_fun, p); + capsule->sim_impl_dae_fun_jac_x_xdot_z[0].set_param(capsule->sim_impl_dae_fun_jac_x_xdot_z, p); + capsule->sim_impl_dae_jac_x_xdot_u_z[0].set_param(capsule->sim_impl_dae_jac_x_xdot_u_z, p); + capsule->sim_impl_dae_hess[0].set_param(capsule->sim_impl_dae_hess, p); + + return status; } /* getters pointers to C objects*/ -sim_config * mock_acados_solver_acados_get_sim_config(sim_solver_capsule * capsule) +sim_config * mock_acados_solver_acados_get_sim_config(mock_acados_solver_sim_solver_capsule *capsule) { - return capsule->acados_sim_config; -} + return capsule->acados_sim_config; +}; -sim_in * mock_acados_solver_acados_get_sim_in(sim_solver_capsule * capsule) +sim_in * mock_acados_solver_acados_get_sim_in(mock_acados_solver_sim_solver_capsule *capsule) { - return capsule->acados_sim_in; -} + return capsule->acados_sim_in; +}; -sim_out * mock_acados_solver_acados_get_sim_out(sim_solver_capsule * capsule) +sim_out * mock_acados_solver_acados_get_sim_out(mock_acados_solver_sim_solver_capsule *capsule) { - return capsule->acados_sim_out; -} + return capsule->acados_sim_out; +}; -void * mock_acados_solver_acados_get_sim_dims(sim_solver_capsule * capsule) +void * mock_acados_solver_acados_get_sim_dims(mock_acados_solver_sim_solver_capsule *capsule) { - return capsule->acados_sim_dims; -} + return capsule->acados_sim_dims; +}; -sim_opts * mock_acados_solver_acados_get_sim_opts(sim_solver_capsule * capsule) +sim_opts * mock_acados_solver_acados_get_sim_opts(mock_acados_solver_sim_solver_capsule *capsule) { - return capsule->acados_sim_opts; -} + return capsule->acados_sim_opts; +}; -sim_solver * mock_acados_solver_acados_get_sim_solver(sim_solver_capsule * capsule) +sim_solver * mock_acados_solver_acados_get_sim_solver(mock_acados_solver_sim_solver_capsule *capsule) { - return capsule->acados_sim_solver; -} + return capsule->acados_sim_solver; +}; + diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.h b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.h index ca462a9..ee62d84 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.h +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_sim_solver_mock_acados_solver.h @@ -45,60 +45,54 @@ extern "C" { // ** capsule for solver data ** -typedef struct sim_solver_capsule +typedef struct mock_acados_solver_sim_solver_capsule { - // acados objects - sim_in * acados_sim_in; - sim_out * acados_sim_out; - sim_solver * acados_sim_solver; - sim_opts * acados_sim_opts; - sim_config * acados_sim_config; - void * acados_sim_dims; - - /* external functions */ - // ERK - external_function_param_casadi * sim_forw_vde_casadi; - external_function_param_casadi * sim_vde_adj_casadi; - external_function_param_casadi * sim_expl_ode_fun_casadi; - external_function_param_casadi * sim_expl_ode_hess; - - // IRK - external_function_param_casadi * sim_impl_dae_fun; - external_function_param_casadi * sim_impl_dae_fun_jac_x_xdot_z; - external_function_param_casadi * sim_impl_dae_jac_x_xdot_u_z; - external_function_param_casadi * sim_impl_dae_hess; - - // GNSF - external_function_param_casadi * sim_gnsf_phi_fun; - external_function_param_casadi * sim_gnsf_phi_fun_jac_y; - external_function_param_casadi * sim_gnsf_phi_jac_y_uhat; - external_function_param_casadi * sim_gnsf_f_lo_jac_x1_x1dot_u_z; - external_function_param_casadi * sim_gnsf_get_matrices_fun; - -} sim_solver_capsule; - - -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_create(sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_solve(sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_free(sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_update_params( - sim_solver_capsule * capsule, - double * value, int np); - -ACADOS_SYMBOL_EXPORT sim_config * mock_acados_solver_acados_get_sim_config( - sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT sim_in * mock_acados_solver_acados_get_sim_in(sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT sim_out * mock_acados_solver_acados_get_sim_out(sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT void * mock_acados_solver_acados_get_sim_dims(sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT sim_opts * mock_acados_solver_acados_get_sim_opts( - sim_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT sim_solver * mock_acados_solver_acados_get_sim_solver( - sim_solver_capsule * capsule); - - -ACADOS_SYMBOL_EXPORT sim_solver_capsule * mock_acados_solver_acados_sim_solver_create_capsule(void); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_solver_free_capsule( - sim_solver_capsule * capsule); + // acados objects + sim_in *acados_sim_in; + sim_out *acados_sim_out; + sim_solver *acados_sim_solver; + sim_opts *acados_sim_opts; + sim_config *acados_sim_config; + void *acados_sim_dims; + + /* external functions */ + // ERK + external_function_param_casadi * sim_forw_vde_casadi; + external_function_param_casadi * sim_vde_adj_casadi; + external_function_param_casadi * sim_expl_ode_fun_casadi; + external_function_param_casadi * sim_expl_ode_hess; + + // IRK + external_function_param_casadi * sim_impl_dae_fun; + external_function_param_casadi * sim_impl_dae_fun_jac_x_xdot_z; + external_function_param_casadi * sim_impl_dae_jac_x_xdot_u_z; + external_function_param_casadi * sim_impl_dae_hess; + + // GNSF + external_function_param_casadi * sim_gnsf_phi_fun; + external_function_param_casadi * sim_gnsf_phi_fun_jac_y; + external_function_param_casadi * sim_gnsf_phi_jac_y_uhat; + external_function_param_casadi * sim_gnsf_f_lo_jac_x1_x1dot_u_z; + external_function_param_casadi * sim_gnsf_get_matrices_fun; + +} mock_acados_solver_sim_solver_capsule; + + +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_create(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_solve(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_free(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_update_params(mock_acados_solver_sim_solver_capsule *capsule, double *value, int np); + +ACADOS_SYMBOL_EXPORT sim_config * mock_acados_solver_acados_get_sim_config(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT sim_in * mock_acados_solver_acados_get_sim_in(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT sim_out * mock_acados_solver_acados_get_sim_out(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT void * mock_acados_solver_acados_get_sim_dims(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT sim_opts * mock_acados_solver_acados_get_sim_opts(mock_acados_solver_sim_solver_capsule *capsule); +ACADOS_SYMBOL_EXPORT sim_solver * mock_acados_solver_acados_get_sim_solver(mock_acados_solver_sim_solver_capsule *capsule); + + +ACADOS_SYMBOL_EXPORT mock_acados_solver_sim_solver_capsule * mock_acados_solver_acados_sim_solver_create_capsule(void); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_sim_solver_free_capsule(mock_acados_solver_sim_solver_capsule *capsule); #ifdef __cplusplus } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.c index 25c8248..e6a1f69 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.c @@ -39,323 +39,354 @@ // example specific #include "mock_acados_solver_model/mock_acados_solver_model.h" -#include "mock_acados_solver_constraints/mock_acados_solver_constraints.h" #include "mock_acados_solver_cost/mock_acados_solver_cost.h" + #include "acados_solver_mock_acados_solver.h" #define NX MOCK_ACADOS_SOLVER_NX #define NZ MOCK_ACADOS_SOLVER_NZ #define NU MOCK_ACADOS_SOLVER_NU #define NP MOCK_ACADOS_SOLVER_NP +#define NY0 MOCK_ACADOS_SOLVER_NY0 +#define NY MOCK_ACADOS_SOLVER_NY +#define NYN MOCK_ACADOS_SOLVER_NYN + #define NBX MOCK_ACADOS_SOLVER_NBX #define NBX0 MOCK_ACADOS_SOLVER_NBX0 #define NBU MOCK_ACADOS_SOLVER_NBU -#define NSBX MOCK_ACADOS_SOLVER_NSBX -#define NSBU MOCK_ACADOS_SOLVER_NSBU -#define NSH MOCK_ACADOS_SOLVER_NSH -#define NSG MOCK_ACADOS_SOLVER_NSG -#define NSPHI MOCK_ACADOS_SOLVER_NSPHI -#define NSHN MOCK_ACADOS_SOLVER_NSHN -#define NSGN MOCK_ACADOS_SOLVER_NSGN -#define NSPHIN MOCK_ACADOS_SOLVER_NSPHIN -#define NSBXN MOCK_ACADOS_SOLVER_NSBXN -#define NS MOCK_ACADOS_SOLVER_NS -#define NSN MOCK_ACADOS_SOLVER_NSN #define NG MOCK_ACADOS_SOLVER_NG #define NBXN MOCK_ACADOS_SOLVER_NBXN #define NGN MOCK_ACADOS_SOLVER_NGN -#define NY0 MOCK_ACADOS_SOLVER_NY0 -#define NY MOCK_ACADOS_SOLVER_NY -#define NYN MOCK_ACADOS_SOLVER_NYN -// #define N MOCK_ACADOS_SOLVER_N + #define NH MOCK_ACADOS_SOLVER_NH -#define NPHI MOCK_ACADOS_SOLVER_NPHI #define NHN MOCK_ACADOS_SOLVER_NHN +#define NH0 MOCK_ACADOS_SOLVER_NH0 +#define NPHI MOCK_ACADOS_SOLVER_NPHI #define NPHIN MOCK_ACADOS_SOLVER_NPHIN +#define NPHI0 MOCK_ACADOS_SOLVER_NPHI0 #define NR MOCK_ACADOS_SOLVER_NR +#define NS MOCK_ACADOS_SOLVER_NS +#define NS0 MOCK_ACADOS_SOLVER_NS0 +#define NSN MOCK_ACADOS_SOLVER_NSN + +#define NSBX MOCK_ACADOS_SOLVER_NSBX +#define NSBU MOCK_ACADOS_SOLVER_NSBU +#define NSH0 MOCK_ACADOS_SOLVER_NSH0 +#define NSH MOCK_ACADOS_SOLVER_NSH +#define NSHN MOCK_ACADOS_SOLVER_NSHN +#define NSG MOCK_ACADOS_SOLVER_NSG +#define NSPHI0 MOCK_ACADOS_SOLVER_NSPHI0 +#define NSPHI MOCK_ACADOS_SOLVER_NSPHI +#define NSPHIN MOCK_ACADOS_SOLVER_NSPHIN +#define NSGN MOCK_ACADOS_SOLVER_NSGN +#define NSBXN MOCK_ACADOS_SOLVER_NSBXN + + // ** solver data ** mock_acados_solver_solver_capsule * mock_acados_solver_acados_create_capsule(void) { - void * capsule_mem = malloc(sizeof(mock_acados_solver_solver_capsule)); - mock_acados_solver_solver_capsule * capsule = (mock_acados_solver_solver_capsule *) capsule_mem; + void* capsule_mem = malloc(sizeof(mock_acados_solver_solver_capsule)); + mock_acados_solver_solver_capsule *capsule = (mock_acados_solver_solver_capsule *) capsule_mem; - return capsule; + return capsule; } -int mock_acados_solver_acados_free_capsule(mock_acados_solver_solver_capsule * capsule) +int mock_acados_solver_acados_free_capsule(mock_acados_solver_solver_capsule *capsule) { - free(capsule); - return 0; + free(capsule); + return 0; } -int mock_acados_solver_acados_create(mock_acados_solver_solver_capsule * capsule) +int mock_acados_solver_acados_create(mock_acados_solver_solver_capsule* capsule) { - int N_shooting_intervals = MOCK_ACADOS_SOLVER_N; - double * new_time_steps = NULL; // NULL -> don't alter the code generated time-steps - return mock_acados_solver_acados_create_with_discretization( - capsule, N_shooting_intervals, - new_time_steps); + int N_shooting_intervals = MOCK_ACADOS_SOLVER_N; + double* new_time_steps = NULL; // NULL -> don't alter the code generated time-steps + return mock_acados_solver_acados_create_with_discretization(capsule, N_shooting_intervals, new_time_steps); } -int mock_acados_solver_acados_update_time_steps( - mock_acados_solver_solver_capsule * capsule, int N, - double * new_time_steps) +int mock_acados_solver_acados_update_time_steps(mock_acados_solver_solver_capsule* capsule, int N, double* new_time_steps) { - if (N != capsule->nlp_solver_plan->N) { - fprintf( - stderr, "mock_acados_solver_acados_update_time_steps: given number of time steps (= %d) " \ - "differs from the currently allocated number of " \ - "time steps (= %d)!\n" \ - "Please recreate with new discretization and provide a new vector of time_stamps!\n", - N, capsule->nlp_solver_plan->N); - return 1; - } + if (N != capsule->nlp_solver_plan->N) { + fprintf(stderr, "mock_acados_solver_acados_update_time_steps: given number of time steps (= %d) " \ + "differs from the currently allocated number of " \ + "time steps (= %d)!\n" \ + "Please recreate with new discretization and provide a new vector of time_stamps!\n", + N, capsule->nlp_solver_plan->N); + return 1; + } - ocp_nlp_config * nlp_config = capsule->nlp_config; - ocp_nlp_dims * nlp_dims = capsule->nlp_dims; - ocp_nlp_in * nlp_in = capsule->nlp_in; + ocp_nlp_config * nlp_config = capsule->nlp_config; + ocp_nlp_dims * nlp_dims = capsule->nlp_dims; + ocp_nlp_in * nlp_in = capsule->nlp_in; - for (int i = 0; i < N; i++) { - ocp_nlp_in_set(nlp_config, nlp_dims, nlp_in, i, "Ts", &new_time_steps[i]); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "scaling", &new_time_steps[i]); - } - return 0; + for (int i = 0; i < N; i++) + { + ocp_nlp_in_set(nlp_config, nlp_dims, nlp_in, i, "Ts", &new_time_steps[i]); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "scaling", &new_time_steps[i]); + } + return 0; } /** * Internal function for mock_acados_solver_acados_create: step 1 */ -void mock_acados_solver_acados_create_1_set_plan(ocp_nlp_plan_t * nlp_solver_plan, const int N) +void mock_acados_solver_acados_create_1_set_plan(ocp_nlp_plan_t* nlp_solver_plan, const int N) { - assert(N == nlp_solver_plan->N); + assert(N == nlp_solver_plan->N); - /************************************************ - * plan - ************************************************/ - nlp_solver_plan->nlp_solver = SQP; + /************************************************ + * plan + ************************************************/ - nlp_solver_plan->ocp_qp_solver_plan.qp_solver = PARTIAL_CONDENSING_HPIPM; + nlp_solver_plan->nlp_solver = SQP; - nlp_solver_plan->nlp_cost[0] = EXTERNAL; - for (int i = 1; i < N; i++) { - nlp_solver_plan->nlp_cost[i] = EXTERNAL; - } + nlp_solver_plan->ocp_qp_solver_plan.qp_solver = PARTIAL_CONDENSING_HPIPM; - nlp_solver_plan->nlp_cost[N] = EXTERNAL; + nlp_solver_plan->nlp_cost[0] = EXTERNAL; + for (int i = 1; i < N; i++) + nlp_solver_plan->nlp_cost[i] = EXTERNAL; - for (int i = 0; i < N; i++) { - nlp_solver_plan->nlp_dynamics[i] = CONTINUOUS_MODEL; - nlp_solver_plan->sim_solver_plan[i].sim_solver = IRK; - } + nlp_solver_plan->nlp_cost[N] = EXTERNAL; - for (int i = 0; i < N; i++) { - nlp_solver_plan->nlp_constraints[i] = BGH; - } - nlp_solver_plan->nlp_constraints[N] = BGH; + for (int i = 0; i < N; i++) + { + nlp_solver_plan->nlp_dynamics[i] = CONTINUOUS_MODEL; + nlp_solver_plan->sim_solver_plan[i].sim_solver = IRK; + } + + nlp_solver_plan->nlp_constraints[0] = BGH; + + for (int i = 1; i < N; i++) + { + nlp_solver_plan->nlp_constraints[i] = BGH; + } + nlp_solver_plan->nlp_constraints[N] = BGH; + + nlp_solver_plan->regularization = NO_REGULARIZE; } /** * Internal function for mock_acados_solver_acados_create: step 2 */ -ocp_nlp_dims * mock_acados_solver_acados_create_2_create_and_set_dimensions( - mock_acados_solver_solver_capsule * capsule) +ocp_nlp_dims* mock_acados_solver_acados_create_2_create_and_set_dimensions(mock_acados_solver_solver_capsule* capsule) { - ocp_nlp_plan_t * nlp_solver_plan = capsule->nlp_solver_plan; - const int N = nlp_solver_plan->N; - ocp_nlp_config * nlp_config = capsule->nlp_config; - - /************************************************ - * dimensions - ************************************************/ - #define NINTNP1MEMS 17 - int * intNp1mem = (int *)malloc( (N + 1) * sizeof(int) * NINTNP1MEMS); - - int * nx = intNp1mem + (N + 1) * 0; - int * nu = intNp1mem + (N + 1) * 1; - int * nbx = intNp1mem + (N + 1) * 2; - int * nbu = intNp1mem + (N + 1) * 3; - int * nsbx = intNp1mem + (N + 1) * 4; - int * nsbu = intNp1mem + (N + 1) * 5; - int * nsg = intNp1mem + (N + 1) * 6; - int * nsh = intNp1mem + (N + 1) * 7; - int * nsphi = intNp1mem + (N + 1) * 8; - int * ns = intNp1mem + (N + 1) * 9; - int * ng = intNp1mem + (N + 1) * 10; - int * nh = intNp1mem + (N + 1) * 11; - int * nphi = intNp1mem + (N + 1) * 12; - int * nz = intNp1mem + (N + 1) * 13; - int * ny = intNp1mem + (N + 1) * 14; - int * nr = intNp1mem + (N + 1) * 15; - int * nbxe = intNp1mem + (N + 1) * 16; - - for (int i = 0; i < N + 1; i++) { - // common - nx[i] = NX; - nu[i] = NU; - nz[i] = NZ; - ns[i] = NS; + ocp_nlp_plan_t* nlp_solver_plan = capsule->nlp_solver_plan; + const int N = nlp_solver_plan->N; + ocp_nlp_config* nlp_config = capsule->nlp_config; + + /************************************************ + * dimensions + ************************************************/ + #define NINTNP1MEMS 18 + int* intNp1mem = (int*)malloc( (N+1)*sizeof(int)*NINTNP1MEMS ); + + int* nx = intNp1mem + (N+1)*0; + int* nu = intNp1mem + (N+1)*1; + int* nbx = intNp1mem + (N+1)*2; + int* nbu = intNp1mem + (N+1)*3; + int* nsbx = intNp1mem + (N+1)*4; + int* nsbu = intNp1mem + (N+1)*5; + int* nsg = intNp1mem + (N+1)*6; + int* nsh = intNp1mem + (N+1)*7; + int* nsphi = intNp1mem + (N+1)*8; + int* ns = intNp1mem + (N+1)*9; + int* ng = intNp1mem + (N+1)*10; + int* nh = intNp1mem + (N+1)*11; + int* nphi = intNp1mem + (N+1)*12; + int* nz = intNp1mem + (N+1)*13; + int* ny = intNp1mem + (N+1)*14; + int* nr = intNp1mem + (N+1)*15; + int* nbxe = intNp1mem + (N+1)*16; + int* np = intNp1mem + (N+1)*17; + + for (int i = 0; i < N+1; i++) + { + // common + nx[i] = NX; + nu[i] = NU; + nz[i] = NZ; + ns[i] = NS; + // cost + ny[i] = NY; + // constraints + nbx[i] = NBX; + nbu[i] = NBU; + nsbx[i] = NSBX; + nsbu[i] = NSBU; + nsg[i] = NSG; + nsh[i] = NSH; + nsphi[i] = NSPHI; + ng[i] = NG; + nh[i] = NH; + nphi[i] = NPHI; + nr[i] = NR; + nbxe[i] = 0; + np[i] = NP; + } + + // for initial state + nbx[0] = NBX0; + nsbx[0] = 0; + ns[0] = NS0; + nbxe[0] = 4; + ny[0] = NY0; + nh[0] = NH0; + nsh[0] = NSH0; + nsphi[0] = NSPHI0; + nphi[0] = NPHI0; + + + // terminal - common + nu[N] = 0; + nz[N] = 0; + ns[N] = NSN; // cost - ny[i] = NY; - // constraints - nbx[i] = NBX; - nbu[i] = NBU; - nsbx[i] = NSBX; - nsbu[i] = NSBU; - nsg[i] = NSG; - nsh[i] = NSH; - nsphi[i] = NSPHI; - ng[i] = NG; - nh[i] = NH; - nphi[i] = NPHI; - nr[i] = NR; - nbxe[i] = 0; - } - - // for initial state - nbx[0] = NBX0; - nsbx[0] = 0; - ns[0] = NS - NSBX; - nbxe[0] = 4; - ny[0] = NY0; - - // terminal - common - nu[N] = 0; - nz[N] = 0; - ns[N] = NSN; - // cost - ny[N] = NYN; - // constraint - nbx[N] = NBXN; - nbu[N] = 0; - ng[N] = NGN; - nh[N] = NHN; - nphi[N] = NPHIN; - nr[N] = 0; - - nsbx[N] = NSBXN; - nsbu[N] = 0; - nsg[N] = NSGN; - nsh[N] = NSHN; - nsphi[N] = NSPHIN; - - /* create and set ocp_nlp_dims */ - ocp_nlp_dims * nlp_dims = ocp_nlp_dims_create(nlp_config); - - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nx", nx); - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nu", nu); - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nz", nz); - ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "ns", ns); - - for (int i = 0; i <= N; i++) { - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbx", &nbx[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbu", &nbu[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsbx", &nsbx[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsbu", &nsbu[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "ng", &ng[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsg", &nsg[i]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbxe", &nbxe[i]); - } - - for (int i = 0; i < N; i++) { - } - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, N, "nh", &nh[N]); - ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, N, "nsh", &nsh[N]); - free(intNp1mem); - return nlp_dims; + ny[N] = NYN; + // constraint + nbx[N] = NBXN; + nbu[N] = 0; + ng[N] = NGN; + nh[N] = NHN; + nphi[N] = NPHIN; + nr[N] = 0; + + nsbx[N] = NSBXN; + nsbu[N] = 0; + nsg[N] = NSGN; + nsh[N] = NSHN; + nsphi[N] = NSPHIN; + + /* create and set ocp_nlp_dims */ + ocp_nlp_dims * nlp_dims = ocp_nlp_dims_create(nlp_config); + + ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nx", nx); + ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nu", nu); + ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "nz", nz); + ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "ns", ns); + ocp_nlp_dims_set_opt_vars(nlp_config, nlp_dims, "np", np); + + for (int i = 0; i <= N; i++) + { + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbx", &nbx[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbu", &nbu[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsbx", &nsbx[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsbu", &nsbu[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "ng", &ng[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsg", &nsg[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nbxe", &nbxe[i]); + } + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, 0, "nh", &nh[0]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, 0, "nsh", &nsh[0]); + + for (int i = 1; i < N; i++) + { + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nh", &nh[i]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, i, "nsh", &nsh[i]); + } + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, N, "nh", &nh[N]); + ocp_nlp_dims_set_constraints(nlp_config, nlp_dims, N, "nsh", &nsh[N]); + + free(intNp1mem); + + return nlp_dims; } /** * Internal function for mock_acados_solver_acados_create: step 3 */ -void mock_acados_solver_acados_create_3_create_and_set_functions( - mock_acados_solver_solver_capsule * capsule) +void mock_acados_solver_acados_create_3_create_and_set_functions(mock_acados_solver_solver_capsule* capsule) { - const int N = capsule->nlp_solver_plan->N; + const int N = capsule->nlp_solver_plan->N; - /************************************************ - * external functions - ************************************************/ + + /************************************************ + * external functions + ************************************************/ #define MAP_CASADI_FNC(__CAPSULE_FNC__, __MODEL_BASE_FNC__) do{ \ - capsule->__CAPSULE_FNC__.casadi_fun = &__MODEL_BASE_FNC__; \ - capsule->__CAPSULE_FNC__.casadi_n_in = &__MODEL_BASE_FNC__ ## _n_in; \ - capsule->__CAPSULE_FNC__.casadi_n_out = &__MODEL_BASE_FNC__ ## _n_out; \ - capsule->__CAPSULE_FNC__.casadi_sparsity_in = &__MODEL_BASE_FNC__ ## _sparsity_in; \ - capsule->__CAPSULE_FNC__.casadi_sparsity_out = &__MODEL_BASE_FNC__ ## _sparsity_out; \ - capsule->__CAPSULE_FNC__.casadi_work = &__MODEL_BASE_FNC__ ## _work; \ - external_function_param_casadi_create(&capsule->__CAPSULE_FNC__, 2); \ -}while(false) - - - // implicit dae - capsule->impl_dae_fun = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(impl_dae_fun[i], mock_acados_solver_impl_dae_fun); - } - - capsule->impl_dae_fun_jac_x_xdot_z = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(impl_dae_fun_jac_x_xdot_z[i], mock_acados_solver_impl_dae_fun_jac_x_xdot_z); - } - - capsule->impl_dae_jac_x_xdot_u_z = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(impl_dae_jac_x_xdot_u_z[i], mock_acados_solver_impl_dae_jac_x_xdot_u_z); - } - capsule->impl_dae_hess = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N; i++) { - MAP_CASADI_FNC(impl_dae_hess[i], mock_acados_solver_impl_dae_hess); - } - - // external cost - MAP_CASADI_FNC(ext_cost_0_fun, mock_acados_solver_cost_ext_cost_0_fun); - - // external cost - MAP_CASADI_FNC(ext_cost_0_fun_jac, mock_acados_solver_cost_ext_cost_0_fun_jac); - - // external cost - MAP_CASADI_FNC(ext_cost_0_fun_jac_hess, mock_acados_solver_cost_ext_cost_0_fun_jac_hess); - // external cost - capsule->ext_cost_fun = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N - 1; i++) { - MAP_CASADI_FNC(ext_cost_fun[i], mock_acados_solver_cost_ext_cost_fun); - } - - capsule->ext_cost_fun_jac = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N - 1; i++) { - MAP_CASADI_FNC(ext_cost_fun_jac[i], mock_acados_solver_cost_ext_cost_fun_jac); - } - - capsule->ext_cost_fun_jac_hess = - (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi) * N); - for (int i = 0; i < N - 1; i++) { - MAP_CASADI_FNC(ext_cost_fun_jac_hess[i], mock_acados_solver_cost_ext_cost_fun_jac_hess); - } - // external cost - function - MAP_CASADI_FNC(ext_cost_e_fun, mock_acados_solver_cost_ext_cost_e_fun); - - - // external cost - jacobian - MAP_CASADI_FNC(ext_cost_e_fun_jac, mock_acados_solver_cost_ext_cost_e_fun_jac); - - // external cost - hessian - MAP_CASADI_FNC(ext_cost_e_fun_jac_hess, mock_acados_solver_cost_ext_cost_e_fun_jac_hess); + capsule->__CAPSULE_FNC__.casadi_fun = & __MODEL_BASE_FNC__ ;\ + capsule->__CAPSULE_FNC__.casadi_n_in = & __MODEL_BASE_FNC__ ## _n_in; \ + capsule->__CAPSULE_FNC__.casadi_n_out = & __MODEL_BASE_FNC__ ## _n_out; \ + capsule->__CAPSULE_FNC__.casadi_sparsity_in = & __MODEL_BASE_FNC__ ## _sparsity_in; \ + capsule->__CAPSULE_FNC__.casadi_sparsity_out = & __MODEL_BASE_FNC__ ## _sparsity_out; \ + capsule->__CAPSULE_FNC__.casadi_work = & __MODEL_BASE_FNC__ ## _work; \ + external_function_param_casadi_create(&capsule->__CAPSULE_FNC__ , 2); \ + } while(false) + + + // implicit dae + capsule->impl_dae_fun = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); + for (int i = 0; i < N; i++) { + MAP_CASADI_FNC(impl_dae_fun[i], mock_acados_solver_impl_dae_fun); + } + + capsule->impl_dae_fun_jac_x_xdot_z = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); + for (int i = 0; i < N; i++) { + MAP_CASADI_FNC(impl_dae_fun_jac_x_xdot_z[i], mock_acados_solver_impl_dae_fun_jac_x_xdot_z); + } + + capsule->impl_dae_jac_x_xdot_u_z = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); + for (int i = 0; i < N; i++) { + MAP_CASADI_FNC(impl_dae_jac_x_xdot_u_z[i], mock_acados_solver_impl_dae_jac_x_xdot_u_z); + } + capsule->impl_dae_hess = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*N); + for (int i = 0; i < N; i++) { + MAP_CASADI_FNC(impl_dae_hess[i], mock_acados_solver_impl_dae_hess); + } + + // external cost + MAP_CASADI_FNC(ext_cost_0_fun, mock_acados_solver_cost_ext_cost_0_fun); + MAP_CASADI_FNC(ext_cost_0_fun_jac, mock_acados_solver_cost_ext_cost_0_fun_jac); + MAP_CASADI_FNC(ext_cost_0_fun_jac_hess, mock_acados_solver_cost_ext_cost_0_fun_jac_hess); + + + + + // external cost + capsule->ext_cost_fun = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*(N-1)); + for (int i = 0; i < N-1; i++) + { + MAP_CASADI_FNC(ext_cost_fun[i], mock_acados_solver_cost_ext_cost_fun); + } + + capsule->ext_cost_fun_jac = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*(N-1)); + for (int i = 0; i < N-1; i++) + { + MAP_CASADI_FNC(ext_cost_fun_jac[i], mock_acados_solver_cost_ext_cost_fun_jac); + } + + capsule->ext_cost_fun_jac_hess = (external_function_param_casadi *) malloc(sizeof(external_function_param_casadi)*(N-1)); + for (int i = 0; i < N-1; i++) + { + MAP_CASADI_FNC(ext_cost_fun_jac_hess[i], mock_acados_solver_cost_ext_cost_fun_jac_hess); + } + + + + + // external cost - function + MAP_CASADI_FNC(ext_cost_e_fun, mock_acados_solver_cost_ext_cost_e_fun); + + // external cost - jacobian + MAP_CASADI_FNC(ext_cost_e_fun_jac, mock_acados_solver_cost_ext_cost_e_fun_jac); + + // external cost - hessian + MAP_CASADI_FNC(ext_cost_e_fun_jac_hess, mock_acados_solver_cost_ext_cost_e_fun_jac_hess); + + // external cost - jacobian wrt params + + + #undef MAP_CASADI_FNC } @@ -364,189 +395,210 @@ void mock_acados_solver_acados_create_3_create_and_set_functions( /** * Internal function for mock_acados_solver_acados_create: step 4 */ -void mock_acados_solver_acados_create_4_set_default_parameters( - mock_acados_solver_solver_capsule * capsule) -{ - const int N = capsule->nlp_solver_plan->N; - // initialize parameters to nominal value - double * p = calloc(NP, sizeof(double)); - p[0] = 1; - p[1] = 0.1; - - for (int i = 0; i <= N; i++) { - mock_acados_solver_acados_update_params(capsule, i, p, NP); - } - free(p); +void mock_acados_solver_acados_create_4_set_default_parameters(mock_acados_solver_solver_capsule* capsule) { + const int N = capsule->nlp_solver_plan->N; + // initialize parameters to nominal value + double* p = calloc(NP, sizeof(double)); + p[0] = 1; + p[1] = 0.1; + + for (int i = 0; i <= N; i++) { + mock_acados_solver_acados_update_params(capsule, i, p, NP); + } + free(p); } /** * Internal function for mock_acados_solver_acados_create: step 5 */ -void mock_acados_solver_acados_create_5_set_nlp_in( - mock_acados_solver_solver_capsule * capsule, - const int N, double * new_time_steps) +void mock_acados_solver_acados_create_5_set_nlp_in(mock_acados_solver_solver_capsule* capsule, const int N, double* new_time_steps) { - assert(N == capsule->nlp_solver_plan->N); - ocp_nlp_config * nlp_config = capsule->nlp_config; - ocp_nlp_dims * nlp_dims = capsule->nlp_dims; + assert(N == capsule->nlp_solver_plan->N); + ocp_nlp_config* nlp_config = capsule->nlp_config; + ocp_nlp_dims* nlp_dims = capsule->nlp_dims; + + int tmp_int = 0; - /************************************************ - * nlp_in - ************************************************/ + /************************************************ + * nlp_in + ************************************************/ // ocp_nlp_in * nlp_in = ocp_nlp_in_create(nlp_config, nlp_dims); // capsule->nlp_in = nlp_in; - ocp_nlp_in * nlp_in = capsule->nlp_in; + ocp_nlp_in * nlp_in = capsule->nlp_in; - // set up time_steps + // set up time_steps + if (new_time_steps) + { + mock_acados_solver_acados_update_time_steps(capsule, N, new_time_steps); + } + else + {double time_step = 0.05; + for (int i = 0; i < N; i++) + { + ocp_nlp_in_set(nlp_config, nlp_dims, nlp_in, i, "Ts", &time_step); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "scaling", &time_step); + } + } - if (new_time_steps) { - mock_acados_solver_acados_update_time_steps(capsule, N, new_time_steps); - } else { // all time_steps are identical - double time_step = 0.05; - for (int i = 0; i < N; i++) { - ocp_nlp_in_set(nlp_config, nlp_dims, nlp_in, i, "Ts", &time_step); - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "scaling", &time_step); + /**** Dynamics ****/ + for (int i = 0; i < N; i++) + { + ocp_nlp_dynamics_model_set(nlp_config, nlp_dims, nlp_in, i, "impl_dae_fun", &capsule->impl_dae_fun[i]); + ocp_nlp_dynamics_model_set(nlp_config, nlp_dims, nlp_in, i, + "impl_dae_fun_jac_x_xdot_z", &capsule->impl_dae_fun_jac_x_xdot_z[i]); + ocp_nlp_dynamics_model_set(nlp_config, nlp_dims, nlp_in, i, + "impl_dae_jac_x_xdot_u", &capsule->impl_dae_jac_x_xdot_u_z[i]); + ocp_nlp_dynamics_model_set(nlp_config, nlp_dims, nlp_in, i, "impl_dae_hess", &capsule->impl_dae_hess[i]); + } + + /**** Cost ****/ + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "ext_cost_fun", &capsule->ext_cost_0_fun); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "ext_cost_fun_jac", &capsule->ext_cost_0_fun_jac); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "ext_cost_fun_jac_hess", &capsule->ext_cost_0_fun_jac_hess); + + + for (int i = 1; i < N; i++) + { + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "ext_cost_fun", &capsule->ext_cost_fun[i-1]); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "ext_cost_fun_jac", &capsule->ext_cost_fun_jac[i-1]); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, i, "ext_cost_fun_jac_hess", &capsule->ext_cost_fun_jac_hess[i-1]); + + + } + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "ext_cost_fun", &capsule->ext_cost_e_fun); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "ext_cost_fun_jac", &capsule->ext_cost_e_fun_jac); + ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "ext_cost_fun_jac_hess", &capsule->ext_cost_e_fun_jac_hess); + + + + + + + + + /**** Constraints ****/ + + // bounds for initial stage + // x0 + int* idxbx0 = malloc(NBX0 * sizeof(int)); + idxbx0[0] = 0; + idxbx0[1] = 1; + idxbx0[2] = 2; + idxbx0[3] = 3; + + double* lubx0 = calloc(2*NBX0, sizeof(double)); + double* lbx0 = lubx0; + double* ubx0 = lubx0 + NBX0; + // change only the non-zero elements: + lbx0[1] = 3.141592653589793; + ubx0[1] = 3.141592653589793; + + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbx", idxbx0); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "lbx", lbx0); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "ubx", ubx0); + free(idxbx0); + free(lubx0); + // idxbxe_0 + int* idxbxe_0 = malloc(4 * sizeof(int)); + + idxbxe_0[0] = 0; + idxbxe_0[1] = 1; + idxbxe_0[2] = 2; + idxbxe_0[3] = 3; + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbxe", idxbxe_0); + free(idxbxe_0); + + + + + + + + + /* constraints that are the same for initial and intermediate */ + // u + int* idxbu = malloc(NBU * sizeof(int)); + + idxbu[0] = 0; + double* lubu = calloc(2*NBU, sizeof(double)); + double* lbu = lubu; + double* ubu = lubu + NBU; + + lbu[0] = -80; + ubu[0] = 80; + + for (int i = 0; i < N; i++) + { + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "idxbu", idxbu); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lbu", lbu); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "ubu", ubu); + } + free(idxbu); + free(lubu); + + + + + + + + + // x + int* idxbx = malloc(NBX * sizeof(int)); + + idxbx[0] = 2; + double* lubx = calloc(2*NBX, sizeof(double)); + double* lbx = lubx; + double* ubx = lubx + NBX; + + lbx[0] = -10; + ubx[0] = 10; + + for (int i = 1; i < N; i++) + { + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "idxbx", idxbx); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lbx", lbx); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "ubx", ubx); } - } - - /**** Dynamics ****/ - for (int i = 0; i < N; i++) { - ocp_nlp_dynamics_model_set( - nlp_config, nlp_dims, nlp_in, i, "impl_dae_fun", - &capsule->impl_dae_fun[i]); - ocp_nlp_dynamics_model_set( - nlp_config, nlp_dims, nlp_in, i, - "impl_dae_fun_jac_x_xdot_z", &capsule->impl_dae_fun_jac_x_xdot_z[i]); - ocp_nlp_dynamics_model_set( - nlp_config, nlp_dims, nlp_in, i, - "impl_dae_jac_x_xdot_u", &capsule->impl_dae_jac_x_xdot_u_z[i]); - ocp_nlp_dynamics_model_set( - nlp_config, nlp_dims, nlp_in, i, "impl_dae_hess", - &capsule->impl_dae_hess[i]); - - } - - /**** Cost ****/ - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, 0, "ext_cost_fun", &capsule->ext_cost_0_fun); - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, 0, "ext_cost_fun_jac", - &capsule->ext_cost_0_fun_jac); - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, 0, "ext_cost_fun_jac_hess", - &capsule->ext_cost_0_fun_jac_hess); - for (int i = 1; i < N; i++) { - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, i, "ext_cost_fun", - &capsule->ext_cost_fun[i - 1]); - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, i, "ext_cost_fun_jac", - &capsule->ext_cost_fun_jac[i - 1]); - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, i, "ext_cost_fun_jac_hess", - &capsule->ext_cost_fun_jac_hess[i - 1]); - } - ocp_nlp_cost_model_set(nlp_config, nlp_dims, nlp_in, N, "ext_cost_fun", &capsule->ext_cost_e_fun); - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, N, "ext_cost_fun_jac", - &capsule->ext_cost_e_fun_jac); - ocp_nlp_cost_model_set( - nlp_config, nlp_dims, nlp_in, N, "ext_cost_fun_jac_hess", - &capsule->ext_cost_e_fun_jac_hess); - - - /**** Constraints ****/ - - // bounds for initial stage - // x0 - int * idxbx0 = malloc(NBX0 * sizeof(int)); - idxbx0[0] = 0; - idxbx0[1] = 1; - idxbx0[2] = 2; - idxbx0[3] = 3; - - double * lubx0 = calloc(2 * NBX0, sizeof(double)); - double * lbx0 = lubx0; - double * ubx0 = lubx0 + NBX0; - // change only the non-zero elements: - lbx0[1] = 3.141592653589793; - ubx0[1] = 3.141592653589793; - - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbx", idxbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "lbx", lbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "ubx", ubx0); - free(idxbx0); - free(lubx0); - // idxbxe_0 - int * idxbxe_0 = malloc(4 * sizeof(int)); - - idxbxe_0[0] = 0; - idxbxe_0[1] = 1; - idxbxe_0[2] = 2; - idxbxe_0[3] = 3; - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbxe", idxbxe_0); - free(idxbxe_0); - - /* constraints that are the same for initial and intermediate */ - // u - int * idxbu = malloc(NBU * sizeof(int)); - - idxbu[0] = 0; - double * lubu = calloc(2 * NBU, sizeof(double)); - double * lbu = lubu; - double * ubu = lubu + NBU; - - lbu[0] = -80; - ubu[0] = 80; - - for (int i = 0; i < N; i++) { - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "idxbu", idxbu); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lbu", lbu); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "ubu", ubu); - } - free(idxbu); - free(lubu); - - - // x - int * idxbx = malloc(NBX * sizeof(int)); - - idxbx[0] = 2; - double * lubx = calloc(2 * NBX, sizeof(double)); - double * lbx = lubx; - double * ubx = lubx + NBX; - - lbx[0] = -10; - ubx[0] = 10; - - for (int i = 1; i < N; i++) { - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "idxbx", idxbx); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "lbx", lbx); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, i, "ubx", ubx); - } - free(idxbx); - free(lubx); - - - /* terminal constraints */ - - // set up bounds for last stage - // x - int * idxbx_e = malloc(NBXN * sizeof(int)); - - idxbx_e[0] = 2; - double * lubx_e = calloc(2 * NBXN, sizeof(double)); - double * lbx_e = lubx_e; - double * ubx_e = lubx_e + NBXN; - - lbx_e[0] = -10; - ubx_e[0] = 10; - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, N, "idxbx", idxbx_e); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, N, "lbx", lbx_e); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, N, "ubx", ubx_e); - free(idxbx_e); - free(lubx_e); + free(idxbx); + free(lubx); + + + + + + + + /* terminal constraints */ + + // set up bounds for last stage + // x + int* idxbx_e = malloc(NBXN * sizeof(int)); + + idxbx_e[0] = 2; + double* lubx_e = calloc(2*NBXN, sizeof(double)); + double* lbx_e = lubx_e; + double* ubx_e = lubx_e + NBXN; + + lbx_e[0] = -10; + ubx_e[0] = 10; + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, N, "idxbx", idxbx_e); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, N, "lbx", lbx_e); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, N, "ubx", ubx_e); + free(idxbx_e); + free(lubx_e); + + + + + + + + + + } @@ -555,163 +607,153 @@ void mock_acados_solver_acados_create_5_set_nlp_in( /** * Internal function for mock_acados_solver_acados_create: step 6 */ -void mock_acados_solver_acados_create_6_set_opts(mock_acados_solver_solver_capsule * capsule) +void mock_acados_solver_acados_create_6_set_opts(mock_acados_solver_solver_capsule* capsule) { - const int N = capsule->nlp_solver_plan->N; - ocp_nlp_config * nlp_config = capsule->nlp_config; - void * nlp_opts = capsule->nlp_opts; - - /************************************************ - * opts - ************************************************/ - - - int nlp_solver_exact_hessian = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess", &nlp_solver_exact_hessian); - - int exact_hess_dyn = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess_dyn", &exact_hess_dyn); + const int N = capsule->nlp_solver_plan->N; + ocp_nlp_config* nlp_config = capsule->nlp_config; + void *nlp_opts = capsule->nlp_opts; + + /************************************************ + * opts + ************************************************/ + + + int nlp_solver_exact_hessian = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess", &nlp_solver_exact_hessian); + + int exact_hess_dyn = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess_dyn", &exact_hess_dyn); + + int exact_hess_cost = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess_cost", &exact_hess_cost); + + int exact_hess_constr = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess_constr", &exact_hess_constr);int fixed_hess = 0; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "fixed_hess", &fixed_hess); + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "globalization", "fixed_step");int with_solution_sens_wrt_params = false; + ocp_nlp_solver_opts_set(nlp_config, capsule->nlp_opts, "with_solution_sens_wrt_params", &with_solution_sens_wrt_params); + + int with_value_sens_wrt_params = false; + ocp_nlp_solver_opts_set(nlp_config, capsule->nlp_opts, "with_value_sens_wrt_params", &with_value_sens_wrt_params); + + int full_step_dual = 0; + ocp_nlp_solver_opts_set(nlp_config, capsule->nlp_opts, "full_step_dual", &full_step_dual); - int exact_hess_cost = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess_cost", &exact_hess_cost); + // set collocation type (relevant for implicit integrators) + sim_collocation_type collocation_type = GAUSS_LEGENDRE; + for (int i = 0; i < N; i++) + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_collocation_type", &collocation_type); - int exact_hess_constr = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "exact_hess_constr", &exact_hess_constr); - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "globalization", "fixed_step"); - int full_step_dual = 0; - ocp_nlp_solver_opts_set(nlp_config, capsule->nlp_opts, "full_step_dual", &full_step_dual); - - // set collocation type (relevant for implicit integrators) - sim_collocation_type collocation_type = GAUSS_LEGENDRE; - for (int i = 0; i < N; i++) { - ocp_nlp_solver_opts_set_at_stage( - nlp_config, nlp_opts, i, "dynamics_collocation_type", - &collocation_type); - } - - // set up sim_method_num_steps - // all sim_method_num_steps are identical - int sim_method_num_steps = 1; - for (int i = 0; i < N; i++) { - ocp_nlp_solver_opts_set_at_stage( - nlp_config, nlp_opts, i, "dynamics_num_steps", - &sim_method_num_steps); - } - - // set up sim_method_num_stages - // all sim_method_num_stages are identical - int sim_method_num_stages = 4; - for (int i = 0; i < N; i++) { - ocp_nlp_solver_opts_set_at_stage( - nlp_config, nlp_opts, i, "dynamics_num_stages", - &sim_method_num_stages); - } - - int newton_iter_val = 3; - for (int i = 0; i < N; i++) { - ocp_nlp_solver_opts_set_at_stage( - nlp_config, nlp_opts, i, "dynamics_newton_iter", - &newton_iter_val); - } - - - // set up sim_method_jac_reuse - bool tmp_bool = (bool) 0; - for (int i = 0; i < N; i++) { - ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_jac_reuse", &tmp_bool); - } - - double nlp_solver_step_length = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "step_length", &nlp_solver_step_length); - - double levenberg_marquardt = 0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "levenberg_marquardt", &levenberg_marquardt); - - /* options QP solver */ - int qp_solver_cond_N; - - const int qp_solver_cond_N_ori = 20; - qp_solver_cond_N = N < qp_solver_cond_N_ori ? N : qp_solver_cond_N_ori; // use the minimum value here - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_cond_N", &qp_solver_cond_N); - - int nlp_solver_ext_qp_res = 0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "ext_qp_res", &nlp_solver_ext_qp_res); - // set HPIPM mode: should be done before setting other QP solver options - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_hpipm_mode", "BALANCE"); - - - // set SQP specific options - double nlp_solver_tol_stat = 0.000001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_stat", &nlp_solver_tol_stat); - - double nlp_solver_tol_eq = 0.000001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_eq", &nlp_solver_tol_eq); - - double nlp_solver_tol_ineq = 0.000001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_ineq", &nlp_solver_tol_ineq); - - double nlp_solver_tol_comp = 0.000001; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_comp", &nlp_solver_tol_comp); - - int nlp_solver_max_iter = 100; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "max_iter", &nlp_solver_max_iter); - - int initialize_t_slacks = 0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "initialize_t_slacks", &initialize_t_slacks); - - int qp_solver_iter_max = 50; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_iter_max", &qp_solver_iter_max); - - int print_level = 0; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "print_level", &print_level); - int qp_solver_cond_ric_alg = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_cond_ric_alg", &qp_solver_cond_ric_alg); - - int qp_solver_ric_alg = 1; - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_ric_alg", &qp_solver_ric_alg); - - - int ext_cost_num_hess = 0; - for (int i = 0; i < N; i++) { - ocp_nlp_solver_opts_set_at_stage( - nlp_config, nlp_opts, i, "cost_numerical_hessian", - &ext_cost_num_hess); - } - ocp_nlp_solver_opts_set_at_stage( - nlp_config, nlp_opts, N, "cost_numerical_hessian", - &ext_cost_num_hess); + // set up sim_method_num_steps + // all sim_method_num_steps are identical + int sim_method_num_steps = 1; + for (int i = 0; i < N; i++) + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_num_steps", &sim_method_num_steps); + + // set up sim_method_num_stages + // all sim_method_num_stages are identical + int sim_method_num_stages = 4; + for (int i = 0; i < N; i++) + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_num_stages", &sim_method_num_stages); + + int newton_iter_val = 3; + for (int i = 0; i < N; i++) + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_newton_iter", &newton_iter_val); + + // set up sim_method_jac_reuse + bool tmp_bool = (bool) 0; + for (int i = 0; i < N; i++) + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "dynamics_jac_reuse", &tmp_bool); + + double nlp_solver_step_length = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "step_length", &nlp_solver_step_length); + + double levenberg_marquardt = 0; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "levenberg_marquardt", &levenberg_marquardt); + + /* options QP solver */ + int qp_solver_cond_N;const int qp_solver_cond_N_ori = 20; + qp_solver_cond_N = N < qp_solver_cond_N_ori ? N : qp_solver_cond_N_ori; // use the minimum value here + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_cond_N", &qp_solver_cond_N); + + int nlp_solver_ext_qp_res = 0; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "ext_qp_res", &nlp_solver_ext_qp_res); + // set HPIPM mode: should be done before setting other QP solver options + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_hpipm_mode", "BALANCE"); + + + // set SQP specific options + double nlp_solver_tol_stat = 0.000001; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_stat", &nlp_solver_tol_stat); + + double nlp_solver_tol_eq = 0.000001; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_eq", &nlp_solver_tol_eq); + + double nlp_solver_tol_ineq = 0.000001; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_ineq", &nlp_solver_tol_ineq); + + double nlp_solver_tol_comp = 0.000001; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "tol_comp", &nlp_solver_tol_comp); + + int nlp_solver_max_iter = 100; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "max_iter", &nlp_solver_max_iter); + + int initialize_t_slacks = 0; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "initialize_t_slacks", &initialize_t_slacks); + + int qp_solver_iter_max = 50; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_iter_max", &qp_solver_iter_max); + + + + int print_level = 0; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "print_level", &print_level); + int qp_solver_cond_ric_alg = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_cond_ric_alg", &qp_solver_cond_ric_alg); + + int qp_solver_ric_alg = 1; + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "qp_ric_alg", &qp_solver_ric_alg); + + + int ext_cost_num_hess = 0; + for (int i = 0; i < N; i++) + { + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, i, "cost_numerical_hessian", &ext_cost_num_hess); + } + ocp_nlp_solver_opts_set_at_stage(nlp_config, nlp_opts, N, "cost_numerical_hessian", &ext_cost_num_hess); } /** * Internal function for mock_acados_solver_acados_create: step 7 */ -void mock_acados_solver_acados_create_7_set_nlp_out(mock_acados_solver_solver_capsule * capsule) +void mock_acados_solver_acados_create_7_set_nlp_out(mock_acados_solver_solver_capsule* capsule) { - const int N = capsule->nlp_solver_plan->N; - ocp_nlp_config * nlp_config = capsule->nlp_config; - ocp_nlp_dims * nlp_dims = capsule->nlp_dims; - ocp_nlp_out * nlp_out = capsule->nlp_out; - - // initialize primal solution - double * xu0 = calloc(NX + NU, sizeof(double)); - double * x0 = xu0; + const int N = capsule->nlp_solver_plan->N; + ocp_nlp_config* nlp_config = capsule->nlp_config; + ocp_nlp_dims* nlp_dims = capsule->nlp_dims; + ocp_nlp_out* nlp_out = capsule->nlp_out; - // initialize with x0 + // initialize primal solution + double* xu0 = calloc(NX+NU, sizeof(double)); + double* x0 = xu0; - x0[1] = 3.141592653589793; + // initialize with x0 + + x0[1] = 3.141592653589793; - double * u0 = xu0 + NX; + double* u0 = xu0 + NX; - for (int i = 0; i < N; i++) { - // x0 - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", x0); - // u0 - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", u0); - } - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, N, "x", x0); - free(xu0); + for (int i = 0; i < N; i++) + { + // x0 + ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", x0); + // u0 + ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", u0); + } + ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, N, "x", x0); + free(xu0); } @@ -726,407 +768,392 @@ void mock_acados_solver_acados_create_7_set_nlp_out(mock_acados_solver_solver_ca /** * Internal function for mock_acados_solver_acados_create: step 9 */ -int mock_acados_solver_acados_create_9_precompute(mock_acados_solver_solver_capsule * capsule) -{ - int status = ocp_nlp_precompute(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); +int mock_acados_solver_acados_create_9_precompute(mock_acados_solver_solver_capsule* capsule) { + int status = ocp_nlp_precompute(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); - if (status != ACADOS_SUCCESS) { - printf("\nocp_nlp_precompute failed!\n\n"); - exit(1); - } + if (status != ACADOS_SUCCESS) { + printf("\nocp_nlp_precompute failed!\n\n"); + exit(1); + } - return status; + return status; } -int mock_acados_solver_acados_create_with_discretization( - mock_acados_solver_solver_capsule * capsule, int N, double * new_time_steps) +int mock_acados_solver_acados_create_with_discretization(mock_acados_solver_solver_capsule* capsule, int N, double* new_time_steps) { - // If N does not match the number of shooting intervals used for code generation, new_time_steps must be given. - if (N != MOCK_ACADOS_SOLVER_N && !new_time_steps) { - fprintf( - stderr, "mock_acados_solver_acados_create_with_discretization: new_time_steps is NULL " \ - "but the number of shooting intervals (= %d) differs from the number of " \ - "shooting intervals (= %d) during code generation! Please provide a new vector of time_stamps!\n", \ - N, MOCK_ACADOS_SOLVER_N); - return 1; - } + // If N does not match the number of shooting intervals used for code generation, new_time_steps must be given. + if (N != MOCK_ACADOS_SOLVER_N && !new_time_steps) { + fprintf(stderr, "mock_acados_solver_acados_create_with_discretization: new_time_steps is NULL " \ + "but the number of shooting intervals (= %d) differs from the number of " \ + "shooting intervals (= %d) during code generation! Please provide a new vector of time_stamps!\n", \ + N, MOCK_ACADOS_SOLVER_N); + return 1; + } - // number of expected runtime parameters - capsule->nlp_np = NP; + // number of expected runtime parameters + capsule->nlp_np = NP; - // 1) create and set nlp_solver_plan; create nlp_config - capsule->nlp_solver_plan = ocp_nlp_plan_create(N); - mock_acados_solver_acados_create_1_set_plan(capsule->nlp_solver_plan, N); - capsule->nlp_config = ocp_nlp_config_create(*capsule->nlp_solver_plan); + // 1) create and set nlp_solver_plan; create nlp_config + capsule->nlp_solver_plan = ocp_nlp_plan_create(N); + mock_acados_solver_acados_create_1_set_plan(capsule->nlp_solver_plan, N); + capsule->nlp_config = ocp_nlp_config_create(*capsule->nlp_solver_plan); - // 3) create and set dimensions - capsule->nlp_dims = mock_acados_solver_acados_create_2_create_and_set_dimensions(capsule); - mock_acados_solver_acados_create_3_create_and_set_functions(capsule); + // 3) create and set dimensions + capsule->nlp_dims = mock_acados_solver_acados_create_2_create_and_set_dimensions(capsule); + mock_acados_solver_acados_create_3_create_and_set_functions(capsule); - // 4) set default parameters in functions - mock_acados_solver_acados_create_4_set_default_parameters(capsule); + // 4) set default parameters in functions + mock_acados_solver_acados_create_4_set_default_parameters(capsule); - // 5) create and set nlp_in - capsule->nlp_in = ocp_nlp_in_create(capsule->nlp_config, capsule->nlp_dims); - mock_acados_solver_acados_create_5_set_nlp_in(capsule, N, new_time_steps); + // 5) create and set nlp_in + capsule->nlp_in = ocp_nlp_in_create(capsule->nlp_config, capsule->nlp_dims); + mock_acados_solver_acados_create_5_set_nlp_in(capsule, N, new_time_steps); - // 6) create and set nlp_opts - capsule->nlp_opts = ocp_nlp_solver_opts_create(capsule->nlp_config, capsule->nlp_dims); - mock_acados_solver_acados_create_6_set_opts(capsule); + // 6) create and set nlp_opts + capsule->nlp_opts = ocp_nlp_solver_opts_create(capsule->nlp_config, capsule->nlp_dims); + mock_acados_solver_acados_create_6_set_opts(capsule); - // 7) create and set nlp_out - // 7.1) nlp_out - capsule->nlp_out = ocp_nlp_out_create(capsule->nlp_config, capsule->nlp_dims); - // 7.2) sens_out - capsule->sens_out = ocp_nlp_out_create(capsule->nlp_config, capsule->nlp_dims); - mock_acados_solver_acados_create_7_set_nlp_out(capsule); + // 7) create and set nlp_out + // 7.1) nlp_out + capsule->nlp_out = ocp_nlp_out_create(capsule->nlp_config, capsule->nlp_dims); + // 7.2) sens_out + capsule->sens_out = ocp_nlp_out_create(capsule->nlp_config, capsule->nlp_dims); + mock_acados_solver_acados_create_7_set_nlp_out(capsule); - // 8) create solver - capsule->nlp_solver = ocp_nlp_solver_create( - capsule->nlp_config, capsule->nlp_dims, - capsule->nlp_opts); - //mock_acados_solver_acados_create_8_create_solver(capsule); + // 8) create solver + capsule->nlp_solver = ocp_nlp_solver_create(capsule->nlp_config, capsule->nlp_dims, capsule->nlp_opts); + //mock_acados_solver_acados_create_8_create_solver(capsule); - // 9) do precomputations - int status = mock_acados_solver_acados_create_9_precompute(capsule); + // 9) do precomputations + int status = mock_acados_solver_acados_create_9_precompute(capsule); - return status; + return status; } /** * This function is for updating an already initialized solver with a different number of qp_cond_N. It is useful for code reuse after code export. */ -int mock_acados_solver_acados_update_qp_solver_cond_N( - mock_acados_solver_solver_capsule * capsule, - int qp_solver_cond_N) +int mock_acados_solver_acados_update_qp_solver_cond_N(mock_acados_solver_solver_capsule* capsule, int qp_solver_cond_N) { - // 1) destroy solver - ocp_nlp_solver_destroy(capsule->nlp_solver); - - // 2) set new value for "qp_cond_N" - const int N = capsule->nlp_solver_plan->N; - if (qp_solver_cond_N > N) { - printf("Warning: qp_solver_cond_N = %d > N = %d\n", qp_solver_cond_N, N); - } - ocp_nlp_solver_opts_set(capsule->nlp_config, capsule->nlp_opts, "qp_cond_N", &qp_solver_cond_N); - - // 3) continue with the remaining steps from mock_acados_solver_acados_create_with_discretization(...): - // -> 8) create solver - capsule->nlp_solver = ocp_nlp_solver_create( - capsule->nlp_config, capsule->nlp_dims, - capsule->nlp_opts); - - // -> 9) do precomputations - int status = mock_acados_solver_acados_create_9_precompute(capsule); - return status; + // 1) destroy solver + ocp_nlp_solver_destroy(capsule->nlp_solver); + + // 2) set new value for "qp_cond_N" + const int N = capsule->nlp_solver_plan->N; + if(qp_solver_cond_N > N) + printf("Warning: qp_solver_cond_N = %d > N = %d\n", qp_solver_cond_N, N); + ocp_nlp_solver_opts_set(capsule->nlp_config, capsule->nlp_opts, "qp_cond_N", &qp_solver_cond_N); + + // 3) continue with the remaining steps from mock_acados_solver_acados_create_with_discretization(...): + // -> 8) create solver + capsule->nlp_solver = ocp_nlp_solver_create(capsule->nlp_config, capsule->nlp_dims, capsule->nlp_opts); + + // -> 9) do precomputations + int status = mock_acados_solver_acados_create_9_precompute(capsule); + return status; } -int mock_acados_solver_acados_reset( - mock_acados_solver_solver_capsule * capsule, - int reset_qp_solver_mem) +int mock_acados_solver_acados_reset(mock_acados_solver_solver_capsule* capsule, int reset_qp_solver_mem) { - // set initialization to all zeros - - const int N = capsule->nlp_solver_plan->N; - ocp_nlp_config * nlp_config = capsule->nlp_config; - ocp_nlp_dims * nlp_dims = capsule->nlp_dims; - ocp_nlp_out * nlp_out = capsule->nlp_out; - ocp_nlp_in * nlp_in = capsule->nlp_in; - ocp_nlp_solver * nlp_solver = capsule->nlp_solver; - - double * buffer = calloc( - NX + NU + NZ + 2 * NS + 2 * NSN + NBX + NBU + NG + NH + NPHI + NBX0 + NBXN + NHN + NPHIN + NGN, - sizeof(double)); - - for (int i = 0; i < N + 1; i++) { - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", buffer); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", buffer); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "sl", buffer); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "su", buffer); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "lam", buffer); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "t", buffer); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "z", buffer); - if (i < N) { - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "pi", buffer); - ocp_nlp_set(nlp_config, nlp_solver, i, "xdot_guess", buffer); - ocp_nlp_set(nlp_config, nlp_solver, i, "z_guess", buffer); - + // set initialization to all zeros + + const int N = capsule->nlp_solver_plan->N; + ocp_nlp_config* nlp_config = capsule->nlp_config; + ocp_nlp_dims* nlp_dims = capsule->nlp_dims; + ocp_nlp_out* nlp_out = capsule->nlp_out; + ocp_nlp_in* nlp_in = capsule->nlp_in; + ocp_nlp_solver* nlp_solver = capsule->nlp_solver; + + double* buffer = calloc(NX+NU+NZ+2*NS+2*NSN+2*NS0+NBX+NBU+NG+NH+NPHI+NBX0+NBXN+NHN+NH0+NPHIN+NGN, sizeof(double)); + + for(int i=0; i reset memory - int qp_status; - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "qp_status", &qp_status); - if (reset_qp_solver_mem || (qp_status == 3)) { - // printf("\nin reset qp_status %d -> resetting QP memory\n", qp_status); - ocp_nlp_solver_reset_qp_memory(nlp_solver, nlp_in, nlp_out); - } - - free(buffer); - return 0; + // get qp_status: if NaN -> reset memory + int qp_status; + ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "qp_status", &qp_status); + if (reset_qp_solver_mem || (qp_status == 3)) + { + // printf("\nin reset qp_status %d -> resetting QP memory\n", qp_status); + ocp_nlp_solver_reset_qp_memory(nlp_solver, nlp_in, nlp_out); + } + + free(buffer); + return 0; } -int mock_acados_solver_acados_update_params( - mock_acados_solver_solver_capsule * capsule, int stage, - double * p, int np) -{ - int solver_status = 0; - - int casadi_np = 2; - if (casadi_np != np) { - printf( - "acados_update_params: trying to set %i parameters for external functions." - " External function has %i parameters. Exiting.\n", np, casadi_np); - exit(1); - } - - const int N = capsule->nlp_solver_plan->N; - if (stage < N && stage >= 0) { - capsule->impl_dae_fun[stage].set_param(capsule->impl_dae_fun + stage, p); - capsule->impl_dae_fun_jac_x_xdot_z[stage].set_param( - capsule->impl_dae_fun_jac_x_xdot_z + stage, - p); - capsule->impl_dae_jac_x_xdot_u_z[stage].set_param(capsule->impl_dae_jac_x_xdot_u_z + stage, p); - capsule->impl_dae_hess[stage].set_param(capsule->impl_dae_hess + stage, p); - // constraints - +int mock_acados_solver_acados_update_params(mock_acados_solver_solver_capsule* capsule, int stage, double *p, int np) +{ + int solver_status = 0; - // cost - if (stage == 0) { - capsule->ext_cost_0_fun.set_param(&capsule->ext_cost_0_fun, p); - capsule->ext_cost_0_fun_jac.set_param(&capsule->ext_cost_0_fun_jac, p); - capsule->ext_cost_0_fun_jac_hess.set_param(&capsule->ext_cost_0_fun_jac_hess, p); - - } else { // 0 < stage < N - capsule->ext_cost_fun[stage - 1].set_param(capsule->ext_cost_fun + stage - 1, p); - capsule->ext_cost_fun_jac[stage - 1].set_param(capsule->ext_cost_fun_jac + stage - 1, p); - capsule->ext_cost_fun_jac_hess[stage - 1].set_param( - capsule->ext_cost_fun_jac_hess + stage - 1, p); + int casadi_np = 2; + if (casadi_np != np) { + printf("acados_update_params: trying to set %i parameters for external functions." + " External function has %i parameters. Exiting.\n", np, casadi_np); + exit(1); } - } else { // stage == N - // terminal shooting node has no dynamics - // cost - capsule->ext_cost_e_fun.set_param(&capsule->ext_cost_e_fun, p); - capsule->ext_cost_e_fun_jac.set_param(&capsule->ext_cost_e_fun_jac, p); - capsule->ext_cost_e_fun_jac_hess.set_param(&capsule->ext_cost_e_fun_jac_hess, p); - // constraints + const int N = capsule->nlp_solver_plan->N; + if (stage < N && stage >= 0) + { + capsule->impl_dae_fun[stage].set_param(capsule->impl_dae_fun+stage, p); + capsule->impl_dae_fun_jac_x_xdot_z[stage].set_param(capsule->impl_dae_fun_jac_x_xdot_z+stage, p); + capsule->impl_dae_jac_x_xdot_u_z[stage].set_param(capsule->impl_dae_jac_x_xdot_u_z+stage, p); + capsule->impl_dae_hess[stage].set_param(capsule->impl_dae_hess+stage, p); + + // constraints + if (stage == 0) + { + } + else + { + } + + // cost + if (stage == 0) + { + capsule->ext_cost_0_fun.set_param(&capsule->ext_cost_0_fun, p); + capsule->ext_cost_0_fun_jac.set_param(&capsule->ext_cost_0_fun_jac, p); + capsule->ext_cost_0_fun_jac_hess.set_param(&capsule->ext_cost_0_fun_jac_hess, p); + + + } + else // 0 < stage < N + { + capsule->ext_cost_fun[stage-1].set_param(capsule->ext_cost_fun+stage-1, p); + capsule->ext_cost_fun_jac[stage-1].set_param(capsule->ext_cost_fun_jac+stage-1, p); + capsule->ext_cost_fun_jac_hess[stage-1].set_param(capsule->ext_cost_fun_jac_hess+stage-1, p); + + + } + } - } + else // stage == N + { + // terminal shooting node has no dynamics + // cost + capsule->ext_cost_e_fun.set_param(&capsule->ext_cost_e_fun, p); + capsule->ext_cost_e_fun_jac.set_param(&capsule->ext_cost_e_fun_jac, p); + capsule->ext_cost_e_fun_jac_hess.set_param(&capsule->ext_cost_e_fun_jac_hess, p); + + + // constraints + } - return solver_status; + return solver_status; } -int mock_acados_solver_acados_update_params_sparse( - mock_acados_solver_solver_capsule * capsule, - int stage, int * idx, double * p, int n_update) +int mock_acados_solver_acados_update_params_sparse(mock_acados_solver_solver_capsule * capsule, int stage, int *idx, double *p, int n_update) { - int solver_status = 0; - - int casadi_np = 2; - if (casadi_np < n_update) { - printf( - "mock_acados_solver_acados_update_params_sparse: trying to set %d parameters for external functions." - " External function has %d parameters. Exiting.\n", n_update, - casadi_np); - exit(1); - } - // for (int i = 0; i < n_update; i++) - // { - // if (idx[i] > casadi_np) { - // printf("mock_acados_solver_acados_update_params_sparse: attempt to set parameters with index %d, while" - // " external functions only has %d parameters. Exiting.\n", idx[i], casadi_np); - // exit(1); - // } - // printf("param %d value %e\n", idx[i], p[i]); - // } - const int N = capsule->nlp_solver_plan->N; - if (stage < N && stage >= 0) { - capsule->impl_dae_fun[stage].set_param_sparse(capsule->impl_dae_fun + stage, n_update, idx, p); - capsule->impl_dae_fun_jac_x_xdot_z[stage].set_param_sparse( - capsule->impl_dae_fun_jac_x_xdot_z + stage, n_update, idx, p); - capsule->impl_dae_jac_x_xdot_u_z[stage].set_param_sparse( - capsule->impl_dae_jac_x_xdot_u_z + stage, n_update, idx, p); - capsule->impl_dae_hess[stage].set_param_sparse( - capsule->impl_dae_hess + stage, n_update, idx, - p); + int solver_status = 0; - - // constraints - - - // cost - if (stage == 0) { - capsule->ext_cost_0_fun.set_param_sparse(&capsule->ext_cost_0_fun, n_update, idx, p); - capsule->ext_cost_0_fun_jac.set_param_sparse(&capsule->ext_cost_0_fun_jac, n_update, idx, p); - capsule->ext_cost_0_fun_jac_hess.set_param_sparse( - &capsule->ext_cost_0_fun_jac_hess, n_update, - idx, p); - - } else { // 0 < stage < N - capsule->ext_cost_fun[stage - 1].set_param_sparse( - capsule->ext_cost_fun + stage - 1, n_update, - idx, p); - capsule->ext_cost_fun_jac[stage - 1].set_param_sparse( - capsule->ext_cost_fun_jac + stage - 1, - n_update, idx, p); - capsule->ext_cost_fun_jac_hess[stage - 1].set_param_sparse( - capsule->ext_cost_fun_jac_hess + stage - 1, n_update, idx, p); + int casadi_np = 2; + if (casadi_np < n_update) { + printf("mock_acados_solver_acados_update_params_sparse: trying to set %d parameters for external functions." + " External function has %d parameters. Exiting.\n", n_update, casadi_np); + exit(1); + } + // for (int i = 0; i < n_update; i++) + // { + // if (idx[i] > casadi_np) { + // printf("mock_acados_solver_acados_update_params_sparse: attempt to set parameters with index %d, while" + // " external functions only has %d parameters. Exiting.\n", idx[i], casadi_np); + // exit(1); + // } + // printf("param %d value %e\n", idx[i], p[i]); + // } + const int N = capsule->nlp_solver_plan->N; + if (stage < N && stage >= 0) + { + capsule->impl_dae_fun[stage].set_param_sparse(capsule->impl_dae_fun+stage, n_update, idx, p); + capsule->impl_dae_fun_jac_x_xdot_z[stage].set_param_sparse(capsule->impl_dae_fun_jac_x_xdot_z+stage, n_update, idx, p); + capsule->impl_dae_jac_x_xdot_u_z[stage].set_param_sparse(capsule->impl_dae_jac_x_xdot_u_z+stage, n_update, idx, p); + capsule->impl_dae_hess[stage].set_param_sparse(capsule->impl_dae_hess+stage, n_update, idx, p); + + // constraints + if (stage == 0) + { + } + else + { + } + + // cost + if (stage == 0) + { + capsule->ext_cost_0_fun.set_param_sparse(&capsule->ext_cost_0_fun, n_update, idx, p); + capsule->ext_cost_0_fun_jac.set_param_sparse(&capsule->ext_cost_0_fun_jac, n_update, idx, p); + capsule->ext_cost_0_fun_jac_hess.set_param_sparse(&capsule->ext_cost_0_fun_jac_hess, n_update, idx, p); + + + } + else // 0 < stage < N + { + capsule->ext_cost_fun[stage-1].set_param_sparse(capsule->ext_cost_fun+stage-1, n_update, idx, p); + capsule->ext_cost_fun_jac[stage-1].set_param_sparse(capsule->ext_cost_fun_jac+stage-1, n_update, idx, p); + capsule->ext_cost_fun_jac_hess[stage-1].set_param_sparse(capsule->ext_cost_fun_jac_hess+stage-1, n_update, idx, p); + + + } } - } else { // stage == N - // terminal shooting node has no dynamics - // cost - capsule->ext_cost_e_fun.set_param_sparse(&capsule->ext_cost_e_fun, n_update, idx, p); - capsule->ext_cost_e_fun_jac.set_param_sparse(&capsule->ext_cost_e_fun_jac, n_update, idx, p); - capsule->ext_cost_e_fun_jac_hess.set_param_sparse( - &capsule->ext_cost_e_fun_jac_hess, n_update, - idx, p); - - // constraints - } + else // stage == N + { + // terminal shooting node has no dynamics + // cost + capsule->ext_cost_e_fun.set_param_sparse(&capsule->ext_cost_e_fun, n_update, idx, p); + capsule->ext_cost_e_fun_jac.set_param_sparse(&capsule->ext_cost_e_fun_jac, n_update, idx, p); + capsule->ext_cost_e_fun_jac_hess.set_param_sparse(&capsule->ext_cost_e_fun_jac_hess, n_update, idx, p); + + + // constraints + } - return solver_status; + return solver_status; } -int mock_acados_solver_acados_solve(mock_acados_solver_solver_capsule * capsule) +int mock_acados_solver_acados_solve(mock_acados_solver_solver_capsule* capsule) { - // solve NLP - int solver_status = ocp_nlp_solve(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); + // solve NLP + int solver_status = ocp_nlp_solve(capsule->nlp_solver, capsule->nlp_in, capsule->nlp_out); - return solver_status; + return solver_status; } -int mock_acados_solver_acados_free(mock_acados_solver_solver_capsule * capsule) +int mock_acados_solver_acados_free(mock_acados_solver_solver_capsule* capsule) { - // before destroying, keep some info - const int N = capsule->nlp_solver_plan->N; - // free memory - ocp_nlp_solver_opts_destroy(capsule->nlp_opts); - ocp_nlp_in_destroy(capsule->nlp_in); - ocp_nlp_out_destroy(capsule->nlp_out); - ocp_nlp_out_destroy(capsule->sens_out); - ocp_nlp_solver_destroy(capsule->nlp_solver); - ocp_nlp_dims_destroy(capsule->nlp_dims); - ocp_nlp_config_destroy(capsule->nlp_config); - ocp_nlp_plan_destroy(capsule->nlp_solver_plan); - - /* free external function */ - // dynamics - for (int i = 0; i < N; i++) { - external_function_param_casadi_free(&capsule->impl_dae_fun[i]); - external_function_param_casadi_free(&capsule->impl_dae_fun_jac_x_xdot_z[i]); - external_function_param_casadi_free(&capsule->impl_dae_jac_x_xdot_u_z[i]); - external_function_param_casadi_free(&capsule->impl_dae_hess[i]); - } - free(capsule->impl_dae_fun); - free(capsule->impl_dae_fun_jac_x_xdot_z); - free(capsule->impl_dae_jac_x_xdot_u_z); - free(capsule->impl_dae_hess); - - // cost - external_function_param_casadi_free(&capsule->ext_cost_0_fun); - external_function_param_casadi_free(&capsule->ext_cost_0_fun_jac); - external_function_param_casadi_free(&capsule->ext_cost_0_fun_jac_hess); - for (int i = 0; i < N - 1; i++) { - external_function_param_casadi_free(&capsule->ext_cost_fun[i]); - external_function_param_casadi_free(&capsule->ext_cost_fun_jac[i]); - external_function_param_casadi_free(&capsule->ext_cost_fun_jac_hess[i]); - } - free(capsule->ext_cost_fun); - free(capsule->ext_cost_fun_jac); - free(capsule->ext_cost_fun_jac_hess); - external_function_param_casadi_free(&capsule->ext_cost_e_fun); - external_function_param_casadi_free(&capsule->ext_cost_e_fun_jac); - external_function_param_casadi_free(&capsule->ext_cost_e_fun_jac_hess); - - // constraints - - return 0; + // before destroying, keep some info + const int N = capsule->nlp_solver_plan->N; + // free memory + ocp_nlp_solver_opts_destroy(capsule->nlp_opts); + ocp_nlp_in_destroy(capsule->nlp_in); + ocp_nlp_out_destroy(capsule->nlp_out); + ocp_nlp_out_destroy(capsule->sens_out); + ocp_nlp_solver_destroy(capsule->nlp_solver); + ocp_nlp_dims_destroy(capsule->nlp_dims); + ocp_nlp_config_destroy(capsule->nlp_config); + ocp_nlp_plan_destroy(capsule->nlp_solver_plan); + + /* free external function */ + // dynamics + for (int i = 0; i < N; i++) + { + external_function_param_casadi_free(&capsule->impl_dae_fun[i]); + external_function_param_casadi_free(&capsule->impl_dae_fun_jac_x_xdot_z[i]); + external_function_param_casadi_free(&capsule->impl_dae_jac_x_xdot_u_z[i]); + external_function_param_casadi_free(&capsule->impl_dae_hess[i]); + } + free(capsule->impl_dae_fun); + free(capsule->impl_dae_fun_jac_x_xdot_z); + free(capsule->impl_dae_jac_x_xdot_u_z); + free(capsule->impl_dae_hess); + + // cost + external_function_param_casadi_free(&capsule->ext_cost_0_fun); + external_function_param_casadi_free(&capsule->ext_cost_0_fun_jac); + external_function_param_casadi_free(&capsule->ext_cost_0_fun_jac_hess); + + + for (int i = 0; i < N - 1; i++) + { + external_function_param_casadi_free(&capsule->ext_cost_fun[i]); + external_function_param_casadi_free(&capsule->ext_cost_fun_jac[i]); + external_function_param_casadi_free(&capsule->ext_cost_fun_jac_hess[i]); + + + } + free(capsule->ext_cost_fun); + free(capsule->ext_cost_fun_jac); + free(capsule->ext_cost_fun_jac_hess); + external_function_param_casadi_free(&capsule->ext_cost_e_fun); + external_function_param_casadi_free(&capsule->ext_cost_e_fun_jac); + external_function_param_casadi_free(&capsule->ext_cost_e_fun_jac_hess); + + + + // constraints + + return 0; } -void mock_acados_solver_acados_print_stats(mock_acados_solver_solver_capsule * capsule) +void mock_acados_solver_acados_print_stats(mock_acados_solver_solver_capsule* capsule) { - int sqp_iter, stat_m, stat_n, tmp_int; - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "sqp_iter", &sqp_iter); - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "stat_n", &stat_n); - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "stat_m", &stat_m); - - - double stat[1200]; - ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "statistics", stat); - - int nrow = sqp_iter + 1 < stat_m ? sqp_iter + 1 : stat_m; - - printf("iter\tres_stat\tres_eq\t\tres_ineq\tres_comp\tqp_stat\tqp_iter\talpha"); - if (stat_n > 8) { - printf("\t\tqp_res_stat\tqp_res_eq\tqp_res_ineq\tqp_res_comp"); - } - printf("\n"); - - for (int i = 0; i < nrow; i++) { - for (int j = 0; j < stat_n + 1; j++) { - if (j == 0 || j == 5 || j == 6) { - tmp_int = (int) stat[i + j * nrow]; - printf("%d\t", tmp_int); - } else { - printf("%e\t", stat[i + j * nrow]); - } - } + int sqp_iter, stat_m, stat_n, tmp_int; + ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "sqp_iter", &sqp_iter); + ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "stat_n", &stat_n); + ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "stat_m", &stat_m); + + + double stat[1200]; + ocp_nlp_get(capsule->nlp_config, capsule->nlp_solver, "statistics", stat); + + int nrow = sqp_iter+1 < stat_m ? sqp_iter+1 : stat_m; + + printf("iter\tres_stat\tres_eq\t\tres_ineq\tres_comp\tqp_stat\tqp_iter\talpha"); + if (stat_n > 8) + printf("\t\tqp_res_stat\tqp_res_eq\tqp_res_ineq\tqp_res_comp"); printf("\n"); - } + + for (int i = 0; i < nrow; i++) + { + for (int j = 0; j < stat_n + 1; j++) + { + if (j == 0 || j == 5 || j == 6) + { + tmp_int = (int) stat[i + j * nrow]; + printf("%d\t", tmp_int); + } + else + { + printf("%e\t", stat[i + j * nrow]); + } + } + printf("\n"); + } } -int mock_acados_solver_acados_custom_update( - mock_acados_solver_solver_capsule * capsule, - double * data, int data_len) +int mock_acados_solver_acados_custom_update(mock_acados_solver_solver_capsule* capsule, double* data, int data_len) { - (void)capsule; - (void)data; - (void)data_len; - printf( - "\ndummy function that can be called in between solver calls to update parameters or numerical data efficiently in C.\n"); - printf("nothing set yet..\n"); - return 1; + (void)capsule; + (void)data; + (void)data_len; + printf("\ndummy function that can be called in between solver calls to update parameters or numerical data efficiently in C.\n"); + printf("nothing set yet..\n"); + return 1; } -ocp_nlp_in * mock_acados_solver_acados_get_nlp_in(mock_acados_solver_solver_capsule * capsule) -{ - return capsule->nlp_in; -} -ocp_nlp_out * mock_acados_solver_acados_get_nlp_out(mock_acados_solver_solver_capsule * capsule) -{ - return capsule->nlp_out; -} -ocp_nlp_out * mock_acados_solver_acados_get_sens_out(mock_acados_solver_solver_capsule * capsule) -{ - return capsule->sens_out; -} -ocp_nlp_solver * mock_acados_solver_acados_get_nlp_solver( - mock_acados_solver_solver_capsule * capsule) {return capsule->nlp_solver;} -ocp_nlp_config * mock_acados_solver_acados_get_nlp_config( - mock_acados_solver_solver_capsule * capsule) {return capsule->nlp_config;} -void * mock_acados_solver_acados_get_nlp_opts(mock_acados_solver_solver_capsule * capsule) -{ - return capsule->nlp_opts; -} -ocp_nlp_dims * mock_acados_solver_acados_get_nlp_dims(mock_acados_solver_solver_capsule * capsule) -{ - return capsule->nlp_dims; -} -ocp_nlp_plan_t * mock_acados_solver_acados_get_nlp_plan(mock_acados_solver_solver_capsule * capsule) -{ - return capsule->nlp_solver_plan; -} + +ocp_nlp_in *mock_acados_solver_acados_get_nlp_in(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_in; } +ocp_nlp_out *mock_acados_solver_acados_get_nlp_out(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_out; } +ocp_nlp_out *mock_acados_solver_acados_get_sens_out(mock_acados_solver_solver_capsule* capsule) { return capsule->sens_out; } +ocp_nlp_solver *mock_acados_solver_acados_get_nlp_solver(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_solver; } +ocp_nlp_config *mock_acados_solver_acados_get_nlp_config(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_config; } +void *mock_acados_solver_acados_get_nlp_opts(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_opts; } +ocp_nlp_dims *mock_acados_solver_acados_get_nlp_dims(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_dims; } +ocp_nlp_plan_t *mock_acados_solver_acados_get_nlp_plan(mock_acados_solver_solver_capsule* capsule) { return capsule->nlp_solver_plan; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.h b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.h index 69b37e2..63a0374 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.h +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/acados_solver_mock_acados_solver.h @@ -46,13 +46,16 @@ #define MOCK_ACADOS_SOLVER_NSBX 0 #define MOCK_ACADOS_SOLVER_NSBU 0 #define MOCK_ACADOS_SOLVER_NSH 0 +#define MOCK_ACADOS_SOLVER_NSH0 0 #define MOCK_ACADOS_SOLVER_NSG 0 #define MOCK_ACADOS_SOLVER_NSPHI 0 #define MOCK_ACADOS_SOLVER_NSHN 0 #define MOCK_ACADOS_SOLVER_NSGN 0 #define MOCK_ACADOS_SOLVER_NSPHIN 0 +#define MOCK_ACADOS_SOLVER_NSPHI0 0 #define MOCK_ACADOS_SOLVER_NSBXN 0 #define MOCK_ACADOS_SOLVER_NS 0 +#define MOCK_ACADOS_SOLVER_NS0 0 #define MOCK_ACADOS_SOLVER_NSN 0 #define MOCK_ACADOS_SOLVER_NG 0 #define MOCK_ACADOS_SOLVER_NBXN 1 @@ -62,8 +65,10 @@ #define MOCK_ACADOS_SOLVER_NYN 0 #define MOCK_ACADOS_SOLVER_N 20 #define MOCK_ACADOS_SOLVER_NH 0 -#define MOCK_ACADOS_SOLVER_NPHI 0 #define MOCK_ACADOS_SOLVER_NHN 0 +#define MOCK_ACADOS_SOLVER_NH0 0 +#define MOCK_ACADOS_SOLVER_NPHI0 0 +#define MOCK_ACADOS_SOLVER_NPHI 0 #define MOCK_ACADOS_SOLVER_NPHIN 0 #define MOCK_ACADOS_SOLVER_NR 0 @@ -75,110 +80,102 @@ extern "C" { // ** capsule for solver data ** typedef struct mock_acados_solver_solver_capsule { - // acados objects - ocp_nlp_in * nlp_in; - ocp_nlp_out * nlp_out; - ocp_nlp_out * sens_out; - ocp_nlp_solver * nlp_solver; - void * nlp_opts; - ocp_nlp_plan_t * nlp_solver_plan; - ocp_nlp_config * nlp_config; - ocp_nlp_dims * nlp_dims; + // acados objects + ocp_nlp_in *nlp_in; + ocp_nlp_out *nlp_out; + ocp_nlp_out *sens_out; + ocp_nlp_solver *nlp_solver; + void *nlp_opts; + ocp_nlp_plan_t *nlp_solver_plan; + ocp_nlp_config *nlp_config; + ocp_nlp_dims *nlp_dims; + + // number of expected runtime parameters + unsigned int nlp_np; + + /* external functions */ + // dynamics + + external_function_param_casadi *impl_dae_fun; + external_function_param_casadi *impl_dae_fun_jac_x_xdot_z; + external_function_param_casadi *impl_dae_jac_x_xdot_u_z; + + external_function_param_casadi *impl_dae_hess; + + + + // cost + + external_function_param_casadi *ext_cost_fun; + external_function_param_casadi *ext_cost_fun_jac; + external_function_param_casadi *ext_cost_fun_jac_hess; + + + + + + external_function_param_casadi ext_cost_0_fun; + external_function_param_casadi ext_cost_0_fun_jac; + external_function_param_casadi ext_cost_0_fun_jac_hess; - // number of expected runtime parameters - unsigned int nlp_np; - /* external functions */ - // dynamics - external_function_param_casadi * impl_dae_fun; - external_function_param_casadi * impl_dae_fun_jac_x_xdot_z; - external_function_param_casadi * impl_dae_jac_x_xdot_u_z; - external_function_param_casadi * impl_dae_hess; + external_function_param_casadi ext_cost_e_fun; + external_function_param_casadi ext_cost_e_fun_jac; + external_function_param_casadi ext_cost_e_fun_jac_hess; - // cost - external_function_param_casadi * ext_cost_fun; - external_function_param_casadi * ext_cost_fun_jac; - external_function_param_casadi * ext_cost_fun_jac_hess; + // constraints - external_function_param_casadi ext_cost_0_fun; - external_function_param_casadi ext_cost_0_fun_jac; - external_function_param_casadi ext_cost_0_fun_jac_hess; - external_function_param_casadi ext_cost_e_fun; - external_function_param_casadi ext_cost_e_fun_jac; - external_function_param_casadi ext_cost_e_fun_jac_hess; - // constraints } mock_acados_solver_solver_capsule; -ACADOS_SYMBOL_EXPORT mock_acados_solver_solver_capsule * mock_acados_solver_acados_create_capsule( - void); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_free_capsule( - mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT mock_acados_solver_solver_capsule * mock_acados_solver_acados_create_capsule(void); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_free_capsule(mock_acados_solver_solver_capsule *capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_create( - mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_create(mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_reset( - mock_acados_solver_solver_capsule * capsule, int reset_qp_solver_mem); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_reset(mock_acados_solver_solver_capsule* capsule, int reset_qp_solver_mem); /** * Generic version of mock_acados_solver_acados_create which allows to use a different number of shooting intervals than * the number used for code generation. If new_time_steps=NULL and n_time_steps matches the number used for code * generation, the time-steps from code generation is used. */ -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_create_with_discretization( - mock_acados_solver_solver_capsule * capsule, int n_time_steps, double * new_time_steps); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_create_with_discretization(mock_acados_solver_solver_capsule * capsule, int n_time_steps, double* new_time_steps); /** * Update the time step vector. Number N must be identical to the currently set number of shooting nodes in the * nlp_solver_plan. Returns 0 if no error occurred and a otherwise a value other than 0. */ -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_time_steps( - mock_acados_solver_solver_capsule * capsule, int N, double * new_time_steps); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_time_steps(mock_acados_solver_solver_capsule * capsule, int N, double* new_time_steps); /** * This function is used for updating an already initialized solver with a different number of qp_cond_N. */ -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_qp_solver_cond_N( - mock_acados_solver_solver_capsule * capsule, int qp_solver_cond_N); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_params( - mock_acados_solver_solver_capsule * capsule, int stage, double * value, int np); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_params_sparse( - mock_acados_solver_solver_capsule * capsule, int stage, int * idx, double * p, int n_update); - -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_solve( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_free( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT void mock_acados_solver_acados_print_stats( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_custom_update( - mock_acados_solver_solver_capsule * capsule, double * data, int data_len); - - -ACADOS_SYMBOL_EXPORT ocp_nlp_in * mock_acados_solver_acados_get_nlp_in( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT ocp_nlp_out * mock_acados_solver_acados_get_nlp_out( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT ocp_nlp_out * mock_acados_solver_acados_get_sens_out( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT ocp_nlp_solver * mock_acados_solver_acados_get_nlp_solver( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT ocp_nlp_config * mock_acados_solver_acados_get_nlp_config( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT void * mock_acados_solver_acados_get_nlp_opts( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT ocp_nlp_dims * mock_acados_solver_acados_get_nlp_dims( - mock_acados_solver_solver_capsule * capsule); -ACADOS_SYMBOL_EXPORT ocp_nlp_plan_t * mock_acados_solver_acados_get_nlp_plan( - mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_qp_solver_cond_N(mock_acados_solver_solver_capsule * capsule, int qp_solver_cond_N); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_params(mock_acados_solver_solver_capsule * capsule, int stage, double *value, int np); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_update_params_sparse(mock_acados_solver_solver_capsule * capsule, int stage, int *idx, double *p, int n_update); + +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_solve(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_free(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT void mock_acados_solver_acados_print_stats(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT int mock_acados_solver_acados_custom_update(mock_acados_solver_solver_capsule* capsule, double* data, int data_len); + + +ACADOS_SYMBOL_EXPORT ocp_nlp_in *mock_acados_solver_acados_get_nlp_in(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT ocp_nlp_out *mock_acados_solver_acados_get_nlp_out(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT ocp_nlp_out *mock_acados_solver_acados_get_sens_out(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT ocp_nlp_solver *mock_acados_solver_acados_get_nlp_solver(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT ocp_nlp_config *mock_acados_solver_acados_get_nlp_config(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT void *mock_acados_solver_acados_get_nlp_opts(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT ocp_nlp_dims *mock_acados_solver_acados_get_nlp_dims(mock_acados_solver_solver_capsule * capsule); +ACADOS_SYMBOL_EXPORT ocp_nlp_plan_t *mock_acados_solver_acados_get_nlp_plan(mock_acados_solver_solver_capsule * capsule); #ifdef __cplusplus } /* extern "C" */ diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/legacy_CMakeLists.txt b/acados_solver_base/test/mock_acados_solver/generated_c_code/legacy_CMakeLists.txt index 5402166..19fde9c 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/legacy_CMakeLists.txt +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/legacy_CMakeLists.txt @@ -43,9 +43,20 @@ option(BUILD_ACADOS_SIM_SOLVER_LIB "Should the simulation solver library acados_ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_SYSTEM_NAME MATCHES "Windows") - # MinGW, change to .lib such that mex recognizes it - set(CMAKE_SHARED_LIBRARY_SUFFIX ".lib") + # MinGW: remove prefix and change suffix to match MSVC + # (such that Matlab mex recognizes the libraries) set(CMAKE_SHARED_LIBRARY_PREFIX "") + set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib") + set(CMAKE_IMPORT_LIBRARY_PREFIX "") + set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib") + set(CMAKE_STATIC_LIBRARY_PREFIX "") +endif() + + +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE /home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/src/external/acados_solver_ros2/acados_solver_plugins/src/plugins/mock_acados_solver/generated_c_code) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE /home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/src/external/acados_solver_ros2/acados_solver_plugins/src/plugins/mock_acados_solver/generated_c_code) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE /home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/src/external/acados_solver_ros2/acados_solver_plugins/src/plugins/mock_acados_solver/generated_c_code) endif() @@ -69,12 +80,18 @@ if(${BUILD_ACADOS_SOLVER_LIB} OR ${BUILD_ACADOS_OCP_SOLVER_LIB} OR ${BUILD_EXAMP mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun.c mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac.c mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac_hess.c + + mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun.c mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac.c mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac_hess.c + + mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun.c mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac.c mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac_hess.c + + acados_solver_mock_acados_solver.c) add_library(${OCP_OBJ} OBJECT ${OCP_SRC}) endif() @@ -92,8 +109,8 @@ set(EXTERNAL_DIR) set(EXTERNAL_LIB) # set some search paths for preprocessor and linker -set(ACADOS_INCLUDE_PATH /home/tpoignonec/dev/ros2_ws/install/acados_vendor_ros2/opt/acados_vendor_ros2/include CACHE PATH "Define the path which contains the include directory for acados.") -set(ACADOS_LIB_PATH /home/tpoignonec/dev/ros2_ws/install/acados_vendor_ros2/opt/acados_vendor_ros2/lib CACHE PATH "Define the path which contains the lib directory for acados.") +set(ACADOS_INCLUDE_PATH /home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/install/acados_vendor_ros2/opt/acados_vendor_ros2/include CACHE PATH "Define the path which contains the include directory for acados.") +set(ACADOS_LIB_PATH /home/tpoignonec/dev/ros2_workspaces/ws_passive_nmpic_ros2/install/acados_vendor_ros2/opt/acados_vendor_ros2/lib CACHE PATH "Define the path which contains the lib directory for acados.") # c-compiler flags for debugging set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb") @@ -159,3 +176,10 @@ if(${BUILD_ACADOS_SIM_SOLVER_LIB}) add_library(${LIB_ACADOS_SIM_SOLVER} SHARED $ $) install(TARGETS ${LIB_ACADOS_SIM_SOLVER} DESTINATION ${CMAKE_INSTALL_PREFIX}) endif(${BUILD_ACADOS_SIM_SOLVER_LIB}) + +# unset options for clean cmake cache on subsequent cmake runs +unset(BUILD_ACADOS_SOLVER_LIB CACHE) +unset(BUILD_ACADOS_OCP_SOLVER_LIB CACHE) +unset(BUILD_EXAMPLE CACHE) +unset(BUILD_SIM_EXAMPLE CACHE) +unset(BUILD_ACADOS_SIM_SOLVER_LIB CACHE) \ No newline at end of file diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/libacados_ocp_solver_mock_acados_solver.so b/acados_solver_base/test/mock_acados_solver/generated_c_code/libacados_ocp_solver_mock_acados_solver.so index da2934c7b2f61010efec19ca8e56d73816da6a27..7915ebd3a5409ad8814b6db4f82349b6472f92f3 100644 GIT binary patch literal 103168 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�^oVzYPTy0_vy0}^!NUUv{&`v-`^Pf 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 literal 102176 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 diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/main_mock_acados_solver.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/main_mock_acados_solver.c index 1aa3be4..80d5c5d 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/main_mock_acados_solver.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/main_mock_acados_solver.c @@ -43,173 +43,131 @@ #include "blasfeo/include/blasfeo_d_aux_ext_dep.h" #define NX MOCK_ACADOS_SOLVER_NX -#define NZ MOCK_ACADOS_SOLVER_NZ -#define NU MOCK_ACADOS_SOLVER_NU #define NP MOCK_ACADOS_SOLVER_NP -#define NBX MOCK_ACADOS_SOLVER_NBX +#define NU MOCK_ACADOS_SOLVER_NU #define NBX0 MOCK_ACADOS_SOLVER_NBX0 -#define NBU MOCK_ACADOS_SOLVER_NBU -#define NSBX MOCK_ACADOS_SOLVER_NSBX -#define NSBU MOCK_ACADOS_SOLVER_NSBU -#define NSH MOCK_ACADOS_SOLVER_NSH -#define NSG MOCK_ACADOS_SOLVER_NSG -#define NSPHI MOCK_ACADOS_SOLVER_NSPHI -#define NSHN MOCK_ACADOS_SOLVER_NSHN -#define NSGN MOCK_ACADOS_SOLVER_NSGN -#define NSPHIN MOCK_ACADOS_SOLVER_NSPHIN -#define NSBXN MOCK_ACADOS_SOLVER_NSBXN -#define NS MOCK_ACADOS_SOLVER_NS -#define NSN MOCK_ACADOS_SOLVER_NSN -#define NG MOCK_ACADOS_SOLVER_NG -#define NBXN MOCK_ACADOS_SOLVER_NBXN -#define NGN MOCK_ACADOS_SOLVER_NGN -#define NY0 MOCK_ACADOS_SOLVER_NY0 -#define NY MOCK_ACADOS_SOLVER_NY -#define NYN MOCK_ACADOS_SOLVER_NYN -#define NH MOCK_ACADOS_SOLVER_NH -#define NPHI MOCK_ACADOS_SOLVER_NPHI -#define NHN MOCK_ACADOS_SOLVER_NHN -#define NPHIN MOCK_ACADOS_SOLVER_NPHIN -#define NR MOCK_ACADOS_SOLVER_NR int main() { - mock_acados_solver_solver_capsule * acados_ocp_capsule = - mock_acados_solver_acados_create_capsule(); - // there is an opportunity to change the number of shooting intervals in C without new code generation - int N = MOCK_ACADOS_SOLVER_N; - // allocate the array and fill it accordingly - double * new_time_steps = NULL; - int status = mock_acados_solver_acados_create_with_discretization( - acados_ocp_capsule, N, - new_time_steps); - - if (status) { - printf("mock_acados_solver_acados_create() returned status %d. Exiting.\n", status); - exit(1); - } - - ocp_nlp_config * nlp_config = mock_acados_solver_acados_get_nlp_config(acados_ocp_capsule); - ocp_nlp_dims * nlp_dims = mock_acados_solver_acados_get_nlp_dims(acados_ocp_capsule); - ocp_nlp_in * nlp_in = mock_acados_solver_acados_get_nlp_in(acados_ocp_capsule); - ocp_nlp_out * nlp_out = mock_acados_solver_acados_get_nlp_out(acados_ocp_capsule); - ocp_nlp_solver * nlp_solver = mock_acados_solver_acados_get_nlp_solver(acados_ocp_capsule); - void * nlp_opts = mock_acados_solver_acados_get_nlp_opts(acados_ocp_capsule); - - // initial condition - int idxbx0[NBX0]; - idxbx0[0] = 0; - idxbx0[1] = 1; - idxbx0[2] = 2; - idxbx0[3] = 3; - - double lbx0[NBX0]; - double ubx0[NBX0]; - lbx0[0] = 0; - ubx0[0] = 0; - lbx0[1] = 3.141592653589793; - ubx0[1] = 3.141592653589793; - lbx0[2] = 0; - ubx0[2] = 0; - lbx0[3] = 0; - ubx0[3] = 0; - - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "idxbx", idxbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "lbx", lbx0); - ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "ubx", ubx0); - - // initialization for state values - double x_init[NX]; - x_init[0] = 0.0; - x_init[1] = 0.0; - x_init[2] = 0.0; - x_init[3] = 0.0; - - // initial value for control input - double u0[NU]; - u0[0] = 0.0; - // set parameters - double p[NP]; - p[0] = 1; - p[1] = 0.1; - - for (int ii = 0; ii <= N; ii++) { - mock_acados_solver_acados_update_params(acados_ocp_capsule, ii, p, NP); - } - - - // prepare evaluation - int NTIMINGS = 1; - double min_time = 1e12; - double kkt_norm_inf; - double elapsed_time; - int sqp_iter; - - double xtraj[NX * (N + 1)]; - double utraj[NU * N]; - - - // solve ocp in loop - int rti_phase = 0; - - for (int ii = 0; ii < NTIMINGS; ii++) { - // initialize solution - for (int i = 0; i < N; i++) { - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", x_init); - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", u0); + mock_acados_solver_solver_capsule *acados_ocp_capsule = mock_acados_solver_acados_create_capsule(); + // there is an opportunity to change the number of shooting intervals in C without new code generation + int N = MOCK_ACADOS_SOLVER_N; + // allocate the array and fill it accordingly + double* new_time_steps = NULL; + int status = mock_acados_solver_acados_create_with_discretization(acados_ocp_capsule, N, new_time_steps); + + if (status) + { + printf("mock_acados_solver_acados_create() returned status %d. Exiting.\n", status); + exit(1); + } + + ocp_nlp_config *nlp_config = mock_acados_solver_acados_get_nlp_config(acados_ocp_capsule); + ocp_nlp_dims *nlp_dims = mock_acados_solver_acados_get_nlp_dims(acados_ocp_capsule); + ocp_nlp_in *nlp_in = mock_acados_solver_acados_get_nlp_in(acados_ocp_capsule); + ocp_nlp_out *nlp_out = mock_acados_solver_acados_get_nlp_out(acados_ocp_capsule); + ocp_nlp_solver *nlp_solver = mock_acados_solver_acados_get_nlp_solver(acados_ocp_capsule); + void *nlp_opts = mock_acados_solver_acados_get_nlp_opts(acados_ocp_capsule); + + // initial condition + double lbx0[NBX0]; + double ubx0[NBX0]; + lbx0[0] = 0; + ubx0[0] = 0; + lbx0[1] = 3.141592653589793; + ubx0[1] = 3.141592653589793; + lbx0[2] = 0; + ubx0[2] = 0; + lbx0[3] = 0; + ubx0[3] = 0; + + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "lbx", lbx0); + ocp_nlp_constraints_model_set(nlp_config, nlp_dims, nlp_in, 0, "ubx", ubx0); + + // initialization for state values + double x_init[NX]; + x_init[0] = 0.0; + x_init[1] = 0.0; + x_init[2] = 0.0; + x_init[3] = 0.0; + + // initial value for control input + double u0[NU]; + u0[0] = 0.0; + + // prepare evaluation + int NTIMINGS = 1; + double min_time = 1e12; + double kkt_norm_inf; + double elapsed_time; + int sqp_iter; + + double xtraj[NX * (N+1)]; + double utraj[NU * N]; + + // solve ocp in loop + int rti_phase = 0; + + for (int ii = 0; ii < NTIMINGS; ii++) + { + // initialize solution + for (int i = 0; i < N; i++) + { + ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "x", x_init); + ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, i, "u", u0); + } + ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, N, "x", x_init); + ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "rti_phase", &rti_phase); + status = mock_acados_solver_acados_solve(acados_ocp_capsule); + ocp_nlp_get(nlp_config, nlp_solver, "time_tot", &elapsed_time); + min_time = MIN(elapsed_time, min_time); + } + + /* print solution and statistics */ + for (int ii = 0; ii <= nlp_dims->N; ii++) + ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, ii, "x", &xtraj[ii*NX]); + for (int ii = 0; ii < nlp_dims->N; ii++) + ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, ii, "u", &utraj[ii*NU]); + + printf("\n--- xtraj ---\n"); + d_print_exp_tran_mat( NX, N+1, xtraj, NX); + printf("\n--- utraj ---\n"); + d_print_exp_tran_mat( NU, N, utraj, NU ); + // ocp_nlp_out_print(nlp_solver->dims, nlp_out); + + printf("\nsolved ocp %d times, solution printed above\n\n", NTIMINGS); + + if (status == ACADOS_SUCCESS) + { + printf("mock_acados_solver_acados_solve(): SUCCESS!\n"); } - ocp_nlp_out_set(nlp_config, nlp_dims, nlp_out, N, "x", x_init); - ocp_nlp_solver_opts_set(nlp_config, nlp_opts, "rti_phase", &rti_phase); - status = mock_acados_solver_acados_solve(acados_ocp_capsule); - ocp_nlp_get(nlp_config, nlp_solver, "time_tot", &elapsed_time); - min_time = MIN(elapsed_time, min_time); - } - - /* print solution and statistics */ - for (int ii = 0; ii <= nlp_dims->N; ii++) { - ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, ii, "x", &xtraj[ii * NX]); - } - for (int ii = 0; ii < nlp_dims->N; ii++) { - ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, ii, "u", &utraj[ii * NU]); - } - - printf("\n--- xtraj ---\n"); - d_print_exp_tran_mat(NX, N + 1, xtraj, NX); - printf("\n--- utraj ---\n"); - d_print_exp_tran_mat(NU, N, utraj, NU); - // ocp_nlp_out_print(nlp_solver->dims, nlp_out); - - printf("\nsolved ocp %d times, solution printed above\n\n", NTIMINGS); - - if (status == ACADOS_SUCCESS) { - printf("mock_acados_solver_acados_solve(): SUCCESS!\n"); - } else { - printf("mock_acados_solver_acados_solve() failed with status %d.\n", status); - } - - // get solution - ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, 0, "kkt_norm_inf", &kkt_norm_inf); - ocp_nlp_get(nlp_config, nlp_solver, "sqp_iter", &sqp_iter); - - mock_acados_solver_acados_print_stats(acados_ocp_capsule); - - printf("\nSolver info:\n"); - printf( - " SQP iterations %2d\n minimum time for %d solve %f [ms]\n KKT %e\n", - sqp_iter, NTIMINGS, min_time * 1000, kkt_norm_inf); - - // free solver - status = mock_acados_solver_acados_free(acados_ocp_capsule); - if (status) { - printf("mock_acados_solver_acados_free() returned status %d. \n", status); - } - // free solver capsule - status = mock_acados_solver_acados_free_capsule(acados_ocp_capsule); - if (status) { - printf("mock_acados_solver_acados_free_capsule() returned status %d. \n", status); - } - - return status; + else + { + printf("mock_acados_solver_acados_solve() failed with status %d.\n", status); + } + + // get solution + ocp_nlp_out_get(nlp_config, nlp_dims, nlp_out, 0, "kkt_norm_inf", &kkt_norm_inf); + ocp_nlp_get(nlp_config, nlp_solver, "sqp_iter", &sqp_iter); + + mock_acados_solver_acados_print_stats(acados_ocp_capsule); + + printf("\nSolver info:\n"); + printf(" SQP iterations %2d\n minimum time for %d solve %f [ms]\n KKT %e\n", + sqp_iter, NTIMINGS, min_time*1000, kkt_norm_inf); + + // free solver + status = mock_acados_solver_acados_free(acados_ocp_capsule); + if (status) { + printf("mock_acados_solver_acados_free() returned status %d. \n", status); + } + // free solver capsule + status = mock_acados_solver_acados_free_capsule(acados_ocp_capsule); + if (status) { + printf("mock_acados_solver_acados_free_capsule() returned status %d. \n", status); + } + + return status; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/main_sim_mock_acados_solver.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/main_sim_mock_acados_solver.c index bc71085..cd817b2 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/main_sim_mock_acados_solver.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/main_sim_mock_acados_solver.c @@ -46,76 +46,91 @@ int main() { - int status = 0; - sim_solver_capsule * capsule = mock_acados_solver_acados_sim_solver_create_capsule(); - status = mock_acados_solver_acados_sim_create(capsule); - - if (status) { - printf("acados_create() returned status %d. Exiting.\n", status); - exit(1); - } - - sim_config * acados_sim_config = mock_acados_solver_acados_get_sim_config(capsule); - sim_in * acados_sim_in = mock_acados_solver_acados_get_sim_in(capsule); - sim_out * acados_sim_out = mock_acados_solver_acados_get_sim_out(capsule); - void * acados_sim_dims = mock_acados_solver_acados_get_sim_dims(capsule); - - // initial condition - double x_current[NX]; - x_current[0] = 0.0; - x_current[1] = 0.0; - x_current[2] = 0.0; - x_current[3] = 0.0; - - - x_current[0] = 0; - x_current[1] = 3.141592653589793; - x_current[2] = 0; - x_current[3] = 0; - - - // initial value for control input - double u0[NU]; - u0[0] = 0.0; - // set parameters - double p[NP]; - p[0] = 1; - p[1] = 0.1; - - mock_acados_solver_acados_sim_update_params(capsule, p, NP); - - - int n_sim_steps = 3; - // solve ocp in loop - for (int ii = 0; ii < n_sim_steps; ii++) { - sim_in_set( - acados_sim_config, acados_sim_dims, - acados_sim_in, "x", x_current); - status = mock_acados_solver_acados_sim_solve(capsule); - - if (status != ACADOS_SUCCESS) { - printf("acados_solve() failed with status %d.\n", status); + int status = 0; + mock_acados_solver_sim_solver_capsule *capsule = mock_acados_solver_acados_sim_solver_create_capsule(); + status = mock_acados_solver_acados_sim_create(capsule); + + if (status) + { + printf("acados_create() returned status %d. Exiting.\n", status); + exit(1); } - sim_out_get( - acados_sim_config, acados_sim_dims, - acados_sim_out, "x", x_current); - - printf("\nx_current, %d\n", ii); - for (int jj = 0; jj < NX; jj++) { - printf("%e\n", x_current[jj]); + sim_config *acados_sim_config = mock_acados_solver_acados_get_sim_config(capsule); + sim_in *acados_sim_in = mock_acados_solver_acados_get_sim_in(capsule); + sim_out *acados_sim_out = mock_acados_solver_acados_get_sim_out(capsule); + void *acados_sim_dims = mock_acados_solver_acados_get_sim_dims(capsule); + + // initial condition + double x_current[NX]; + x_current[0] = 0.0; + x_current[1] = 0.0; + x_current[2] = 0.0; + x_current[3] = 0.0; + + + x_current[0] = 0; + x_current[1] = 3.141592653589793; + x_current[2] = 0; + x_current[3] = 0; + + + + + // initial value for control input + double u0[NU]; + u0[0] = 0.0; + // set parameters + double p[NP]; + p[0] = 1; + p[1] = 0.1; + + mock_acados_solver_acados_sim_update_params(capsule, p, NP); + + + + + + int n_sim_steps = 3; + // solve ocp in loop + for (int ii = 0; ii < n_sim_steps; ii++) + { + // set inputs + sim_in_set(acados_sim_config, acados_sim_dims, + acados_sim_in, "x", x_current); + sim_in_set(acados_sim_config, acados_sim_dims, + acados_sim_in, "u", u0); + + // solve + status = mock_acados_solver_acados_sim_solve(capsule); + if (status != ACADOS_SUCCESS) + { + printf("acados_solve() failed with status %d.\n", status); + } + + // get outputs + sim_out_get(acados_sim_config, acados_sim_dims, + acados_sim_out, "x", x_current); + + + + // print solution + printf("\nx_current, %d\n", ii); + for (int jj = 0; jj < NX; jj++) + { + printf("%e\n", x_current[jj]); + } } - } - printf("\nPerformed %d simulation steps with acados integrator successfully.\n\n", n_sim_steps); + printf("\nPerformed %d simulation steps with acados integrator successfully.\n\n", n_sim_steps); - // free solver - status = mock_acados_solver_acados_sim_free(capsule); - if (status) { - printf("mock_acados_solver_acados_sim_free() returned status %d. \n", status); - } + // free solver + status = mock_acados_solver_acados_sim_free(capsule); + if (status) { + printf("mock_acados_solver_acados_sim_free() returned status %d. \n", status); + } - mock_acados_solver_acados_sim_solver_free_capsule(capsule); + mock_acados_solver_acados_sim_solver_free_capsule(capsule); - return status; + return status; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_constraints/mock_acados_solver_constraints.h b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_constraints/mock_acados_solver_constraints.h deleted file mode 100644 index ca171d0..0000000 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_constraints/mock_acados_solver_constraints.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) The acados authors. - * - * This file is part of acados. - * - * The 2-Clause BSD License - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE.; - */ - -#ifndef mock_acados_solver_CONSTRAINTS -#define mock_acados_solver_CONSTRAINTS - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif // mock_acados_solver_CONSTRAINTS diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost.h b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost.h index 3fcfd0b..b42393d 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost.h +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost.h @@ -39,94 +39,90 @@ extern "C" { // Cost at initial shooting node -int mock_acados_solver_cost_ext_cost_0_fun( - const real_t ** arg, real_t ** res, int * iw, real_t * w, - void * mem); +int mock_acados_solver_cost_ext_cost_0_fun(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_0_fun_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_0_fun_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_0_fun_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_0_fun_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_0_fun_sparsity_out(int); int mock_acados_solver_cost_ext_cost_0_fun_n_in(void); int mock_acados_solver_cost_ext_cost_0_fun_n_out(void); -int mock_acados_solver_cost_ext_cost_0_fun_jac_hess( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_cost_ext_cost_0_fun_jac_hess(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_out(int); int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_n_in(void); int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_n_out(void); -int mock_acados_solver_cost_ext_cost_0_fun_jac( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_cost_ext_cost_0_fun_jac(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_0_fun_jac_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_out(int); int mock_acados_solver_cost_ext_cost_0_fun_jac_n_in(void); int mock_acados_solver_cost_ext_cost_0_fun_jac_n_out(void); + + + + + // Cost at path shooting node -int mock_acados_solver_cost_ext_cost_fun( - const real_t ** arg, real_t ** res, int * iw, real_t * w, - void * mem); +int mock_acados_solver_cost_ext_cost_fun(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_fun_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_fun_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_fun_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_fun_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_fun_sparsity_out(int); int mock_acados_solver_cost_ext_cost_fun_n_in(void); int mock_acados_solver_cost_ext_cost_fun_n_out(void); -int mock_acados_solver_cost_ext_cost_fun_jac_hess( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_cost_ext_cost_fun_jac_hess(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_fun_jac_hess_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_out(int); int mock_acados_solver_cost_ext_cost_fun_jac_hess_n_in(void); int mock_acados_solver_cost_ext_cost_fun_jac_hess_n_out(void); -int mock_acados_solver_cost_ext_cost_fun_jac( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_cost_ext_cost_fun_jac(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_fun_jac_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_fun_jac_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_fun_jac_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_fun_jac_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_fun_jac_sparsity_out(int); int mock_acados_solver_cost_ext_cost_fun_jac_n_in(void); int mock_acados_solver_cost_ext_cost_fun_jac_n_out(void); + + + + // Cost at terminal shooting node -int mock_acados_solver_cost_ext_cost_e_fun( - const real_t ** arg, real_t ** res, int * iw, real_t * w, - void * mem); +int mock_acados_solver_cost_ext_cost_e_fun(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_e_fun_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_e_fun_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_e_fun_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_e_fun_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_e_fun_sparsity_out(int); int mock_acados_solver_cost_ext_cost_e_fun_n_in(void); int mock_acados_solver_cost_ext_cost_e_fun_n_out(void); -int mock_acados_solver_cost_ext_cost_e_fun_jac_hess( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_cost_ext_cost_e_fun_jac_hess(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_out(int); int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_n_in(void); int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_n_out(void); -int mock_acados_solver_cost_ext_cost_e_fun_jac( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_cost_ext_cost_e_fun_jac(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_cost_ext_cost_e_fun_jac_work(int *, int *, int *, int *); -const int * mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_in(int); -const int * mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_out(int); +const int *mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_in(int); +const int *mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_out(int); int mock_acados_solver_cost_ext_cost_e_fun_jac_n_in(void); int mock_acados_solver_cost_ext_cost_e_fun_jac_n_out(void); + + + + + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun.c index cdb323b..4a9244c 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -39,7 +44,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -51,88 +56,72 @@ static const casadi_int casadi_s2[3] = {0, 0, 0}; static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; /* mock_acados_solver_cost_ext_cost_0_fun:(i0[4],i1,i2[],i3[2])->(o0) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a2, a3; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a2 = (a2 * a1); - a1 = arg[0] ? arg[0][1] : 0; - a0 = (a0 * a1); - a0 = (a0 * a1); - a2 = (a2 + a0); - a0 = 2.0000000000000000e-02; - a1 = arg[0] ? arg[0][2] : 0; - a3 = (a0 * a1); - a3 = (a3 * a1); - a2 = (a2 + a3); - a3 = arg[0] ? arg[0][3] : 0; - a1 = (a0 * a3); - a1 = (a1 * a3); - a2 = (a2 + a1); - a1 = arg[1] ? arg[1][0] : 0; - a0 = (a0 * a1); - a0 = (a0 * a1); - a2 = (a2 + a0); - if (res[0] != 0) {res[0][0] = a2;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a2=(a2*a1); + a1=arg[0]? arg[0][1] : 0; + a0=(a0*a1); + a0=(a0*a1); + a2=(a2+a0); + a0=2.0000000000000000e-02; + a1=arg[0]? arg[0][2] : 0; + a3=(a0*a1); + a3=(a3*a1); + a2=(a2+a3); + a3=arg[0]? arg[0][3] : 0; + a1=(a0*a3); + a1=(a1*a3); + a2=(a2+a1); + a1=arg[1]? arg[1][0] : 0; + a0=(a0*a1); + a0=(a0*a1); + a2=(a2+a0); + if (res[0]!=0) res[0][0]=a2; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun( - const casadi_real ** arg, - casadi_real ** res, casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_n_out(void) {return 1;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_n_out(void) { return 1;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_0_fun_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_0_fun_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_0_fun_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -142,17 +131,14 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_name_in } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_0_fun_name_out(casadi_int i) { switch (i) { case 0: return "o0"; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_0_fun_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -162,25 +148,26 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_s } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_0_fun_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s1; default: return 0; } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 1;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 1; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 1*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac.c index 3cfe9f9..3281371 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -40,7 +45,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -53,104 +58,87 @@ static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; static const casadi_int casadi_s4[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; /* mock_acados_solver_cost_ext_cost_0_fun_jac:(i0[4],i1,i2[],i3[2])->(o0,o1[5]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a12, a13, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a3 = (a2 * a1); - a4 = arg[0] ? arg[0][1] : 0; - a5 = (a0 * a4); - a6 = (a5 * a4); - a3 = (a3 + a6); - a6 = 2.0000000000000000e-02; - a7 = arg[0] ? arg[0][2] : 0; - a8 = (a6 * a7); - a9 = (a8 * a7); - a3 = (a3 + a9); - a9 = arg[0] ? arg[0][3] : 0; - a10 = (a6 * a9); - a11 = (a10 * a9); - a3 = (a3 + a11); - a11 = arg[1] ? arg[1][0] : 0; - a12 = (a6 * a11); - a13 = (a12 * a11); - a3 = (a3 + a13); - if (res[0] != 0) {res[0][0] = a3;} - a11 = (a6 * a11); - a12 = (a12 + a11); - if (res[1] != 0) {res[1][0] = a12;} - a1 = (a0 * a1); - a2 = (a2 + a1); - if (res[1] != 0) {res[1][1] = a2;} - a0 = (a0 * a4); - a5 = (a5 + a0); - if (res[1] != 0) {res[1][2] = a5;} - a7 = (a6 * a7); - a8 = (a8 + a7); - if (res[1] != 0) {res[1][3] = a8;} - a6 = (a6 * a9); - a10 = (a10 + a6); - if (res[1] != 0) {res[1][4] = a10;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a3=(a2*a1); + a4=arg[0]? arg[0][1] : 0; + a5=(a0*a4); + a6=(a5*a4); + a3=(a3+a6); + a6=2.0000000000000000e-02; + a7=arg[0]? arg[0][2] : 0; + a8=(a6*a7); + a9=(a8*a7); + a3=(a3+a9); + a9=arg[0]? arg[0][3] : 0; + a10=(a6*a9); + a11=(a10*a9); + a3=(a3+a11); + a11=arg[1]? arg[1][0] : 0; + a12=(a6*a11); + a13=(a12*a11); + a3=(a3+a13); + if (res[0]!=0) res[0][0]=a3; + a11=(a6*a11); + a12=(a12+a11); + if (res[1]!=0) res[1][0]=a12; + a1=(a0*a1); + a2=(a2+a1); + if (res[1]!=0) res[1][1]=a2; + a0=(a0*a4); + a5=(a5+a0); + if (res[1]!=0) res[1][2]=a5; + a7=(a6*a7); + a8=(a8+a7); + if (res[1]!=0) res[1][3]=a8; + a6=(a6*a9); + a10=(a10+a6); + if (res[1]!=0) res[1][4]=a10; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_n_out(void) {return 2;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_n_out(void) { return 2;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_0_fun_jac_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_0_fun_jac_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_0_fun_jac_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -160,8 +148,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_nam } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_0_fun_jac_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -169,9 +156,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_nam } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -181,9 +166,7 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_j } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_0_fun_jac_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s1; case 1: return casadi_s4; @@ -191,16 +174,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_j } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 2;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 2; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 2*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac_hess.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac_hess.c index 8f1f5f5..a822f7d 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac_hess.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_0_fun_jac_hess.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -42,7 +47,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -57,119 +62,94 @@ static const casadi_int casadi_s5[13] = {5, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4}; static const casadi_int casadi_s6[8] = {0, 5, 0, 0, 0, 0, 0, 0}; /* mock_acados_solver_cost_ext_cost_0_fun_jac_hess:(i0[4],i1,i2[],i3[2])->(o0,o1[5],o2[5x5,5nz],o3[],o4[0x5]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a12, a13, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a3 = (a2 * a1); - a4 = arg[0] ? arg[0][1] : 0; - a5 = (a0 * a4); - a6 = (a5 * a4); - a3 = (a3 + a6); - a6 = 2.0000000000000000e-02; - a7 = arg[0] ? arg[0][2] : 0; - a8 = (a6 * a7); - a9 = (a8 * a7); - a3 = (a3 + a9); - a9 = arg[0] ? arg[0][3] : 0; - a10 = (a6 * a9); - a11 = (a10 * a9); - a3 = (a3 + a11); - a11 = arg[1] ? arg[1][0] : 0; - a12 = (a6 * a11); - a13 = (a12 * a11); - a3 = (a3 + a13); - if (res[0] != 0) {res[0][0] = a3;} - a11 = (a6 * a11); - a12 = (a12 + a11); - if (res[1] != 0) {res[1][0] = a12;} - a1 = (a0 * a1); - a2 = (a2 + a1); - if (res[1] != 0) {res[1][1] = a2;} - a0 = (a0 * a4); - a5 = (a5 + a0); - if (res[1] != 0) {res[1][2] = a5;} - a7 = (a6 * a7); - a8 = (a8 + a7); - if (res[1] != 0) {res[1][3] = a8;} - a6 = (a6 * a9); - a10 = (a10 + a6); - if (res[1] != 0) {res[1][4] = a10;} - a10 = 4.0000000000000001e-02; - if (res[2] != 0) {res[2][0] = a10;} - a6 = 4000.; - if (res[2] != 0) {res[2][1] = a6;} - if (res[2] != 0) {res[2][2] = a6;} - if (res[2] != 0) {res[2][3] = a10;} - if (res[2] != 0) {res[2][4] = a10;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a3=(a2*a1); + a4=arg[0]? arg[0][1] : 0; + a5=(a0*a4); + a6=(a5*a4); + a3=(a3+a6); + a6=2.0000000000000000e-02; + a7=arg[0]? arg[0][2] : 0; + a8=(a6*a7); + a9=(a8*a7); + a3=(a3+a9); + a9=arg[0]? arg[0][3] : 0; + a10=(a6*a9); + a11=(a10*a9); + a3=(a3+a11); + a11=arg[1]? arg[1][0] : 0; + a12=(a6*a11); + a13=(a12*a11); + a3=(a3+a13); + if (res[0]!=0) res[0][0]=a3; + a11=(a6*a11); + a12=(a12+a11); + if (res[1]!=0) res[1][0]=a12; + a1=(a0*a1); + a2=(a2+a1); + if (res[1]!=0) res[1][1]=a2; + a0=(a0*a4); + a5=(a5+a0); + if (res[1]!=0) res[1][2]=a5; + a7=(a6*a7); + a8=(a8+a7); + if (res[1]!=0) res[1][3]=a8; + a6=(a6*a9); + a10=(a10+a6); + if (res[1]!=0) res[1][4]=a10; + a10=4.0000000000000001e-02; + if (res[2]!=0) res[2][0]=a10; + a6=4000.; + if (res[2]!=0) res[2][1]=a6; + if (res[2]!=0) res[2][2]=a6; + if (res[2]!=0) res[2][3]=a10; + if (res[2]!=0) res[2][4]=a10; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_0_fun_jac_hess_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_n_in(void) -{ - return 4; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_n_out(void) -{ - return 5; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_n_out(void) { return 5;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_0_fun_jac_hess_default_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_0_fun_jac_hess_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_hess_name_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_0_fun_jac_hess_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -179,9 +159,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_hes } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_hess_name_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_0_fun_jac_hess_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -192,9 +170,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_0_fun_jac_hes } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -204,9 +180,7 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_j } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_0_fun_jac_hess_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s1; case 1: return casadi_s4; @@ -217,16 +191,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_0_fun_j } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 5;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 5; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_0_fun_jac_hess_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 5*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun.c index 9b17b11..92cd460 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -39,7 +44,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -51,84 +56,68 @@ static const casadi_int casadi_s2[6] = {2, 1, 0, 2, 0, 1}; static const casadi_int casadi_s3[5] = {1, 1, 0, 1, 0}; /* mock_acados_solver_cost_ext_cost_e_fun:(i0[4],i1[],i2[],i3[2])->(o0) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a2, a3; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a2 = (a2 * a1); - a1 = arg[0] ? arg[0][1] : 0; - a0 = (a0 * a1); - a0 = (a0 * a1); - a2 = (a2 + a0); - a0 = 2.0000000000000000e-02; - a1 = arg[0] ? arg[0][2] : 0; - a3 = (a0 * a1); - a3 = (a3 * a1); - a2 = (a2 + a3); - a3 = arg[0] ? arg[0][3] : 0; - a0 = (a0 * a3); - a0 = (a0 * a3); - a2 = (a2 + a0); - if (res[0] != 0) {res[0][0] = a2;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a2=(a2*a1); + a1=arg[0]? arg[0][1] : 0; + a0=(a0*a1); + a0=(a0*a1); + a2=(a2+a0); + a0=2.0000000000000000e-02; + a1=arg[0]? arg[0][2] : 0; + a3=(a0*a1); + a3=(a3*a1); + a2=(a2+a3); + a3=arg[0]? arg[0][3] : 0; + a0=(a0*a3); + a0=(a0*a3); + a2=(a2+a0); + if (res[0]!=0) res[0][0]=a2; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun( - const casadi_real ** arg, - casadi_real ** res, casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_n_out(void) {return 1;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_n_out(void) { return 1;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_e_fun_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_e_fun_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_e_fun_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -138,17 +127,14 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_name_in } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_e_fun_name_out(casadi_int i) { switch (i) { case 0: return "o0"; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_e_fun_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -158,25 +144,26 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_s } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_e_fun_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 1;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 1; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 1*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac.c index f8e89a7..1d72d1a 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -39,7 +44,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -51,97 +56,80 @@ static const casadi_int casadi_s2[6] = {2, 1, 0, 2, 0, 1}; static const casadi_int casadi_s3[5] = {1, 1, 0, 1, 0}; /* mock_acados_solver_cost_ext_cost_e_fun_jac:(i0[4],i1[],i2[],i3[2])->(o0,o1[4]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a3 = (a2 * a1); - a4 = arg[0] ? arg[0][1] : 0; - a5 = (a0 * a4); - a6 = (a5 * a4); - a3 = (a3 + a6); - a6 = 2.0000000000000000e-02; - a7 = arg[0] ? arg[0][2] : 0; - a8 = (a6 * a7); - a9 = (a8 * a7); - a3 = (a3 + a9); - a9 = arg[0] ? arg[0][3] : 0; - a10 = (a6 * a9); - a11 = (a10 * a9); - a3 = (a3 + a11); - if (res[0] != 0) {res[0][0] = a3;} - a1 = (a0 * a1); - a2 = (a2 + a1); - if (res[1] != 0) {res[1][0] = a2;} - a0 = (a0 * a4); - a5 = (a5 + a0); - if (res[1] != 0) {res[1][1] = a5;} - a7 = (a6 * a7); - a8 = (a8 + a7); - if (res[1] != 0) {res[1][2] = a8;} - a6 = (a6 * a9); - a10 = (a10 + a6); - if (res[1] != 0) {res[1][3] = a10;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a3=(a2*a1); + a4=arg[0]? arg[0][1] : 0; + a5=(a0*a4); + a6=(a5*a4); + a3=(a3+a6); + a6=2.0000000000000000e-02; + a7=arg[0]? arg[0][2] : 0; + a8=(a6*a7); + a9=(a8*a7); + a3=(a3+a9); + a9=arg[0]? arg[0][3] : 0; + a10=(a6*a9); + a11=(a10*a9); + a3=(a3+a11); + if (res[0]!=0) res[0][0]=a3; + a1=(a0*a1); + a2=(a2+a1); + if (res[1]!=0) res[1][0]=a2; + a0=(a0*a4); + a5=(a5+a0); + if (res[1]!=0) res[1][1]=a5; + a7=(a6*a7); + a8=(a8+a7); + if (res[1]!=0) res[1][2]=a8; + a6=(a6*a9); + a10=(a10+a6); + if (res[1]!=0) res[1][3]=a10; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_n_out(void) {return 2;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_n_out(void) { return 2;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_e_fun_jac_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_e_fun_jac_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_e_fun_jac_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -151,8 +139,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_nam } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_e_fun_jac_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -160,9 +147,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_nam } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -172,9 +157,7 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_j } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_e_fun_jac_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s3; case 1: return casadi_s0; @@ -182,16 +165,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_j } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 2;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 2; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 2*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac_hess.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac_hess.c index f13578a..11312e1 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac_hess.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_e_fun_jac_hess.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -41,7 +46,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -55,111 +60,86 @@ static const casadi_int casadi_s4[11] = {4, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3}; static const casadi_int casadi_s5[7] = {0, 4, 0, 0, 0, 0, 0}; /* mock_acados_solver_cost_ext_cost_e_fun_jac_hess:(i0[4],i1[],i2[],i3[2])->(o0,o1[4],o2[4x4,4nz],o3[],o4[0x4]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a3 = (a2 * a1); - a4 = arg[0] ? arg[0][1] : 0; - a5 = (a0 * a4); - a6 = (a5 * a4); - a3 = (a3 + a6); - a6 = 2.0000000000000000e-02; - a7 = arg[0] ? arg[0][2] : 0; - a8 = (a6 * a7); - a9 = (a8 * a7); - a3 = (a3 + a9); - a9 = arg[0] ? arg[0][3] : 0; - a10 = (a6 * a9); - a11 = (a10 * a9); - a3 = (a3 + a11); - if (res[0] != 0) {res[0][0] = a3;} - a1 = (a0 * a1); - a2 = (a2 + a1); - if (res[1] != 0) {res[1][0] = a2;} - a0 = (a0 * a4); - a5 = (a5 + a0); - if (res[1] != 0) {res[1][1] = a5;} - a7 = (a6 * a7); - a8 = (a8 + a7); - if (res[1] != 0) {res[1][2] = a8;} - a6 = (a6 * a9); - a10 = (a10 + a6); - if (res[1] != 0) {res[1][3] = a10;} - a10 = 4000.; - if (res[2] != 0) {res[2][0] = a10;} - if (res[2] != 0) {res[2][1] = a10;} - a10 = 4.0000000000000001e-02; - if (res[2] != 0) {res[2][2] = a10;} - if (res[2] != 0) {res[2][3] = a10;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a3=(a2*a1); + a4=arg[0]? arg[0][1] : 0; + a5=(a0*a4); + a6=(a5*a4); + a3=(a3+a6); + a6=2.0000000000000000e-02; + a7=arg[0]? arg[0][2] : 0; + a8=(a6*a7); + a9=(a8*a7); + a3=(a3+a9); + a9=arg[0]? arg[0][3] : 0; + a10=(a6*a9); + a11=(a10*a9); + a3=(a3+a11); + if (res[0]!=0) res[0][0]=a3; + a1=(a0*a1); + a2=(a2+a1); + if (res[1]!=0) res[1][0]=a2; + a0=(a0*a4); + a5=(a5+a0); + if (res[1]!=0) res[1][1]=a5; + a7=(a6*a7); + a8=(a8+a7); + if (res[1]!=0) res[1][2]=a8; + a6=(a6*a9); + a10=(a10+a6); + if (res[1]!=0) res[1][3]=a10; + a10=4000.; + if (res[2]!=0) res[2][0]=a10; + if (res[2]!=0) res[2][1]=a10; + a10=4.0000000000000001e-02; + if (res[2]!=0) res[2][2]=a10; + if (res[2]!=0) res[2][3]=a10; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_e_fun_jac_hess_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_n_in(void) -{ - return 4; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_n_out(void) -{ - return 5; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_n_out(void) { return 5;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_e_fun_jac_hess_default_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_e_fun_jac_hess_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_hess_name_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_e_fun_jac_hess_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -169,9 +149,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_hes } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_hess_name_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_e_fun_jac_hess_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -182,9 +160,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_e_fun_jac_hes } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -194,9 +170,7 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_j } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_e_fun_jac_hess_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s3; case 1: return casadi_s0; @@ -207,16 +181,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_e_fun_j } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 5;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 5; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_e_fun_jac_hess_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 5*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun.c index 4df03b9..b93cfe0 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -39,7 +44,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -51,88 +56,72 @@ static const casadi_int casadi_s2[3] = {0, 0, 0}; static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; /* mock_acados_solver_cost_ext_cost_fun:(i0[4],i1,i2[],i3[2])->(o0) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a2, a3; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a2 = (a2 * a1); - a1 = arg[0] ? arg[0][1] : 0; - a0 = (a0 * a1); - a0 = (a0 * a1); - a2 = (a2 + a0); - a0 = 2.0000000000000000e-02; - a1 = arg[0] ? arg[0][2] : 0; - a3 = (a0 * a1); - a3 = (a3 * a1); - a2 = (a2 + a3); - a3 = arg[0] ? arg[0][3] : 0; - a1 = (a0 * a3); - a1 = (a1 * a3); - a2 = (a2 + a1); - a1 = arg[1] ? arg[1][0] : 0; - a0 = (a0 * a1); - a0 = (a0 * a1); - a2 = (a2 + a0); - if (res[0] != 0) {res[0][0] = a2;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a2=(a2*a1); + a1=arg[0]? arg[0][1] : 0; + a0=(a0*a1); + a0=(a0*a1); + a2=(a2+a0); + a0=2.0000000000000000e-02; + a1=arg[0]? arg[0][2] : 0; + a3=(a0*a1); + a3=(a3*a1); + a2=(a2+a3); + a3=arg[0]? arg[0][3] : 0; + a1=(a0*a3); + a1=(a1*a3); + a2=(a2+a1); + a1=arg[1]? arg[1][0] : 0; + a0=(a0*a1); + a0=(a0*a1); + a2=(a2+a0); + if (res[0]!=0) res[0][0]=a2; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun( - const casadi_real ** arg, - casadi_real ** res, casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_n_out(void) {return 1;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_n_out(void) { return 1;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_fun_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_fun_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_fun_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -142,17 +131,14 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_name_in(c } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_fun_name_out(casadi_int i) { switch (i) { case 0: return "o0"; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_fun_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -162,25 +148,26 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_spa } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_fun_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s1; default: return 0; } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 1;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 1; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 1*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac.c index 65d9025..792447f 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -40,7 +45,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -53,104 +58,87 @@ static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; static const casadi_int casadi_s4[9] = {5, 1, 0, 5, 0, 1, 2, 3, 4}; /* mock_acados_solver_cost_ext_cost_fun_jac:(i0[4],i1,i2[],i3[2])->(o0,o1[5]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a12, a13, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a3 = (a2 * a1); - a4 = arg[0] ? arg[0][1] : 0; - a5 = (a0 * a4); - a6 = (a5 * a4); - a3 = (a3 + a6); - a6 = 2.0000000000000000e-02; - a7 = arg[0] ? arg[0][2] : 0; - a8 = (a6 * a7); - a9 = (a8 * a7); - a3 = (a3 + a9); - a9 = arg[0] ? arg[0][3] : 0; - a10 = (a6 * a9); - a11 = (a10 * a9); - a3 = (a3 + a11); - a11 = arg[1] ? arg[1][0] : 0; - a12 = (a6 * a11); - a13 = (a12 * a11); - a3 = (a3 + a13); - if (res[0] != 0) {res[0][0] = a3;} - a11 = (a6 * a11); - a12 = (a12 + a11); - if (res[1] != 0) {res[1][0] = a12;} - a1 = (a0 * a1); - a2 = (a2 + a1); - if (res[1] != 0) {res[1][1] = a2;} - a0 = (a0 * a4); - a5 = (a5 + a0); - if (res[1] != 0) {res[1][2] = a5;} - a7 = (a6 * a7); - a8 = (a8 + a7); - if (res[1] != 0) {res[1][3] = a8;} - a6 = (a6 * a9); - a10 = (a10 + a6); - if (res[1] != 0) {res[1][4] = a10;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a3=(a2*a1); + a4=arg[0]? arg[0][1] : 0; + a5=(a0*a4); + a6=(a5*a4); + a3=(a3+a6); + a6=2.0000000000000000e-02; + a7=arg[0]? arg[0][2] : 0; + a8=(a6*a7); + a9=(a8*a7); + a3=(a3+a9); + a9=arg[0]? arg[0][3] : 0; + a10=(a6*a9); + a11=(a10*a9); + a3=(a3+a11); + a11=arg[1]? arg[1][0] : 0; + a12=(a6*a11); + a13=(a12*a11); + a3=(a3+a13); + if (res[0]!=0) res[0][0]=a3; + a11=(a6*a11); + a12=(a12+a11); + if (res[1]!=0) res[1][0]=a12; + a1=(a0*a1); + a2=(a2+a1); + if (res[1]!=0) res[1][1]=a2; + a0=(a0*a4); + a5=(a5+a0); + if (res[1]!=0) res[1][2]=a5; + a7=(a6*a7); + a8=(a8+a7); + if (res[1]!=0) res[1][3]=a8; + a6=(a6*a9); + a10=(a10+a6); + if (res[1]!=0) res[1][4]=a10; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, casadi_real * w, - int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_n_out(void) {return 2;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_n_out(void) { return 2;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_fun_jac_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_fun_jac_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_fun_jac_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -160,8 +148,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_name_ } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_fun_jac_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -169,9 +156,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_name_ } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_fun_jac_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -181,9 +166,7 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_fun_jac_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s1; case 1: return casadi_s4; @@ -191,16 +174,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 2;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 2; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 2*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac_hess.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac_hess.c index 6a31fa7..30c6b6a 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac_hess.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_cost/mock_acados_solver_cost_ext_cost_fun_jac_hess.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -42,7 +47,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -57,116 +62,94 @@ static const casadi_int casadi_s5[13] = {5, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4}; static const casadi_int casadi_s6[8] = {0, 5, 0, 0, 0, 0, 0, 0}; /* mock_acados_solver_cost_ext_cost_fun_jac_hess:(i0[4],i1,i2[],i3[2])->(o0,o1[5],o2[5x5,5nz],o3[],o4[0x5]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a12, a13, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 2000.; - a1 = arg[0] ? arg[0][0] : 0; - a2 = (a0 * a1); - a3 = (a2 * a1); - a4 = arg[0] ? arg[0][1] : 0; - a5 = (a0 * a4); - a6 = (a5 * a4); - a3 = (a3 + a6); - a6 = 2.0000000000000000e-02; - a7 = arg[0] ? arg[0][2] : 0; - a8 = (a6 * a7); - a9 = (a8 * a7); - a3 = (a3 + a9); - a9 = arg[0] ? arg[0][3] : 0; - a10 = (a6 * a9); - a11 = (a10 * a9); - a3 = (a3 + a11); - a11 = arg[1] ? arg[1][0] : 0; - a12 = (a6 * a11); - a13 = (a12 * a11); - a3 = (a3 + a13); - if (res[0] != 0) {res[0][0] = a3;} - a11 = (a6 * a11); - a12 = (a12 + a11); - if (res[1] != 0) {res[1][0] = a12;} - a1 = (a0 * a1); - a2 = (a2 + a1); - if (res[1] != 0) {res[1][1] = a2;} - a0 = (a0 * a4); - a5 = (a5 + a0); - if (res[1] != 0) {res[1][2] = a5;} - a7 = (a6 * a7); - a8 = (a8 + a7); - if (res[1] != 0) {res[1][3] = a8;} - a6 = (a6 * a9); - a10 = (a10 + a6); - if (res[1] != 0) {res[1][4] = a10;} - a10 = 4.0000000000000001e-02; - if (res[2] != 0) {res[2][0] = a10;} - a6 = 4000.; - if (res[2] != 0) {res[2][1] = a6;} - if (res[2] != 0) {res[2][2] = a6;} - if (res[2] != 0) {res[2][3] = a10;} - if (res[2] != 0) {res[2][4] = a10;} + a0=2000.; + a1=arg[0]? arg[0][0] : 0; + a2=(a0*a1); + a3=(a2*a1); + a4=arg[0]? arg[0][1] : 0; + a5=(a0*a4); + a6=(a5*a4); + a3=(a3+a6); + a6=2.0000000000000000e-02; + a7=arg[0]? arg[0][2] : 0; + a8=(a6*a7); + a9=(a8*a7); + a3=(a3+a9); + a9=arg[0]? arg[0][3] : 0; + a10=(a6*a9); + a11=(a10*a9); + a3=(a3+a11); + a11=arg[1]? arg[1][0] : 0; + a12=(a6*a11); + a13=(a12*a11); + a3=(a3+a13); + if (res[0]!=0) res[0][0]=a3; + a11=(a6*a11); + a12=(a12+a11); + if (res[1]!=0) res[1][0]=a12; + a1=(a0*a1); + a2=(a2+a1); + if (res[1]!=0) res[1][1]=a2; + a0=(a0*a4); + a5=(a5+a0); + if (res[1]!=0) res[1][2]=a5; + a7=(a6*a7); + a8=(a8+a7); + if (res[1]!=0) res[1][3]=a8; + a6=(a6*a9); + a10=(a10+a6); + if (res[1]!=0) res[1][4]=a10; + a10=4.0000000000000001e-02; + if (res[2]!=0) res[2][0]=a10; + a6=4000.; + if (res[2]!=0) res[2][1]=a6; + if (res[2]!=0) res[2][2]=a6; + if (res[2]!=0) res[2][3]=a10; + if (res[2]!=0) res[2][4]=a10; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_cost_ext_cost_fun_jac_hess_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_hess_n_in(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_hess_n_in(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_hess_n_out(void) -{ - return 5; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_cost_ext_cost_fun_jac_hess_n_out(void) { return 5;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_fun_jac_hess_default_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_cost_ext_cost_fun_jac_hess_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_hess_name_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_fun_jac_hess_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -176,9 +159,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_hess_ } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_hess_name_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_cost_ext_cost_fun_jac_hess_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -189,9 +170,7 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_cost_ext_cost_fun_jac_hess_ } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s1; @@ -201,9 +180,7 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_cost_ext_cost_fun_jac_hess_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s1; case 1: return casadi_s4; @@ -214,16 +191,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_cost_ext_cost_fun_jac } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 4;} - if (sz_res) {*sz_res = 5;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4; + if (sz_res) *sz_res = 5; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_cost_ext_cost_fun_jac_hess_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 4*sizeof(const casadi_real*); + if (sz_res) *sz_res = 5*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun.c index 57f3c2d..7b0869e 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -39,7 +44,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -50,163 +55,150 @@ static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; static const casadi_int casadi_s2[3] = {0, 0, 0}; static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; -/* mock_acados_solver_impl_dae_fun:(i0[4],i1[4],i2,i3[],i4[2])->(o0[4]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +/* mock_acados_solver_impl_dae_fun:(i0[4],i1[4],i2,i3[],i4[],i5[2])->(o0[4]) */ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = arg[1] ? arg[1][0] : 0; - a1 = arg[0] ? arg[0][2] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][0] = a0;} - a0 = arg[1] ? arg[1][1] : 0; - a1 = arg[0] ? arg[0][3] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][1] = a0;} - a0 = arg[1] ? arg[1][2] : 0; - a2 = 9.8100000000000005e+00; - a3 = arg[4] ? arg[4][1] : 0; - a4 = (a2 * a3); - a5 = arg[0] ? arg[0][1] : 0; - a6 = cos(a5); - a4 = (a4 * a6); - a5 = sin(a5); - a4 = (a4 * a5); - a7 = 8.0000000000000004e-01; - a8 = (a7 * a3); - a8 = (a8 * a5); - a8 = (a8 * a1); - a8 = (a8 * a1); - a4 = (a4 - a8); - a8 = arg[2] ? arg[2][0] : 0; - a4 = (a4 + a8); - a9 = arg[4] ? arg[4][0] : 0; - a10 = (a9 + a3); - a11 = (a3 * a6); - a11 = (a11 * a6); - a10 = (a10 - a11); - a4 = (a4 / a10); - a0 = (a0 - a4); - if (res[0] != 0) {res[0][2] = a0;} - a0 = arg[1] ? arg[1][3] : 0; - a8 = (a8 * a6); - a4 = (a7 * a3); - a4 = (a4 * a6); - a4 = (a4 * a5); - a4 = (a4 * a1); - a4 = (a4 * a1); - a8 = (a8 - a4); - a9 = (a9 + a3); - a2 = (a2 * a9); - a2 = (a2 * a5); - a8 = (a8 + a2); - a7 = (a7 * a10); - a8 = (a8 / a7); - a0 = (a0 - a8); - if (res[0] != 0) {res[0][3] = a0;} + a0=arg[1]? arg[1][0] : 0; + a1=arg[0]? arg[0][2] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][0]=a0; + a0=arg[1]? arg[1][1] : 0; + a1=arg[0]? arg[0][3] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][1]=a0; + a0=arg[1]? arg[1][2] : 0; + a2=9.8100000000000005e+00; + a3=arg[5]? arg[5][1] : 0; + a4=(a2*a3); + a5=arg[0]? arg[0][1] : 0; + a6=cos(a5); + a4=(a4*a6); + a5=sin(a5); + a4=(a4*a5); + a7=8.0000000000000004e-01; + a8=(a7*a3); + a8=(a8*a5); + a8=(a8*a1); + a8=(a8*a1); + a4=(a4-a8); + a8=arg[2]? arg[2][0] : 0; + a4=(a4+a8); + a9=arg[5]? arg[5][0] : 0; + a10=(a9+a3); + a11=(a3*a6); + a11=(a11*a6); + a10=(a10-a11); + a4=(a4/a10); + a0=(a0-a4); + if (res[0]!=0) res[0][2]=a0; + a0=arg[1]? arg[1][3] : 0; + a8=(a8*a6); + a4=(a7*a3); + a4=(a4*a6); + a4=(a4*a5); + a4=(a4*a1); + a4=(a4*a1); + a8=(a8-a4); + a9=(a9+a3); + a2=(a2*a9); + a2=(a2*a5); + a8=(a8+a2); + a7=(a7*a10); + a8=(a8/a7); + a0=(a0-a8); + if (res[0]!=0) res[0][3]=a0; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun( - const casadi_real ** arg, - casadi_real ** res, casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_n_in(void) {return 5;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_n_in(void) { return 6;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_n_out(void) {return 1;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_n_out(void) { return 1;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; case 2: return "i2"; case 3: return "i3"; case 4: return "i4"; + case 5: return "i5"; default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_name_out(casadi_int i) { switch (i) { case 0: return "o0"; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_sparsity_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s0; case 2: return casadi_s1; case 3: return casadi_s2; - case 4: return casadi_s3; + case 4: return casadi_s2; + case 5: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_sparsity_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s0; default: return 0; } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 5;} - if (sz_res) {*sz_res = 1;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6; + if (sz_res) *sz_res = 1; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6*sizeof(const casadi_real*); + if (sz_res) *sz_res = 1*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u.c index 653b3ff..f62c86b 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -42,7 +47,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -56,191 +61,171 @@ static const casadi_int casadi_s4[13] = {4, 4, 0, 0, 2, 3, 6, 2, 3, 0, 1, 2, 3}; static const casadi_int casadi_s5[11] = {4, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3}; static const casadi_int casadi_s6[6] = {4, 1, 0, 2, 2, 3}; -/* mock_acados_solver_impl_dae_fun_jac_x_xdot_u:(i0[4],i1[4],i2,i3[],i4[2])->(o0[4],o1[4x4,6nz],o2[4x4,4nz],o3[4x1,2nz]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ - casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a3, - a4, a5, a6, a7, a8, a9; - a0 = arg[1] ? arg[1][0] : 0; - a1 = arg[0] ? arg[0][2] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][0] = a0;} - a0 = arg[1] ? arg[1][1] : 0; - a1 = arg[0] ? arg[0][3] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][1] = a0;} - a0 = arg[1] ? arg[1][2] : 0; - a2 = 9.8100000000000005e+00; - a3 = arg[4] ? arg[4][1] : 0; - a4 = (a2 * a3); - a5 = arg[0] ? arg[0][1] : 0; - a6 = cos(a5); - a7 = (a4 * a6); - a8 = sin(a5); - a9 = (a7 * a8); - a10 = 8.0000000000000004e-01; - a11 = (a10 * a3); - a12 = (a11 * a8); - a13 = (a12 * a1); - a14 = (a13 * a1); - a9 = (a9 - a14); - a14 = arg[2] ? arg[2][0] : 0; - a9 = (a9 + a14); - a15 = arg[4] ? arg[4][0] : 0; - a16 = (a15 + a3); - a17 = (a3 * a6); - a18 = (a17 * a6); - a16 = (a16 - a18); - a9 = (a9 / a16); - a0 = (a0 - a9); - if (res[0] != 0) {res[0][2] = a0;} - a0 = arg[1] ? arg[1][3] : 0; - a18 = (a14 * a6); - a19 = (a10 * a3); - a20 = (a19 * a6); - a21 = (a20 * a8); - a22 = (a21 * a1); - a23 = (a22 * a1); - a18 = (a18 - a23); - a15 = (a15 + a3); - a2 = (a2 * a15); - a15 = (a2 * a8); - a18 = (a18 + a15); - a15 = (a10 * a16); - a18 = (a18 / a15); - a0 = (a0 - a18); - if (res[0] != 0) {res[0][3] = a0;} - a0 = cos(a5); - a7 = (a7 * a0); - a5 = sin(a5); - a4 = (a4 * a5); - a4 = (a8 * a4); - a7 = (a7 - a4); - a11 = (a11 * a0); - a11 = (a1 * a11); - a11 = (a1 * a11); - a7 = (a7 - a11); - a7 = (a7 / a16); - a9 = (a9 / a16); - a3 = (a3 * a5); - a3 = (a6 * a3); - a17 = (a17 * a5); - a3 = (a3 + a17); - a9 = (a9 * a3); - a7 = (a7 - a9); - a7 = (-a7); - if (res[1] != 0) {res[1][0] = a7;} - a2 = (a2 * a0); - a14 = (a14 * a5); - a20 = (a20 * a0); - a19 = (a19 * a5); - a8 = (a8 * a19); - a20 = (a20 - a8); - a20 = (a1 * a20); - a20 = (a1 * a20); - a14 = (a14 + a20); - a2 = (a2 - a14); - a2 = (a2 / a15); - a18 = (a18 / a15); - a10 = (a10 * a3); - a18 = (a18 * a10); - a2 = (a2 - a18); - a2 = (-a2); - if (res[1] != 0) {res[1][1] = a2;} - a2 = -1.; - if (res[1] != 0) {res[1][2] = a2;} - if (res[1] != 0) {res[1][3] = a2;} - a12 = (a1 * a12); - a12 = (a12 + a13); - a12 = (a12 / a16); - if (res[1] != 0) {res[1][4] = a12;} - a1 = (a1 * a21); - a1 = (a1 + a22); - a1 = (a1 / a15); - if (res[1] != 0) {res[1][5] = a1;} - a1 = 1.; - if (res[2] != 0) {res[2][0] = a1;} - if (res[2] != 0) {res[2][1] = a1;} - if (res[2] != 0) {res[2][2] = a1;} - if (res[2] != 0) {res[2][3] = a1;} - a16 = (1. / a16); - a16 = (-a16); - if (res[3] != 0) {res[3][0] = a16;} - a6 = (a6 / a15); - a6 = (-a6); - if (res[3] != 0) {res[3][1] = a6;} +/* mock_acados_solver_impl_dae_fun_jac_x_xdot_u:(i0[4],i1[4],i2,i3[],i4[],i5[2])->(o0[4],o1[4x4,6nz],o2[4x4,4nz],o3[4x1,2nz]) */ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { + casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a3, a4, a5, a6, a7, a8, a9; + a0=arg[1]? arg[1][0] : 0; + a1=arg[0]? arg[0][2] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][0]=a0; + a0=arg[1]? arg[1][1] : 0; + a1=arg[0]? arg[0][3] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][1]=a0; + a0=arg[1]? arg[1][2] : 0; + a2=9.8100000000000005e+00; + a3=arg[5]? arg[5][1] : 0; + a4=(a2*a3); + a5=arg[0]? arg[0][1] : 0; + a6=cos(a5); + a7=(a4*a6); + a8=sin(a5); + a9=(a7*a8); + a10=8.0000000000000004e-01; + a11=(a10*a3); + a12=(a11*a8); + a13=(a12*a1); + a14=(a13*a1); + a9=(a9-a14); + a14=arg[2]? arg[2][0] : 0; + a9=(a9+a14); + a15=arg[5]? arg[5][0] : 0; + a16=(a15+a3); + a17=(a3*a6); + a18=(a17*a6); + a16=(a16-a18); + a9=(a9/a16); + a0=(a0-a9); + if (res[0]!=0) res[0][2]=a0; + a0=arg[1]? arg[1][3] : 0; + a18=(a14*a6); + a19=(a10*a3); + a20=(a19*a6); + a21=(a20*a8); + a22=(a21*a1); + a23=(a22*a1); + a18=(a18-a23); + a15=(a15+a3); + a2=(a2*a15); + a15=(a2*a8); + a18=(a18+a15); + a15=(a10*a16); + a18=(a18/a15); + a0=(a0-a18); + if (res[0]!=0) res[0][3]=a0; + a0=cos(a5); + a7=(a7*a0); + a5=sin(a5); + a4=(a4*a5); + a4=(a8*a4); + a7=(a7-a4); + a11=(a11*a0); + a11=(a1*a11); + a11=(a1*a11); + a7=(a7-a11); + a7=(a7/a16); + a9=(a9/a16); + a3=(a3*a5); + a3=(a6*a3); + a17=(a17*a5); + a3=(a3+a17); + a9=(a9*a3); + a7=(a7-a9); + a7=(-a7); + if (res[1]!=0) res[1][0]=a7; + a2=(a2*a0); + a14=(a14*a5); + a20=(a20*a0); + a19=(a19*a5); + a8=(a8*a19); + a20=(a20-a8); + a20=(a1*a20); + a20=(a1*a20); + a14=(a14+a20); + a2=(a2-a14); + a2=(a2/a15); + a18=(a18/a15); + a10=(a10*a3); + a18=(a18*a10); + a2=(a2-a18); + a2=(-a2); + if (res[1]!=0) res[1][1]=a2; + a2=-1.; + if (res[1]!=0) res[1][2]=a2; + if (res[1]!=0) res[1][3]=a2; + a12=(a1*a12); + a12=(a12+a13); + a12=(a12/a16); + if (res[1]!=0) res[1][4]=a12; + a1=(a1*a21); + a1=(a1+a22); + a1=(a1/a15); + if (res[1]!=0) res[1][5]=a1; + a1=1.; + if (res[2]!=0) res[2][0]=a1; + if (res[2]!=0) res[2][1]=a1; + if (res[2]!=0) res[2][2]=a1; + if (res[2]!=0) res[2][3]=a1; + a16=(1./a16); + a16=(-a16); + if (res[3]!=0) res[3][0]=a16; + a6=(a6/a15); + a6=(-a6); + if (res[3]!=0) res[3][1]=a6; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n_in(void) {return 5;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n_in(void) { return 6;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n_out(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n_out(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_jac_x_xdot_u_default_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_jac_x_xdot_u_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; case 2: return "i2"; case 3: return "i3"; case 4: return "i4"; + case 5: return "i5"; default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_name_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -250,22 +235,19 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s0; case 2: return casadi_s1; case 3: return casadi_s2; - case 4: return casadi_s3; + case 4: return casadi_s2; + case 5: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s4; @@ -275,16 +257,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xd } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 5;} - if (sz_res) {*sz_res = 4;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6; + if (sz_res) *sz_res = 4; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6*sizeof(const casadi_real*); + if (sz_res) *sz_res = 4*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z.c index fc447f5..4633bf5 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -43,7 +48,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -58,198 +63,171 @@ static const casadi_int casadi_s5[11] = {4, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3}; static const casadi_int casadi_s6[6] = {4, 1, 0, 2, 2, 3}; static const casadi_int casadi_s7[3] = {4, 0, 0}; -/* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z:(i0[4],i1[4],i2,i3[],i4[2])->(o0[4],o1[4x4,6nz],o2[4x4,4nz],o3[4x1,2nz],o4[4x0]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ - casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a3, - a4, a5, a6, a7, a8, a9; - a0 = arg[1] ? arg[1][0] : 0; - a1 = arg[0] ? arg[0][2] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][0] = a0;} - a0 = arg[1] ? arg[1][1] : 0; - a1 = arg[0] ? arg[0][3] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][1] = a0;} - a0 = arg[1] ? arg[1][2] : 0; - a2 = 9.8100000000000005e+00; - a3 = arg[4] ? arg[4][1] : 0; - a4 = (a2 * a3); - a5 = arg[0] ? arg[0][1] : 0; - a6 = cos(a5); - a7 = (a4 * a6); - a8 = sin(a5); - a9 = (a7 * a8); - a10 = 8.0000000000000004e-01; - a11 = (a10 * a3); - a12 = (a11 * a8); - a13 = (a12 * a1); - a14 = (a13 * a1); - a9 = (a9 - a14); - a14 = arg[2] ? arg[2][0] : 0; - a9 = (a9 + a14); - a15 = arg[4] ? arg[4][0] : 0; - a16 = (a15 + a3); - a17 = (a3 * a6); - a18 = (a17 * a6); - a16 = (a16 - a18); - a9 = (a9 / a16); - a0 = (a0 - a9); - if (res[0] != 0) {res[0][2] = a0;} - a0 = arg[1] ? arg[1][3] : 0; - a18 = (a14 * a6); - a19 = (a10 * a3); - a20 = (a19 * a6); - a21 = (a20 * a8); - a22 = (a21 * a1); - a23 = (a22 * a1); - a18 = (a18 - a23); - a15 = (a15 + a3); - a2 = (a2 * a15); - a15 = (a2 * a8); - a18 = (a18 + a15); - a15 = (a10 * a16); - a18 = (a18 / a15); - a0 = (a0 - a18); - if (res[0] != 0) {res[0][3] = a0;} - a0 = cos(a5); - a7 = (a7 * a0); - a5 = sin(a5); - a4 = (a4 * a5); - a4 = (a8 * a4); - a7 = (a7 - a4); - a11 = (a11 * a0); - a11 = (a1 * a11); - a11 = (a1 * a11); - a7 = (a7 - a11); - a7 = (a7 / a16); - a9 = (a9 / a16); - a3 = (a3 * a5); - a3 = (a6 * a3); - a17 = (a17 * a5); - a3 = (a3 + a17); - a9 = (a9 * a3); - a7 = (a7 - a9); - a7 = (-a7); - if (res[1] != 0) {res[1][0] = a7;} - a2 = (a2 * a0); - a14 = (a14 * a5); - a20 = (a20 * a0); - a19 = (a19 * a5); - a8 = (a8 * a19); - a20 = (a20 - a8); - a20 = (a1 * a20); - a20 = (a1 * a20); - a14 = (a14 + a20); - a2 = (a2 - a14); - a2 = (a2 / a15); - a18 = (a18 / a15); - a10 = (a10 * a3); - a18 = (a18 * a10); - a2 = (a2 - a18); - a2 = (-a2); - if (res[1] != 0) {res[1][1] = a2;} - a2 = -1.; - if (res[1] != 0) {res[1][2] = a2;} - if (res[1] != 0) {res[1][3] = a2;} - a12 = (a1 * a12); - a12 = (a12 + a13); - a12 = (a12 / a16); - if (res[1] != 0) {res[1][4] = a12;} - a1 = (a1 * a21); - a1 = (a1 + a22); - a1 = (a1 / a15); - if (res[1] != 0) {res[1][5] = a1;} - a1 = 1.; - if (res[2] != 0) {res[2][0] = a1;} - if (res[2] != 0) {res[2][1] = a1;} - if (res[2] != 0) {res[2][2] = a1;} - if (res[2] != 0) {res[2][3] = a1;} - a16 = (1. / a16); - a16 = (-a16); - if (res[3] != 0) {res[3][0] = a16;} - a6 = (a6 / a15); - a6 = (-a6); - if (res[3] != 0) {res[3][1] = a6;} +/* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z:(i0[4],i1[4],i2,i3[],i4[],i5[2])->(o0[4],o1[4x4,6nz],o2[4x4,4nz],o3[4x1,2nz],o4[4x0]) */ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { + casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a3, a4, a5, a6, a7, a8, a9; + a0=arg[1]? arg[1][0] : 0; + a1=arg[0]? arg[0][2] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][0]=a0; + a0=arg[1]? arg[1][1] : 0; + a1=arg[0]? arg[0][3] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][1]=a0; + a0=arg[1]? arg[1][2] : 0; + a2=9.8100000000000005e+00; + a3=arg[5]? arg[5][1] : 0; + a4=(a2*a3); + a5=arg[0]? arg[0][1] : 0; + a6=cos(a5); + a7=(a4*a6); + a8=sin(a5); + a9=(a7*a8); + a10=8.0000000000000004e-01; + a11=(a10*a3); + a12=(a11*a8); + a13=(a12*a1); + a14=(a13*a1); + a9=(a9-a14); + a14=arg[2]? arg[2][0] : 0; + a9=(a9+a14); + a15=arg[5]? arg[5][0] : 0; + a16=(a15+a3); + a17=(a3*a6); + a18=(a17*a6); + a16=(a16-a18); + a9=(a9/a16); + a0=(a0-a9); + if (res[0]!=0) res[0][2]=a0; + a0=arg[1]? arg[1][3] : 0; + a18=(a14*a6); + a19=(a10*a3); + a20=(a19*a6); + a21=(a20*a8); + a22=(a21*a1); + a23=(a22*a1); + a18=(a18-a23); + a15=(a15+a3); + a2=(a2*a15); + a15=(a2*a8); + a18=(a18+a15); + a15=(a10*a16); + a18=(a18/a15); + a0=(a0-a18); + if (res[0]!=0) res[0][3]=a0; + a0=cos(a5); + a7=(a7*a0); + a5=sin(a5); + a4=(a4*a5); + a4=(a8*a4); + a7=(a7-a4); + a11=(a11*a0); + a11=(a1*a11); + a11=(a1*a11); + a7=(a7-a11); + a7=(a7/a16); + a9=(a9/a16); + a3=(a3*a5); + a3=(a6*a3); + a17=(a17*a5); + a3=(a3+a17); + a9=(a9*a3); + a7=(a7-a9); + a7=(-a7); + if (res[1]!=0) res[1][0]=a7; + a2=(a2*a0); + a14=(a14*a5); + a20=(a20*a0); + a19=(a19*a5); + a8=(a8*a19); + a20=(a20-a8); + a20=(a1*a20); + a20=(a1*a20); + a14=(a14+a20); + a2=(a2-a14); + a2=(a2/a15); + a18=(a18/a15); + a10=(a10*a3); + a18=(a18*a10); + a2=(a2-a18); + a2=(-a2); + if (res[1]!=0) res[1][1]=a2; + a2=-1.; + if (res[1]!=0) res[1][2]=a2; + if (res[1]!=0) res[1][3]=a2; + a12=(a1*a12); + a12=(a12+a13); + a12=(a12/a16); + if (res[1]!=0) res[1][4]=a12; + a1=(a1*a21); + a1=(a1+a22); + a1=(a1/a15); + if (res[1]!=0) res[1][5]=a1; + a1=1.; + if (res[2]!=0) res[2][0]=a1; + if (res[2]!=0) res[2][1]=a1; + if (res[2]!=0) res[2][2]=a1; + if (res[2]!=0) res[2][3]=a1; + a16=(1./a16); + a16=(-a16); + if (res[3]!=0) res[3][0]=a16; + a6=(a6/a15); + a6=(-a6); + if (res[3]!=0) res[3][1]=a6; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_n_in(void) -{ - return 5; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_n_in(void) { return 6;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_n_out(void) -{ - return 5; -} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_n_out(void) { return 5;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_default_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_name_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; case 2: return "i2"; case 3: return "i3"; case 4: return "i4"; + case 5: return "i5"; default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_name_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -260,22 +238,19 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s0; case 2: return casadi_s1; case 3: return casadi_s2; - case 4: return casadi_s3; + case 4: return casadi_s2; + case 5: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s4; @@ -286,16 +261,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xd } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 5;} - if (sz_res) {*sz_res = 5;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6; + if (sz_res) *sz_res = 5; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_z_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6*sizeof(const casadi_real*); + if (sz_res) *sz_res = 5*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_z.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_z.c index 0f898e5..1c16f22 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_z.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_fun_jac_x_xdot_z.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -42,7 +47,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -56,185 +61,165 @@ static const casadi_int casadi_s4[13] = {4, 4, 0, 0, 2, 3, 6, 2, 3, 0, 1, 2, 3}; static const casadi_int casadi_s5[11] = {4, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3}; static const casadi_int casadi_s6[3] = {4, 0, 0}; -/* mock_acados_solver_impl_dae_fun_jac_x_xdot_z:(i0[4],i1[4],i2,i3[],i4[2])->(o0[4],o1[4x4,6nz],o2[4x4,4nz],o3[4x0]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ - casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a3, - a4, a5, a6, a7, a8, a9; - a0 = arg[1] ? arg[1][0] : 0; - a1 = arg[0] ? arg[0][2] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][0] = a0;} - a0 = arg[1] ? arg[1][1] : 0; - a1 = arg[0] ? arg[0][3] : 0; - a0 = (a0 - a1); - if (res[0] != 0) {res[0][1] = a0;} - a0 = arg[1] ? arg[1][2] : 0; - a2 = 9.8100000000000005e+00; - a3 = arg[4] ? arg[4][1] : 0; - a4 = (a2 * a3); - a5 = arg[0] ? arg[0][1] : 0; - a6 = cos(a5); - a7 = (a4 * a6); - a8 = sin(a5); - a9 = (a7 * a8); - a10 = 8.0000000000000004e-01; - a11 = (a10 * a3); - a12 = (a11 * a8); - a13 = (a12 * a1); - a14 = (a13 * a1); - a9 = (a9 - a14); - a14 = arg[2] ? arg[2][0] : 0; - a9 = (a9 + a14); - a15 = arg[4] ? arg[4][0] : 0; - a16 = (a15 + a3); - a17 = (a3 * a6); - a18 = (a17 * a6); - a16 = (a16 - a18); - a9 = (a9 / a16); - a0 = (a0 - a9); - if (res[0] != 0) {res[0][2] = a0;} - a0 = arg[1] ? arg[1][3] : 0; - a18 = (a14 * a6); - a19 = (a10 * a3); - a20 = (a19 * a6); - a21 = (a20 * a8); - a22 = (a21 * a1); - a23 = (a22 * a1); - a18 = (a18 - a23); - a15 = (a15 + a3); - a2 = (a2 * a15); - a15 = (a2 * a8); - a18 = (a18 + a15); - a15 = (a10 * a16); - a18 = (a18 / a15); - a0 = (a0 - a18); - if (res[0] != 0) {res[0][3] = a0;} - a0 = cos(a5); - a7 = (a7 * a0); - a5 = sin(a5); - a4 = (a4 * a5); - a4 = (a8 * a4); - a7 = (a7 - a4); - a11 = (a11 * a0); - a11 = (a1 * a11); - a11 = (a1 * a11); - a7 = (a7 - a11); - a7 = (a7 / a16); - a9 = (a9 / a16); - a3 = (a3 * a5); - a6 = (a6 * a3); - a17 = (a17 * a5); - a6 = (a6 + a17); - a9 = (a9 * a6); - a7 = (a7 - a9); - a7 = (-a7); - if (res[1] != 0) {res[1][0] = a7;} - a2 = (a2 * a0); - a14 = (a14 * a5); - a20 = (a20 * a0); - a19 = (a19 * a5); - a8 = (a8 * a19); - a20 = (a20 - a8); - a20 = (a1 * a20); - a20 = (a1 * a20); - a14 = (a14 + a20); - a2 = (a2 - a14); - a2 = (a2 / a15); - a18 = (a18 / a15); - a10 = (a10 * a6); - a18 = (a18 * a10); - a2 = (a2 - a18); - a2 = (-a2); - if (res[1] != 0) {res[1][1] = a2;} - a2 = -1.; - if (res[1] != 0) {res[1][2] = a2;} - if (res[1] != 0) {res[1][3] = a2;} - a12 = (a1 * a12); - a12 = (a12 + a13); - a12 = (a12 / a16); - if (res[1] != 0) {res[1][4] = a12;} - a1 = (a1 * a21); - a1 = (a1 + a22); - a1 = (a1 / a15); - if (res[1] != 0) {res[1][5] = a1;} - a1 = 1.; - if (res[2] != 0) {res[2][0] = a1;} - if (res[2] != 0) {res[2][1] = a1;} - if (res[2] != 0) {res[2][2] = a1;} - if (res[2] != 0) {res[2][3] = a1;} +/* mock_acados_solver_impl_dae_fun_jac_x_xdot_z:(i0[4],i1[4],i2,i3[],i4[],i5[2])->(o0[4],o1[4x4,6nz],o2[4x4,4nz],o3[4x0]) */ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { + casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a3, a4, a5, a6, a7, a8, a9; + a0=arg[1]? arg[1][0] : 0; + a1=arg[0]? arg[0][2] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][0]=a0; + a0=arg[1]? arg[1][1] : 0; + a1=arg[0]? arg[0][3] : 0; + a0=(a0-a1); + if (res[0]!=0) res[0][1]=a0; + a0=arg[1]? arg[1][2] : 0; + a2=9.8100000000000005e+00; + a3=arg[5]? arg[5][1] : 0; + a4=(a2*a3); + a5=arg[0]? arg[0][1] : 0; + a6=cos(a5); + a7=(a4*a6); + a8=sin(a5); + a9=(a7*a8); + a10=8.0000000000000004e-01; + a11=(a10*a3); + a12=(a11*a8); + a13=(a12*a1); + a14=(a13*a1); + a9=(a9-a14); + a14=arg[2]? arg[2][0] : 0; + a9=(a9+a14); + a15=arg[5]? arg[5][0] : 0; + a16=(a15+a3); + a17=(a3*a6); + a18=(a17*a6); + a16=(a16-a18); + a9=(a9/a16); + a0=(a0-a9); + if (res[0]!=0) res[0][2]=a0; + a0=arg[1]? arg[1][3] : 0; + a18=(a14*a6); + a19=(a10*a3); + a20=(a19*a6); + a21=(a20*a8); + a22=(a21*a1); + a23=(a22*a1); + a18=(a18-a23); + a15=(a15+a3); + a2=(a2*a15); + a15=(a2*a8); + a18=(a18+a15); + a15=(a10*a16); + a18=(a18/a15); + a0=(a0-a18); + if (res[0]!=0) res[0][3]=a0; + a0=cos(a5); + a7=(a7*a0); + a5=sin(a5); + a4=(a4*a5); + a4=(a8*a4); + a7=(a7-a4); + a11=(a11*a0); + a11=(a1*a11); + a11=(a1*a11); + a7=(a7-a11); + a7=(a7/a16); + a9=(a9/a16); + a3=(a3*a5); + a6=(a6*a3); + a17=(a17*a5); + a6=(a6+a17); + a9=(a9*a6); + a7=(a7-a9); + a7=(-a7); + if (res[1]!=0) res[1][0]=a7; + a2=(a2*a0); + a14=(a14*a5); + a20=(a20*a0); + a19=(a19*a5); + a8=(a8*a19); + a20=(a20-a8); + a20=(a1*a20); + a20=(a1*a20); + a14=(a14+a20); + a2=(a2-a14); + a2=(a2/a15); + a18=(a18/a15); + a10=(a10*a6); + a18=(a18*a10); + a2=(a2-a18); + a2=(-a2); + if (res[1]!=0) res[1][1]=a2; + a2=-1.; + if (res[1]!=0) res[1][2]=a2; + if (res[1]!=0) res[1][3]=a2; + a12=(a1*a12); + a12=(a12+a13); + a12=(a12/a16); + if (res[1]!=0) res[1][4]=a12; + a1=(a1*a21); + a1=(a1+a22); + a1=(a1/a15); + if (res[1]!=0) res[1][5]=a1; + a1=1.; + if (res[2]!=0) res[2][0]=a1; + if (res[2]!=0) res[2][1]=a1; + if (res[2]!=0) res[2][2]=a1; + if (res[2]!=0) res[2][3]=a1; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_fun_jac_x_xdot_z_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_in(void) {return 5;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_in(void) { return 6;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_out(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_out(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_jac_x_xdot_z_default_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_fun_jac_x_xdot_z_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_jac_x_xdot_z_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; case 2: return "i2"; case 3: return "i3"; case 4: return "i4"; + case 5: return "i5"; default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_name_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_fun_jac_x_xdot_z_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -244,22 +229,19 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s0; case 2: return casadi_s1; case 3: return casadi_s2; - case 4: return casadi_s3; + case 4: return casadi_s2; + case 5: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s4; @@ -269,16 +251,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_fun_jac_x_xd } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 5;} - if (sz_res) {*sz_res = 4;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6; + if (sz_res) *sz_res = 4; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6*sizeof(const casadi_real*); + if (sz_res) *sz_res = 4*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_hess.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_hess.c index b4cd7dd..efb512a 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_hess.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_hess.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -41,13 +46,13 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif #endif -casadi_real casadi_sq(casadi_real x) {return x * x;} +casadi_real casadi_sq(casadi_real x) { return x*x;} static const casadi_int casadi_s0[8] = {4, 1, 0, 4, 0, 1, 2, 3}; static const casadi_int casadi_s1[5] = {1, 1, 0, 1, 0}; @@ -55,308 +60,290 @@ static const casadi_int casadi_s2[3] = {0, 0, 0}; static const casadi_int casadi_s3[6] = {2, 1, 0, 2, 0, 1}; static const casadi_int casadi_s4[18] = {9, 9, 0, 0, 3, 3, 5, 5, 5, 5, 5, 6, 1, 3, 8, 1, 3, 1}; -/* mock_acados_solver_impl_dae_hess:(i0[4],i1[4],i2,i3[],i4[4],i5[2])->(o0[9x9,6nz]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ - casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a24, - a25, a26, a27, a28, a29, a3, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a4, a40, a41, - a42, a43, a44, a45, a46, a47, a5, a6, a7, a8, a9; - a0 = arg[0] ? arg[0][1] : 0; - a1 = cos(a0); - a2 = 9.8100000000000005e+00; - a3 = arg[5] ? arg[5][0] : 0; - a4 = arg[5] ? arg[5][1] : 0; - a5 = (a3 + a4); - a5 = (a2 * a5); - a6 = arg[4] ? arg[4][3] : 0; - a7 = 8.0000000000000004e-01; - a3 = (a3 + a4); - a8 = cos(a0); - a9 = (a4 * a8); - a10 = (a9 * a8); - a3 = (a3 - a10); - a10 = (a7 * a3); - a11 = (a6 / a10); - a12 = (a11 / a10); - a13 = sin(a0); - a14 = (a4 * a13); - a15 = (a8 * a14); - a16 = (a9 * a13); - a15 = (a15 + a16); - a16 = (a7 * a15); - a12 = (a12 * a16); - a17 = (a5 * a12); - a18 = arg[0] ? arg[0][3] : 0; - a19 = (a18 * a11); - a20 = (a18 * a19); - a21 = (a7 * a4); - a22 = (a21 * a13); - a23 = (a20 * a22); - a24 = (a21 * a8); - a25 = (a18 * a12); - a26 = (a18 * a25); - a27 = (a24 * a26); - a23 = (a23 + a27); - a17 = (a17 - a23); - a23 = (a7 * a4); - a27 = arg[4] ? arg[4][2] : 0; - a28 = (a27 / a3); - a29 = (a28 / a3); - a29 = (a29 * a15); - a30 = (a18 * a29); - a31 = (a18 * a30); - a31 = (a23 * a31); - a17 = (a17 - a31); - a2 = (a2 * a4); - a31 = (a2 * a13); - a32 = (a28 * a31); - a33 = (a2 * a8); - a34 = (a33 * a29); - a32 = (a32 + a34); - a17 = (a17 + a32); - a17 = (a1 * a17); - a32 = (a24 * a20); - a34 = (a5 * a11); - a32 = (a32 - a34); - a34 = (a18 * a28); - a35 = (a18 * a34); - a35 = (a23 * a35); - a32 = (a32 + a35); - a35 = (a33 * a28); - a32 = (a32 - a35); - a35 = sin(a0); - a32 = (a32 * a35); - a17 = (a17 - a32); - a32 = sin(a0); - a35 = (a32 * a20); - a35 = (a21 * a35); - a36 = arg[2] ? arg[2][0] : 0; - a37 = (a36 * a11); - a35 = (a35 - a37); - a37 = (a36 * a8); - a38 = (a24 * a32); - a39 = (a38 * a18); - a40 = (a39 * a18); - a37 = (a37 - a40); - a40 = (a5 * a32); - a37 = (a37 + a40); - a37 = (a37 / a10); - a40 = (a37 / a10); - a41 = (a40 * a6); - a41 = (a7 * a41); - a42 = (a33 * a32); - a43 = (a23 * a32); - a44 = (a43 * a18); - a45 = (a44 * a18); - a42 = (a42 - a45); - a42 = (a42 + a36); - a42 = (a42 / a3); - a45 = (a42 / a3); - a46 = (a45 * a27); - a41 = (a41 + a46); - a46 = (a9 * a41); - a35 = (a35 - a46); - a46 = (a8 * a41); - a46 = (a4 * a46); - a35 = (a35 - a46); - a46 = (a32 * a28); - a46 = (a2 * a46); - a35 = (a35 - a46); - a46 = cos(a0); - a35 = (a35 * a46); - a46 = sin(a0); - a0 = cos(a0); - a20 = (a20 * a0); - a26 = (a32 * a26); - a20 = (a20 - a26); - a20 = (a21 * a20); - a26 = (a36 * a12); - a20 = (a20 + a26); - a5 = (a5 * a0); - a36 = (a36 * a13); - a26 = (a24 * a0); - a22 = (a32 * a22); - a26 = (a26 - a22); - a22 = (a18 * a26); - a47 = (a18 * a22); - a36 = (a36 + a47); - a5 = (a5 - a36); - a5 = (a5 / a10); - a37 = (a37 / a10); - a37 = (a37 * a16); - a5 = (a5 - a37); - a5 = (a5 / a10); - a40 = (a40 / a10); - a40 = (a40 * a16); - a5 = (a5 - a40); - a5 = (a6 * a5); - a5 = (a7 * a5); - a33 = (a33 * a0); - a31 = (a32 * a31); - a33 = (a33 - a31); - a31 = (a23 * a0); - a40 = (a18 * a31); - a16 = (a18 * a40); - a33 = (a33 - a16); - a33 = (a33 / a3); - a42 = (a42 / a3); - a42 = (a42 * a15); - a33 = (a33 - a42); - a33 = (a33 / a3); - a45 = (a45 / a3); - a45 = (a45 * a15); - a33 = (a33 - a45); - a33 = (a27 * a33); - a5 = (a5 + a33); - a33 = (a9 * a5); - a14 = (a41 * a14); - a33 = (a33 - a14); - a20 = (a20 - a33); - a5 = (a8 * a5); - a41 = (a41 * a13); - a5 = (a5 - a41); - a5 = (a4 * a5); - a20 = (a20 - a5); - a0 = (a28 * a0); - a5 = (a32 * a29); - a0 = (a0 - a5); - a2 = (a2 * a0); - a20 = (a20 - a2); - a20 = (a46 * a20); - a35 = (a35 + a20); - a17 = (a17 - a35); - if (res[0] != 0) {res[0][0] = a17;} - a22 = (a11 * a22); - a17 = (a39 * a12); - a22 = (a22 - a17); - a26 = (a19 * a26); - a25 = (a38 * a25); - a26 = (a26 - a25); - a22 = (a22 + a26); - a40 = (a28 * a40); - a26 = (a44 * a29); - a40 = (a40 - a26); - a22 = (a22 + a40); - a31 = (a34 * a31); - a30 = (a43 * a30); - a31 = (a31 - a30); - a22 = (a22 + a31); - if (res[0] != 0) {res[0][1] = a22;} - a13 = (a11 * a13); - a12 = (a8 * a12); - a13 = (a13 + a12); - a13 = (a13 + a29); - if (res[0] != 0) {res[0][2] = a13;} - a13 = (a18 * a11); - a19 = (a19 + a13); - a24 = (a24 * a19); - a13 = (a18 * a28); - a34 = (a34 + a13); - a23 = (a23 * a34); - a24 = (a24 + a23); - a1 = (a1 * a24); - a32 = (a32 * a19); - a21 = (a21 * a32); - a32 = (a18 * a38); - a32 = (a32 + a39); - a32 = (a32 / a10); - a32 = (a32 / a10); - a32 = (a6 * a32); - a32 = (a7 * a32); - a18 = (a18 * a43); - a18 = (a18 + a44); - a18 = (a18 / a3); - a18 = (a18 / a3); - a18 = (a27 * a18); - a32 = (a32 + a18); - a18 = (a9 * a32); - a21 = (a21 + a18); - a32 = (a8 * a32); - a32 = (a4 * a32); - a21 = (a21 + a32); - a21 = (a46 * a21); - a1 = (a1 - a21); - if (res[0] != 0) {res[0][3] = a1;} - a1 = (a11 * a38); - a38 = (a38 * a11); - a1 = (a1 + a38); - a38 = (a28 * a43); - a1 = (a1 + a38); - a43 = (a43 * a28); - a1 = (a1 + a43); - if (res[0] != 0) {res[0][4] = a1;} - a1 = (a8 / a10); - a1 = (a1 / a10); - a6 = (a6 * a1); - a7 = (a7 * a6); - a3 = (1. / a3); - a3 = casadi_sq(a3); - a27 = (a27 * a3); - a7 = (a7 + a27); - a9 = (a9 * a7); - a11 = (a11 + a9); - a8 = (a8 * a7); - a4 = (a4 * a8); - a11 = (a11 + a4); - a46 = (a46 * a11); - if (res[0] != 0) {res[0][5] = a46;} +/* mock_acados_solver_impl_dae_hess:(i0[4],i1[4],i2,i3[],i4[4],i5[],i6[2])->(o0[9x9,6nz]) */ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { + casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a2, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a3, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a4, a40, a41, a42, a43, a44, a45, a46, a47, a5, a6, a7, a8, a9; + a0=arg[0]? arg[0][1] : 0; + a1=cos(a0); + a2=9.8100000000000005e+00; + a3=arg[6]? arg[6][0] : 0; + a4=arg[6]? arg[6][1] : 0; + a5=(a3+a4); + a5=(a2*a5); + a6=arg[4]? arg[4][3] : 0; + a7=8.0000000000000004e-01; + a3=(a3+a4); + a8=cos(a0); + a9=(a4*a8); + a10=(a9*a8); + a3=(a3-a10); + a10=(a7*a3); + a11=(a6/a10); + a12=(a11/a10); + a13=sin(a0); + a14=(a4*a13); + a15=(a8*a14); + a16=(a9*a13); + a15=(a15+a16); + a16=(a7*a15); + a12=(a12*a16); + a17=(a5*a12); + a18=arg[0]? arg[0][3] : 0; + a19=(a18*a11); + a20=(a18*a19); + a21=(a7*a4); + a22=(a21*a13); + a23=(a20*a22); + a24=(a21*a8); + a25=(a18*a12); + a26=(a18*a25); + a27=(a24*a26); + a23=(a23+a27); + a17=(a17-a23); + a23=(a7*a4); + a27=arg[4]? arg[4][2] : 0; + a28=(a27/a3); + a29=(a28/a3); + a29=(a29*a15); + a30=(a18*a29); + a31=(a18*a30); + a31=(a23*a31); + a17=(a17-a31); + a2=(a2*a4); + a31=(a2*a13); + a32=(a28*a31); + a33=(a2*a8); + a34=(a33*a29); + a32=(a32+a34); + a17=(a17+a32); + a17=(a1*a17); + a32=(a24*a20); + a34=(a5*a11); + a32=(a32-a34); + a34=(a18*a28); + a35=(a18*a34); + a35=(a23*a35); + a32=(a32+a35); + a35=(a33*a28); + a32=(a32-a35); + a35=sin(a0); + a32=(a32*a35); + a17=(a17-a32); + a32=sin(a0); + a35=(a32*a20); + a35=(a21*a35); + a36=arg[2]? arg[2][0] : 0; + a37=(a36*a11); + a35=(a35-a37); + a37=(a36*a8); + a38=(a24*a32); + a39=(a38*a18); + a40=(a39*a18); + a37=(a37-a40); + a40=(a5*a32); + a37=(a37+a40); + a37=(a37/a10); + a40=(a37/a10); + a41=(a40*a6); + a41=(a7*a41); + a42=(a33*a32); + a43=(a23*a32); + a44=(a43*a18); + a45=(a44*a18); + a42=(a42-a45); + a42=(a42+a36); + a42=(a42/a3); + a45=(a42/a3); + a46=(a45*a27); + a41=(a41+a46); + a46=(a9*a41); + a35=(a35-a46); + a46=(a8*a41); + a46=(a4*a46); + a35=(a35-a46); + a46=(a32*a28); + a46=(a2*a46); + a35=(a35-a46); + a46=cos(a0); + a35=(a35*a46); + a46=sin(a0); + a0=cos(a0); + a20=(a20*a0); + a26=(a32*a26); + a20=(a20-a26); + a20=(a21*a20); + a26=(a36*a12); + a20=(a20+a26); + a5=(a5*a0); + a36=(a36*a13); + a26=(a24*a0); + a22=(a32*a22); + a26=(a26-a22); + a22=(a18*a26); + a47=(a18*a22); + a36=(a36+a47); + a5=(a5-a36); + a5=(a5/a10); + a37=(a37/a10); + a37=(a37*a16); + a5=(a5-a37); + a5=(a5/a10); + a40=(a40/a10); + a40=(a40*a16); + a5=(a5-a40); + a5=(a6*a5); + a5=(a7*a5); + a33=(a33*a0); + a31=(a32*a31); + a33=(a33-a31); + a31=(a23*a0); + a40=(a18*a31); + a16=(a18*a40); + a33=(a33-a16); + a33=(a33/a3); + a42=(a42/a3); + a42=(a42*a15); + a33=(a33-a42); + a33=(a33/a3); + a45=(a45/a3); + a45=(a45*a15); + a33=(a33-a45); + a33=(a27*a33); + a5=(a5+a33); + a33=(a9*a5); + a14=(a41*a14); + a33=(a33-a14); + a20=(a20-a33); + a5=(a8*a5); + a41=(a41*a13); + a5=(a5-a41); + a5=(a4*a5); + a20=(a20-a5); + a0=(a28*a0); + a5=(a32*a29); + a0=(a0-a5); + a2=(a2*a0); + a20=(a20-a2); + a20=(a46*a20); + a35=(a35+a20); + a17=(a17-a35); + if (res[0]!=0) res[0][0]=a17; + a22=(a11*a22); + a17=(a39*a12); + a22=(a22-a17); + a26=(a19*a26); + a25=(a38*a25); + a26=(a26-a25); + a22=(a22+a26); + a40=(a28*a40); + a26=(a44*a29); + a40=(a40-a26); + a22=(a22+a40); + a31=(a34*a31); + a30=(a43*a30); + a31=(a31-a30); + a22=(a22+a31); + if (res[0]!=0) res[0][1]=a22; + a13=(a11*a13); + a12=(a8*a12); + a13=(a13+a12); + a13=(a13+a29); + if (res[0]!=0) res[0][2]=a13; + a13=(a18*a11); + a19=(a19+a13); + a24=(a24*a19); + a13=(a18*a28); + a34=(a34+a13); + a23=(a23*a34); + a24=(a24+a23); + a1=(a1*a24); + a32=(a32*a19); + a21=(a21*a32); + a32=(a18*a38); + a32=(a32+a39); + a32=(a32/a10); + a32=(a32/a10); + a32=(a6*a32); + a32=(a7*a32); + a18=(a18*a43); + a18=(a18+a44); + a18=(a18/a3); + a18=(a18/a3); + a18=(a27*a18); + a32=(a32+a18); + a18=(a9*a32); + a21=(a21+a18); + a32=(a8*a32); + a32=(a4*a32); + a21=(a21+a32); + a21=(a46*a21); + a1=(a1-a21); + if (res[0]!=0) res[0][3]=a1; + a1=(a11*a38); + a38=(a38*a11); + a1=(a1+a38); + a38=(a28*a43); + a1=(a1+a38); + a43=(a43*a28); + a1=(a1+a43); + if (res[0]!=0) res[0][4]=a1; + a1=(a8/a10); + a1=(a1/a10); + a6=(a6*a1); + a7=(a7*a6); + a3=(1./a3); + a3=casadi_sq(a3); + a27=(a27*a3); + a7=(a7+a27); + a9=(a9*a7); + a11=(a11+a9); + a8=(a8*a7); + a4=(a4*a8); + a11=(a11+a4); + a46=(a46*a11); + if (res[0]!=0) res[0][5]=a46; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess( - const casadi_real ** arg, - casadi_real ** res, casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_hess_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_hess_n_in(void) {return 6;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_hess_n_in(void) { return 7;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_hess_n_out(void) {return 1;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_hess_n_out(void) { return 1;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_hess_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_hess_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_hess_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_hess_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; @@ -364,49 +351,51 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_hess_name_in(casad case 3: return "i3"; case 4: return "i4"; case 5: return "i5"; + case 6: return "i6"; default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_hess_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_hess_name_out(casadi_int i) { switch (i) { case 0: return "o0"; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_hess_sparsity_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_hess_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s0; case 2: return casadi_s1; case 3: return casadi_s2; case 4: return casadi_s0; - case 5: return casadi_s3; + case 5: return casadi_s2; + case 6: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_hess_sparsity_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_hess_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s4; default: return 0; } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 6;} - if (sz_res) {*sz_res = 1;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 7; + if (sz_res) *sz_res = 1; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_hess_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 7*sizeof(const casadi_real*); + if (sz_res) *sz_res = 1*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_jac_x_xdot_u_z.c b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_jac_x_xdot_u_z.c index 2eaacde..2e7a95e 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_jac_x_xdot_u_z.c +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_impl_dae_jac_x_xdot_u_z.c @@ -1,5 +1,10 @@ -/* This file was automatically generated by CasADi. - The CasADi copyright holders make no ownership claim of its contents. */ +/* This file was automatically generated by CasADi 3.6.5. + * It consists of: + * 1) content generated by CasADi runtime: not copyrighted + * 2) template code copied from CasADi source: permissively licensed (MIT-0) + * 3) user code: owned by the user + * + */ #ifdef __cplusplus extern "C" { #endif @@ -43,7 +48,7 @@ extern "C" { #define CASADI_SYMBOL_EXPORT __declspec(dllexport) #endif #elif defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY) - #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility("default"))) + #define CASADI_SYMBOL_EXPORT __attribute__ ((visibility ("default"))) #else #define CASADI_SYMBOL_EXPORT #endif @@ -58,175 +63,158 @@ static const casadi_int casadi_s5[11] = {4, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3}; static const casadi_int casadi_s6[6] = {4, 1, 0, 2, 2, 3}; static const casadi_int casadi_s7[3] = {4, 0, 0}; -/* mock_acados_solver_impl_dae_jac_x_xdot_u_z:(i0[4],i1[4],i2,i3[],i4[2])->(o0[4x4,6nz],o1[4x4,4nz],o2[4x1,2nz],o3[4x0]) */ -static int casadi_f0( - const casadi_real ** arg, casadi_real ** res, casadi_int * iw, casadi_real * w, - int mem) -{ +/* mock_acados_solver_impl_dae_jac_x_xdot_u_z:(i0[4],i1[4],i2,i3[],i4[],i5[2])->(o0[4x4,6nz],o1[4x4,4nz],o2[4x1,2nz],o3[4x0]) */ +static int casadi_f0(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem) { casadi_real a0, a1, a10, a11, a12, a13, a14, a15, a16, a2, a3, a4, a5, a6, a7, a8, a9; - a0 = 9.8100000000000005e+00; - a1 = arg[4] ? arg[4][1] : 0; - a2 = (a0 * a1); - a3 = arg[0] ? arg[0][1] : 0; - a4 = cos(a3); - a5 = (a2 * a4); - a6 = cos(a3); - a7 = (a5 * a6); - a8 = sin(a3); - a3 = sin(a3); - a2 = (a2 * a3); - a2 = (a8 * a2); - a7 = (a7 - a2); - a2 = arg[0] ? arg[0][3] : 0; - a9 = 8.0000000000000004e-01; - a10 = (a9 * a1); - a11 = (a10 * a6); - a11 = (a2 * a11); - a11 = (a2 * a11); - a7 = (a7 - a11); - a11 = arg[4] ? arg[4][0] : 0; - a12 = (a11 + a1); - a13 = (a1 * a4); - a14 = (a13 * a4); - a12 = (a12 - a14); - a7 = (a7 / a12); - a5 = (a5 * a8); - a10 = (a10 * a8); - a14 = (a10 * a2); - a15 = (a14 * a2); - a5 = (a5 - a15); - a15 = arg[2] ? arg[2][0] : 0; - a5 = (a5 + a15); - a5 = (a5 / a12); - a5 = (a5 / a12); - a16 = (a1 * a3); - a16 = (a4 * a16); - a13 = (a13 * a3); - a16 = (a16 + a13); - a5 = (a5 * a16); - a7 = (a7 - a5); - a7 = (-a7); - if (res[0] != 0) {res[0][0] = a7;} - a11 = (a11 + a1); - a0 = (a0 * a11); - a11 = (a0 * a6); - a7 = (a15 * a3); - a1 = (a9 * a1); - a5 = (a1 * a4); - a6 = (a5 * a6); - a1 = (a1 * a3); - a1 = (a8 * a1); - a6 = (a6 - a1); - a6 = (a2 * a6); - a6 = (a2 * a6); - a7 = (a7 + a6); - a11 = (a11 - a7); - a7 = (a9 * a12); - a11 = (a11 / a7); - a15 = (a15 * a4); - a5 = (a5 * a8); - a6 = (a5 * a2); - a1 = (a6 * a2); - a15 = (a15 - a1); - a0 = (a0 * a8); - a15 = (a15 + a0); - a15 = (a15 / a7); - a15 = (a15 / a7); - a9 = (a9 * a16); - a15 = (a15 * a9); - a11 = (a11 - a15); - a11 = (-a11); - if (res[0] != 0) {res[0][1] = a11;} - a11 = -1.; - if (res[0] != 0) {res[0][2] = a11;} - if (res[0] != 0) {res[0][3] = a11;} - a10 = (a2 * a10); - a10 = (a10 + a14); - a10 = (a10 / a12); - if (res[0] != 0) {res[0][4] = a10;} - a2 = (a2 * a5); - a2 = (a2 + a6); - a2 = (a2 / a7); - if (res[0] != 0) {res[0][5] = a2;} - a2 = 1.; - if (res[1] != 0) {res[1][0] = a2;} - if (res[1] != 0) {res[1][1] = a2;} - if (res[1] != 0) {res[1][2] = a2;} - if (res[1] != 0) {res[1][3] = a2;} - a12 = (1. / a12); - a12 = (-a12); - if (res[2] != 0) {res[2][0] = a12;} - a4 = (a4 / a7); - a4 = (-a4); - if (res[2] != 0) {res[2][1] = a4;} + a0=9.8100000000000005e+00; + a1=arg[5]? arg[5][1] : 0; + a2=(a0*a1); + a3=arg[0]? arg[0][1] : 0; + a4=cos(a3); + a5=(a2*a4); + a6=cos(a3); + a7=(a5*a6); + a8=sin(a3); + a3=sin(a3); + a2=(a2*a3); + a2=(a8*a2); + a7=(a7-a2); + a2=arg[0]? arg[0][3] : 0; + a9=8.0000000000000004e-01; + a10=(a9*a1); + a11=(a10*a6); + a11=(a2*a11); + a11=(a2*a11); + a7=(a7-a11); + a11=arg[5]? arg[5][0] : 0; + a12=(a11+a1); + a13=(a1*a4); + a14=(a13*a4); + a12=(a12-a14); + a7=(a7/a12); + a5=(a5*a8); + a10=(a10*a8); + a14=(a10*a2); + a15=(a14*a2); + a5=(a5-a15); + a15=arg[2]? arg[2][0] : 0; + a5=(a5+a15); + a5=(a5/a12); + a5=(a5/a12); + a16=(a1*a3); + a16=(a4*a16); + a13=(a13*a3); + a16=(a16+a13); + a5=(a5*a16); + a7=(a7-a5); + a7=(-a7); + if (res[0]!=0) res[0][0]=a7; + a11=(a11+a1); + a0=(a0*a11); + a11=(a0*a6); + a7=(a15*a3); + a1=(a9*a1); + a5=(a1*a4); + a6=(a5*a6); + a1=(a1*a3); + a1=(a8*a1); + a6=(a6-a1); + a6=(a2*a6); + a6=(a2*a6); + a7=(a7+a6); + a11=(a11-a7); + a7=(a9*a12); + a11=(a11/a7); + a15=(a15*a4); + a5=(a5*a8); + a6=(a5*a2); + a1=(a6*a2); + a15=(a15-a1); + a0=(a0*a8); + a15=(a15+a0); + a15=(a15/a7); + a15=(a15/a7); + a9=(a9*a16); + a15=(a15*a9); + a11=(a11-a15); + a11=(-a11); + if (res[0]!=0) res[0][1]=a11; + a11=-1.; + if (res[0]!=0) res[0][2]=a11; + if (res[0]!=0) res[0][3]=a11; + a10=(a2*a10); + a10=(a10+a14); + a10=(a10/a12); + if (res[0]!=0) res[0][4]=a10; + a2=(a2*a5); + a2=(a2+a6); + a2=(a2/a7); + if (res[0]!=0) res[0][5]=a2; + a2=1.; + if (res[1]!=0) res[1][0]=a2; + if (res[1]!=0) res[1][1]=a2; + if (res[1]!=0) res[1][2]=a2; + if (res[1]!=0) res[1][3]=a2; + a12=(1./a12); + a12=(-a12); + if (res[2]!=0) res[2][0]=a12; + a4=(a4/a7); + a4=(-a4); + if (res[2]!=0) res[2][1]=a4; return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z( - const casadi_real ** arg, - casadi_real ** res, - casadi_int * iw, - casadi_real * w, int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z(const casadi_real** arg, casadi_real** res, casadi_int* iw, casadi_real* w, int mem){ return casadi_f0(arg, res, iw, w, mem); } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_alloc_mem(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_alloc_mem(void) { return 0; } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_init_mem(int mem) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_init_mem(int mem) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_free_mem(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_free_mem(int mem) { } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_checkout(void) -{ +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_checkout(void) { return 0; } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_release(int mem) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_release(int mem) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_incref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_incref(void) { } -CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_decref(void) -{ +CASADI_SYMBOL_EXPORT void mock_acados_solver_impl_dae_jac_x_xdot_u_z_decref(void) { } -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_in(void) {return 5;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_in(void) { return 6;} -CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_out(void) {return 4;} +CASADI_SYMBOL_EXPORT casadi_int mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_out(void) { return 4;} -CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_jac_x_xdot_u_z_default_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT casadi_real mock_acados_solver_impl_dae_jac_x_xdot_u_z_default_in(casadi_int i) { switch (i) { default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_jac_x_xdot_u_z_name_in(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_jac_x_xdot_u_z_name_in(casadi_int i) { switch (i) { case 0: return "i0"; case 1: return "i1"; case 2: return "i2"; case 3: return "i3"; case 4: return "i4"; + case 5: return "i5"; default: return 0; } } -CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_jac_x_xdot_u_z_name_out(casadi_int i) -{ +CASADI_SYMBOL_EXPORT const char* mock_acados_solver_impl_dae_jac_x_xdot_u_z_name_out(casadi_int i) { switch (i) { case 0: return "o0"; case 1: return "o1"; @@ -236,22 +224,19 @@ CASADI_SYMBOL_EXPORT const char * mock_acados_solver_impl_dae_jac_x_xdot_u_z_nam } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_in( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_in(casadi_int i) { switch (i) { case 0: return casadi_s0; case 1: return casadi_s0; case 2: return casadi_s1; case 3: return casadi_s2; - case 4: return casadi_s3; + case 4: return casadi_s2; + case 5: return casadi_s3; default: return 0; } } -CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_out( - casadi_int i) -{ +CASADI_SYMBOL_EXPORT const casadi_int* mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_out(casadi_int i) { switch (i) { case 0: return casadi_s4; case 1: return casadi_s5; @@ -261,16 +246,19 @@ CASADI_SYMBOL_EXPORT const casadi_int * mock_acados_solver_impl_dae_jac_x_xdot_u } } -CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_work( - casadi_int * sz_arg, - casadi_int * sz_res, - casadi_int * sz_iw, - casadi_int * sz_w) -{ - if (sz_arg) {*sz_arg = 5;} - if (sz_res) {*sz_res = 4;} - if (sz_iw) {*sz_iw = 0;} - if (sz_w) {*sz_w = 0;} +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_work(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6; + if (sz_res) *sz_res = 4; + if (sz_iw) *sz_iw = 0; + if (sz_w) *sz_w = 0; + return 0; +} + +CASADI_SYMBOL_EXPORT int mock_acados_solver_impl_dae_jac_x_xdot_u_z_work_bytes(casadi_int *sz_arg, casadi_int* sz_res, casadi_int *sz_iw, casadi_int *sz_w) { + if (sz_arg) *sz_arg = 6*sizeof(const casadi_real*); + if (sz_res) *sz_res = 4*sizeof(casadi_real*); + if (sz_iw) *sz_iw = 0*sizeof(casadi_int); + if (sz_w) *sz_w = 0*sizeof(casadi_real); return 0; } diff --git a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_model.h b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_model.h index de8055a..7c6b863 100644 --- a/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_model.h +++ b/acados_solver_base/test/mock_acados_solver/generated_c_code/mock_acados_solver_model/mock_acados_solver_model.h @@ -36,54 +36,48 @@ extern "C" { #endif + // implicit ODE: function -int mock_acados_solver_impl_dae_fun( - const real_t ** arg, real_t ** res, int * iw, real_t * w, - void * mem); +int mock_acados_solver_impl_dae_fun(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_impl_dae_fun_work(int *, int *, int *, int *); -const int * mock_acados_solver_impl_dae_fun_sparsity_in(int); -const int * mock_acados_solver_impl_dae_fun_sparsity_out(int); +const int *mock_acados_solver_impl_dae_fun_sparsity_in(int); +const int *mock_acados_solver_impl_dae_fun_sparsity_out(int); int mock_acados_solver_impl_dae_fun_n_in(void); int mock_acados_solver_impl_dae_fun_n_out(void); // implicit ODE: function + jacobians -int mock_acados_solver_impl_dae_fun_jac_x_xdot_z( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_impl_dae_fun_jac_x_xdot_z(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_work(int *, int *, int *, int *); -const int * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_in(int); -const int * mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_out(int); +const int *mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_in(int); +const int *mock_acados_solver_impl_dae_fun_jac_x_xdot_z_sparsity_out(int); int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_in(void); int mock_acados_solver_impl_dae_fun_jac_x_xdot_z_n_out(void); // implicit ODE: jacobians only -int mock_acados_solver_impl_dae_jac_x_xdot_u_z( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_impl_dae_jac_x_xdot_u_z(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_impl_dae_jac_x_xdot_u_z_work(int *, int *, int *, int *); -const int * mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_in(int); -const int * mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_out(int); +const int *mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_in(int); +const int *mock_acados_solver_impl_dae_jac_x_xdot_u_z_sparsity_out(int); int mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_in(void); int mock_acados_solver_impl_dae_jac_x_xdot_u_z_n_out(void); // implicit ODE - for lifted_irk -int mock_acados_solver_impl_dae_fun_jac_x_xdot_u( - const real_t ** arg, real_t ** res, int * iw, - real_t * w, void * mem); +int mock_acados_solver_impl_dae_fun_jac_x_xdot_u(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_work(int *, int *, int *, int *); -const int * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_in(int); -const int * mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_out(int); +const int *mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_in(int); +const int *mock_acados_solver_impl_dae_fun_jac_x_xdot_u_sparsity_out(int); int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n_in(void); int mock_acados_solver_impl_dae_fun_jac_x_xdot_u_n_out(void); // implicit ODE - hessian -int mock_acados_solver_impl_dae_hess( - const real_t ** arg, real_t ** res, int * iw, real_t * w, - void * mem); +int mock_acados_solver_impl_dae_hess(const real_t** arg, real_t** res, int* iw, real_t* w, void *mem); int mock_acados_solver_impl_dae_hess_work(int *, int *, int *, int *); -const int * mock_acados_solver_impl_dae_hess_sparsity_in(int); -const int * mock_acados_solver_impl_dae_hess_sparsity_out(int); +const int *mock_acados_solver_impl_dae_hess_sparsity_in(int); +const int *mock_acados_solver_impl_dae_hess_sparsity_out(int); int mock_acados_solver_impl_dae_hess_n_in(void); int mock_acados_solver_impl_dae_hess_n_out(void); + + + #ifdef __cplusplus diff --git a/acados_solver_base/test/mock_acados_solver/mock_acados_solver.cpp b/acados_solver_base/test/mock_acados_solver/mock_acados_solver.cpp index ff128e0..8155043 100644 --- a/acados_solver_base/test/mock_acados_solver/mock_acados_solver.cpp +++ b/acados_solver_base/test/mock_acados_solver/mock_acados_solver.cpp @@ -26,6 +26,8 @@ namespace acados { +using namespace acados; + // Constructor MockAcadosSolver::MockAcadosSolver() { @@ -105,9 +107,7 @@ int MockAcadosSolver::internal_create_with_discretization( int n_time_steps, double * new_time_steps) { - return mock_acados_solver_acados_create_with_discretization( - _capsule, n_time_steps, - new_time_steps); + return mock_acados_solver_acados_create_with_discretization(_capsule, n_time_steps, new_time_steps); } int MockAcadosSolver::internal_reset(int reset_qp_solver_mem) { @@ -130,13 +130,9 @@ int MockAcadosSolver::internal_update_params(unsigned int stage, double * value, { return mock_acados_solver_acados_update_params(_capsule, static_cast(stage), value, np); } -int MockAcadosSolver::internal_update_params_sparse( - unsigned int stage, int * idx, double * p, - int n_update) +int MockAcadosSolver::internal_update_params_sparse(unsigned int stage, int * idx, double * p, int n_update) { - return mock_acados_solver_acados_update_params_sparse( - _capsule, static_cast(stage), idx, p, - n_update); + return mock_acados_solver_acados_update_params_sparse(_capsule, static_cast(stage), idx, p, n_update); } int MockAcadosSolver::internal_solve() { @@ -186,4 +182,4 @@ unsigned int MockAcadosSolver::get_nlp_np() const return _capsule->nlp_np; } -} // using namespace acados +} // namespace acados diff --git a/acados_solver_base/test/mock_acados_solver/mock_acados_solver.hpp b/acados_solver_base/test/mock_acados_solver/mock_acados_solver.hpp index 4c2c450..c20f65c 100644 --- a/acados_solver_base/test/mock_acados_solver/mock_acados_solver.hpp +++ b/acados_solver_base/test/mock_acados_solver/mock_acados_solver.hpp @@ -22,7 +22,7 @@ struct mock_acados_solver_solver_capsule; namespace acados { -class MockAcadosSolver : public AcadosSolver +class MockAcadosSolver : public acados::AcadosSolver { public: // Constructor @@ -41,9 +41,7 @@ class MockAcadosSolver : public AcadosSolver virtual int internal_update_qp_solver_cond_N(int qp_solver_cond_N); virtual int internal_update_params(unsigned int stage, double * value, int np); - virtual int internal_update_params_sparse( - unsigned int stage, int * idx, double * p, - int n_update); + virtual int internal_update_params_sparse(unsigned int stage, int * idx, double * p, int n_update); virtual int internal_solve(); virtual void internal_print_stats() const; @@ -61,4 +59,4 @@ class MockAcadosSolver : public AcadosSolver mock_acados_solver_solver_capsule * _capsule = nullptr; }; -} // namespace acados +} // namespace acados \ No newline at end of file From 8e9fdbed7d269b0f64e1986a03b45e07dce04205 Mon Sep 17 00:00:00 2001 From: Thibault Poignonec Date: Wed, 24 Apr 2024 18:22:56 +0200 Subject: [PATCH 6/6] test and format boilerplate updates --- .pre-commit-config.yaml | 2 +- acados_solver_base/CMakeLists.txt | 7 ++++--- acados_solver_base/package.xml | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fb33cda..3b3df75 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,7 +15,7 @@ # # See https://github.com/pre-commit/pre-commit -exclude: 'acados_solver_base/test/mock_acados_solver/generated_c_code/.*' +exclude: 'acados_solver_base/test/mock_acados_solver/*' repos: # Standard hooks - repo: https://github.com/pre-commit/pre-commit-hooks diff --git a/acados_solver_base/CMakeLists.txt b/acados_solver_base/CMakeLists.txt index cf30801..1f85cc9 100644 --- a/acados_solver_base/CMakeLists.txt +++ b/acados_solver_base/CMakeLists.txt @@ -57,14 +57,15 @@ if(BUILD_TESTING) set(ament_cmake_copyright_FOUND TRUE) set(ament_cmake_cpplint_FOUND TRUE) - set(C_CODE_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test/mock_acados_solver/generated_c_code) + set(MOCK_SOLVER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test/mock_acados_solver) file(GLOB_RECURSE AMENT_LINT_AUTO_FILE_EXCLUDE # Exclude auto generated c-code and CMakeLists - ${C_CODE_TEST_DIR}/** + ${MOCK_SOLVER_DIR}/** ) ament_lint_auto_find_test_dependencies() # Test solver interface + find_package(ament_cmake_gmock REQUIRED) ament_add_gmock( test_acados_solver_base test/mock_acados_solver/mock_acados_solver.cpp @@ -75,7 +76,7 @@ if(BUILD_TESTING) # Link generated C-code target_link_libraries(test_acados_solver_base ${PROJECT_NAME} - ${C_CODE_TEST_DIR}/libacados_ocp_solver_mock_acados_solver.so + ${MOCK_SOLVER_DIR}/generated_c_code/libacados_ocp_solver_mock_acados_solver.so ) endif() diff --git a/acados_solver_base/package.xml b/acados_solver_base/package.xml index 8afb4ac..3d53462 100644 --- a/acados_solver_base/package.xml +++ b/acados_solver_base/package.xml @@ -18,6 +18,7 @@ ament_lint_auto ament_lint_common + ament_cmake_gmock ament_cmake