parent
							
								
									86beb9a81a
								
							
						
					
					
						commit
						42d93e94df
					
				
				 847 changed files with 0 additions and 196915 deletions
			
			
		| @ -1,28 +0,0 @@ | ||||
| From a1b2938bcf0b2bbb9156ed9ee922bc5b5a38cea7 Mon Sep 17 00:00:00 2001
 | ||||
| From: heyyeh12 <heyyeh12@users.noreply.github.com>
 | ||||
| Date: Sat, 27 Apr 2019 09:08:48 -0400
 | ||||
| Subject: [PATCH] fixes issue #261 binding to temporary object
 | ||||
| 
 | ||||
| ---
 | ||||
|  acado/code_generation/export_function_declaration.cpp | 4 ++--
 | ||||
|  1 file changed, 2 insertions(+), 2 deletions(-)
 | ||||
| 
 | ||||
| diff --git a/acado/code_generation/export_function_declaration.cpp b/acado/code_generation/export_function_declaration.cpp
 | ||||
| index d6450b50..46a3269f 100644
 | ||||
| --- a/acado/code_generation/export_function_declaration.cpp
 | ||||
| +++ b/acado/code_generation/export_function_declaration.cpp
 | ||||
| @@ -36,12 +36,12 @@
 | ||||
|  
 | ||||
|  BEGIN_NAMESPACE_ACADO
 | ||||
|  
 | ||||
| -
 | ||||
| +const ExportFunction& _ff = ExportFunction();
 | ||||
|  //
 | ||||
|  // PUBLIC MEMBER FUNCTIONS:
 | ||||
|  //
 | ||||
|  
 | ||||
| -ExportFunctionDeclaration::ExportFunctionDeclaration( ) : ExportStatement( ), f( ExportFunction() )
 | ||||
| +ExportFunctionDeclaration::ExportFunctionDeclaration( ) : ExportStatement( ), f( _ff )
 | ||||
|  {}
 | ||||
|  
 | ||||
|  
 | ||||
| @ -1,29 +0,0 @@ | ||||
| #!/usr/bin/env sh | ||||
| set -e | ||||
| 
 | ||||
| rm -rf acado | ||||
| git clone https://github.com/acado/acado.git | ||||
| cd acado | ||||
| git reset --hard 5adb8cbcff5a5464706a48eaf073218ac87c9044 | ||||
| 
 | ||||
| # Clang 8 fixes | ||||
| git apply ../01.patch | ||||
| sed -i '100d' cmake/CompilerOptions.cmake | ||||
| sed -i '100d' cmake/CompilerOptions.cmake | ||||
| 
 | ||||
| mkdir build | ||||
| cd build | ||||
| cmake -DACADO_WITH_EXAMPLES=OFF -DACADO_BUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX="$HOME/openpilot/phonelibs/acado" .. | ||||
| make -j$(nproc) | ||||
| make install | ||||
| 
 | ||||
| cd .. | ||||
| cd .. | ||||
| 
 | ||||
| rm -r x86_64 | ||||
| mkdir x86_64 | ||||
| mv lib x86_64/lib | ||||
| cp acado/build/lib/* x86_64/lib/ | ||||
| 
 | ||||
| rm -rf acado | ||||
| rm -r share | ||||
| @ -1,33 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado_code_generation.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2009 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #include <acado/code_generation/code_generation.hpp> | ||||
| @ -1,62 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado_controller.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/user_interaction/user_interaction.hpp> | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| #include <acado/variables_grid/variables_grid.hpp> | ||||
| #include <acado/index_list/index_list.hpp> | ||||
| #include <acado/symbolic_expression/symbolic_expression.hpp> | ||||
| #include <acado/function/function.hpp> | ||||
| #include <acado/integrator/integrator.hpp> | ||||
| #include <acado/sparse_solver/sparse_solver.hpp> | ||||
| 
 | ||||
| #include <acado/dynamic_system/dynamic_system.hpp> | ||||
| #include <acado/dynamic_discretization/dynamic_discretization.hpp> | ||||
| #include <acado/dynamic_discretization/integration_algorithm.hpp> | ||||
| #include <acado/nlp_solver/nlp_solver.hpp> | ||||
| #include <acado/nlp_solver/scp_method.hpp> | ||||
| #include <acado/ocp/ocp.hpp> | ||||
| #include <acado/optimization_algorithm/optimization_algorithm.hpp> | ||||
| #include <acado/optimization_algorithm/parameter_estimation_algorithm.hpp> | ||||
| #include <acado/optimization_algorithm/multi_objective_algorithm.hpp> | ||||
| 
 | ||||
| #include <acado/curve/curve.hpp> | ||||
| #include <acado/controller/controller.hpp> | ||||
| #include <acado/estimator/estimator.hpp> | ||||
| #include <acado/control_law/control_law.hpp> | ||||
| #include <acado/control_law/pid_controller.hpp> | ||||
| #include <acado/control_law/dynamic_feedback_law.hpp> | ||||
| #include <acado/control_law/linear_state_feedback.hpp> | ||||
| #include <acado/control_law/feedforward_law.hpp> | ||||
| #include <acado/reference_trajectory/reference_trajectory.hpp> | ||||
| @ -1,33 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado_gnuplot.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #include <acado/bindings/acado_gnuplot/gnuplot_window.hpp> | ||||
| @ -1,44 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado_integrators.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 10.06.2009 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/clock/clock.hpp> | ||||
| #include <acado/curve/curve.hpp> | ||||
| #include <acado/user_interaction/user_interaction.hpp> | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| #include <acado/variables_grid/variables_grid.hpp> | ||||
| #include <acado/symbolic_expression/symbolic_expression.hpp> | ||||
| #include <acado/function/function.hpp> | ||||
| #include <acado/integrator/integrator.hpp> | ||||
| #include <acado/sparse_solver/sparse_solver.hpp> | ||||
| @ -1,47 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado_optimal_control.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 10.06.2009 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #include <acado_integrators.hpp> | ||||
| 
 | ||||
| #include <acado/dynamic_system/dynamic_system.hpp> | ||||
| #include <acado/dynamic_discretization/dynamic_discretization.hpp> | ||||
| #include <acado/dynamic_discretization/integration_algorithm.hpp> | ||||
| #include <acado/nlp_solver/nlp_solver.hpp> | ||||
| #include <acado/nlp_solver/scp_method.hpp> | ||||
| #include <acado/ocp/ocp.hpp> | ||||
| #include <acado/ocp/nlp.hpp> | ||||
| #include <acado/optimization_algorithm/optimization_algorithm.hpp> | ||||
| #include <acado/optimization_algorithm/real_time_algorithm.hpp> | ||||
| #include <acado/optimization_algorithm/parameter_estimation_algorithm.hpp> | ||||
| #include <acado/optimization_algorithm/multi_objective_algorithm.hpp> | ||||
| @ -1,51 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado_toolkit.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 10.06.2009 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #include <acado_optimal_control.hpp> | ||||
| 
 | ||||
| #include <acado/curve/curve.hpp> | ||||
| #include <acado/controller/controller.hpp> | ||||
| #include <acado/estimator/estimator.hpp> | ||||
| #include <acado/control_law/control_law.hpp> | ||||
| #include <acado/control_law/pid_controller.hpp> | ||||
| #include <acado/control_law/linear_state_feedback.hpp> | ||||
| #include <acado/control_law/feedforward_law.hpp> | ||||
| #include <acado/reference_trajectory/reference_trajectory.hpp> | ||||
| #include <acado/simulation_environment/simulation_environment.hpp> | ||||
| #include <acado/process/process.hpp> | ||||
| #include <acado/noise/noise.hpp> | ||||
| #include <acado/transfer_device/actuator.hpp> | ||||
| #include <acado/transfer_device/sensor.hpp> | ||||
| 
 | ||||
| #include <acado/code_generation/code_generation.hpp> | ||||
| @ -1,210 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file   external_packages/include/acado_csparse.hpp | ||||
|  *    \author Boris Houska, Hans Joachim Ferreau | ||||
|  *    \date   2009 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ACADO_CSPARSE_HPP | ||||
| #define ACADO_TOOLKIT_ACADO_CSPARSE_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/sparse_solver/sparse_solver.hpp> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // FORWARD DECLARATIONS:
 | ||||
| // ---------------------
 | ||||
|    struct cs_numeric ; | ||||
|    struct cs_symbolic; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief (not yet documented) | ||||
|  * | ||||
|  *	\ingroup ExternalFunctionality | ||||
|  * | ||||
|  *	The class ... | ||||
|  * | ||||
|  *  \author Boris Houska, Hans Joachim Ferreau | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| class ACADOcsparse : public SparseSolver{ | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
|         /** Default constructor. */ | ||||
|         ACADOcsparse( ); | ||||
| 
 | ||||
|         /** Copy constructor (deep copy). */ | ||||
|         ACADOcsparse( const ACADOcsparse &arg ); | ||||
| 
 | ||||
|         /** Destructor. */ | ||||
|         virtual ~ACADOcsparse( ); | ||||
| 
 | ||||
|         /** Clone operator (deep copy). */ | ||||
|         virtual ACADOcsparse* clone() const; | ||||
| 
 | ||||
| 
 | ||||
|         /** Defines the dimension n of  A \in R^{n \times n} \n
 | ||||
|          *                                                   \n | ||||
|          *  \return SUCCESSFUL_RETURN                        \n | ||||
|          */ | ||||
|         virtual returnValue setDimension( const int &n ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Defines the number of non-zero elements in the   \n
 | ||||
|          *  matrix  A                                        \n | ||||
|          *                                                   \n | ||||
|          *  \return SUCCESSFUL_RETURN                        \n | ||||
|          */ | ||||
|         virtual returnValue setNumberOfEntries( const int &nDense_ ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /** Sets an index list containing the positions of the \n
 | ||||
|          *  non-zero elements in the matrix  A. | ||||
|          */ | ||||
|         virtual returnValue setIndices( const int *rowIdx_, | ||||
|                                         const int *colIdx_  ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /** Sets the non-zero elements of the matrix A. The double* A  \n
 | ||||
|          *  is assumed to contain  nDense  entries corresponding to    \n | ||||
|          *  non-zero elements of A.                                    \n | ||||
|          */ | ||||
|         virtual returnValue setMatrix( double *A_ ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /**  Solves the system  A*x = b  for the specified data.       \n
 | ||||
|          *                                                             \n | ||||
|          *   \return SUCCESSFUL_RETURN                                 \n | ||||
|          *           RET_LINEAR_SYSTEM_NUMERICALLY_SINGULAR            \n | ||||
|          */ | ||||
|         virtual returnValue solve( double *b ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /**  Solves the system  A^T*x = b  for the specified data.     \n
 | ||||
|          *                                                             \n | ||||
|          *   \return SUCCESSFUL_RETURN                                 \n | ||||
|          *           RET_LINEAR_SYSTEM_NUMERICALLY_SINGULAR            \n | ||||
|          */ | ||||
|         virtual returnValue solveTranspose( double *b ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /**  Returns the solution of the equation  A*x = b  if solved. \n
 | ||||
|          *                                                             \n | ||||
|          *   \return SUCCESSFUL_RETURN                                 \n | ||||
|          */ | ||||
|         virtual returnValue getX( double *x_ ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /**  Sets the required tolerance (accuracy) for the solution of \n
 | ||||
|          *   the linear equation. For large tolerances an iterative     \n | ||||
|          *   algorithm might converge earlier.                          \n | ||||
|          *                                                              \n | ||||
|          *   Requires   || A*x - b || <= TOL                            \n | ||||
|          *                                                              \n | ||||
|          *   The norm || .  ||  is possibly scaled by a preconditioner. \n | ||||
|          *                                                              \n | ||||
|          *   \return SUCCESSFUL_RETURN                                  \n | ||||
|          */ | ||||
|         virtual returnValue setTolerance( double TOL_ ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Sets the print level.                                       \n
 | ||||
|          *                                                              \n | ||||
|          *  \return SUCCESSFUL_RETURN                                   \n | ||||
|          */ | ||||
|         virtual returnValue setPrintLevel( PrintLevel printLevel_ ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     // PROTECTED MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     // DATA MEMBERS:
 | ||||
|     //
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
|     // DIMENSIONS:
 | ||||
|     // --------------------
 | ||||
|     int                dim;          // dimension of the matrix A
 | ||||
|     int             nDense;          // number of non-zero entries in A
 | ||||
|     int   *index1, *index2;          // and the associated indices
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     // DATA:
 | ||||
|     // --------------------
 | ||||
|     double              *x;          // The result vector    x
 | ||||
| 
 | ||||
| 
 | ||||
|     // AUXILIARY VARIABLES:
 | ||||
|     // --------------------
 | ||||
|     cs_symbolic         *S;          // pointer to a struct, which contains symbolic information about the matrix
 | ||||
|     cs_numeric          *N;          // pointer to a struct, which contains numeric information about the matrix
 | ||||
| 
 | ||||
| 
 | ||||
|     double             TOL;          // The required tolerance. (default 10^(-10))
 | ||||
|     PrintLevel  printLevel;          // The PrintLevel.
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  *   end of file | ||||
|  */ | ||||
| 
 | ||||
| @ -1,226 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file external_packages/acado_gnuplot/gnuplot_window.hpp | ||||
|  *    \author Boris Houska, Hans Joachim Ferreau, Milan Vukov | ||||
|  *    \date   2009-2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ACADO_2_GNUPLOT_HPP | ||||
| #define ACADO_TOOLKIT_ACADO_2_GNUPLOT_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/user_interaction/plot_window.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Provides an interface to Gnuplot for plotting algorithmic outputs. | ||||
|  * | ||||
|  *	\ingroup ExternalFunctionality | ||||
|  * | ||||
|  *	The acado2gnuplot interface provides the functionality to easiliy | ||||
|  *	plot data which is available in the ACADO Toolkit format. The methods | ||||
|  *	that are implemented in this interface convert ACADO sturctures into | ||||
|  *	a format that can be read by the program Gnuplot. | ||||
|  * | ||||
|  *	\author Boris Houska, Hans Joachim Ferreau, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| class GnuplotWindow : public PlotWindow | ||||
| { | ||||
| 
 | ||||
|     // PUBLIC FUNCTIONS:
 | ||||
|     // -----------------
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
|         /** Default constructor. */ | ||||
|         GnuplotWindow( ); | ||||
| 
 | ||||
| 		/** Constructor which takes the plot frequency. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _frequency	Frequency determining at which time instants the window is to be plotted. | ||||
| 		 */ | ||||
| 		GnuplotWindow(	PlotFrequency _frequency | ||||
| 						); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
|         GnuplotWindow(	const GnuplotWindow& arg | ||||
| 						); | ||||
| 
 | ||||
|         /** Destructor. */ | ||||
|         virtual ~GnuplotWindow( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
|         GnuplotWindow& operator=(	const GnuplotWindow& arg | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Clone operator returning a base class pointer to a deep copy
 | ||||
| 		 *	of respective class instance. | ||||
| 		 * | ||||
| 		 *	\return Base class pointer to a deep copy of respective class instance | ||||
| 		 */ | ||||
| 		virtual PlotWindow* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
|         /** Initializes the Gnuplot-thread.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_PLOT_WINDOW_CAN_NOT_BE_OPEN | ||||
| 		 */ | ||||
|         virtual returnValue init( ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Actually sets-up and plots the data in a Gnuplot window.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _frequency	Frequency determining at which time instants the window is to be plotted. | ||||
|          * | ||||
|          *	\return SUCCESSFUL_RETURN, \n | ||||
|          *	        RET_PLOTTING_FAILED, \n | ||||
| 		 *	        RET_INVALID_ARGUMENTS, \n | ||||
| 		 *	        RET_PLOT_WINDOW_CAN_NOT_BE_OPEN | ||||
|          */ | ||||
| 		virtual returnValue replot(	PlotFrequency _frequency = PLOT_IN_ANY_CASE | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
|         /** Runs the Gnuplot window in waiting mode until a mouse event
 | ||||
|          *  occurs. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         returnValue waitForMouseEvents( ); | ||||
| 
 | ||||
|         /** Returns whether a mouse event has occured.
 | ||||
| 		 * | ||||
| 		 *	@param[out] mouseX	X coordinate of mouse click. | ||||
| 		 *	@param[out] mouseX	Y coordinate of mouse click. | ||||
|          * | ||||
|          *	\return BT_TRUE  iff mouse event occured, \n | ||||
|          *	        BT_FALSE otherwise | ||||
|          */ | ||||
|         BooleanType getMouseEvent(	double& mouseX, | ||||
| 									double& mouseY | ||||
| 									); | ||||
| 
 | ||||
|         /** Waits until a mouse event occurs.
 | ||||
| 		 * | ||||
| 		 *	@param[out] mouseX	X coordinate of mouse click. | ||||
| 		 *	@param[out] mouseX	Y coordinate of mouse click. | ||||
|          * | ||||
| 		 *	\return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_NOT_YET_IMPLEMENTED | ||||
|          */ | ||||
|         returnValue waitForMouseEvent(	double& mouseX, | ||||
| 										double& mouseY | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     // PROTECTED FUNCTIONS:
 | ||||
|     // --------------------
 | ||||
| 
 | ||||
|     protected: | ||||
|         /** Sets-up and plots the data in a Gnuplot window.
 | ||||
|          * | ||||
|          *	\return SUCCESSFUL_RETURN, \n | ||||
|          *	        RET_PLOTTING_FAILED, \n | ||||
| 		 *	        RET_INVALID_ARGUMENTS, \n | ||||
| 		 *	        RET_PLOT_WINDOW_CAN_NOT_BE_OPEN | ||||
|          */ | ||||
| 		returnValue sendDataToGnuplot( ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Generates string in Gnuplot syntax for plotting in given plot mode.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  plotMode		Plot mode whose string needs to be generated, see the PlotMode documentation for details. | ||||
| 		 *	@param[out] plotModeString	String in Gnuplot syntax for plotting in given plot mode. | ||||
|          * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
|          */ | ||||
| 		returnValue getPlotModeString(	PlotMode plotMode, | ||||
| 										std::string& plotModeString | ||||
| 										) const; | ||||
| 
 | ||||
|         /** Generates string in Gnuplot syntax for plotting in given plot style.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _type				Type of variable to be plotted. | ||||
| 		 *	@param[out] plotStyleString		String in Gnuplot syntax for plotting in given plot style. | ||||
|          * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
|          */ | ||||
| 		returnValue getPlotStyleString(	VariableType _type, | ||||
| 										std::string& plotStyleString | ||||
| 										) const; | ||||
| 
 | ||||
|         /** Generates string in Gnuplot syntax for plotting given data grid.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _dataGrid			Date grid to be plotted. | ||||
| 		 *	@param[out] _plotDataString		String in Gnuplot syntax for plotting given data grid. | ||||
|          * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
|          */ | ||||
| 		returnValue obtainPlotDataString(	VariablesGrid& _dataGrid, | ||||
| 											std::string& _plotDataString | ||||
| 											) const; | ||||
| 	
 | ||||
| 
 | ||||
| 
 | ||||
|     // PROTECTED DATA MEMBERS:
 | ||||
|     // -----------------------
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
|         FILE* gnuPipe;							/**< Pipe to Gnuplot. */ | ||||
| 
 | ||||
|         BooleanType mouseEvent;					/**< Flag indicating whether window should wait for mouse events. */ | ||||
| 
 | ||||
|         static int counter;						/**< Static counter for counting the number of GnuplotWindows. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ACADO_2_GNUPLOT_HPP
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| 
 | ||||
| @ -1,57 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  *    \file external_packages/acado_gnuplot/gnuplot_window.ipp | ||||
|  *    \author Boris Houska, Hans Joachim Ferreau | ||||
|  *    \date   2009 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| // PUBLIC MEMBER FUNCTIONS: | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| // PROTECTED MEMBER FUNCTIONS: | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,218 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file external_packages/include/acado_qpoases/qp_solver_qpoases.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 19.08.2008 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_QP_SOLVER_QPOASES_HPP | ||||
| #define ACADO_TOOLKIT_QP_SOLVER_QPOASES_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/conic_solver/dense_qp_solver.hpp> | ||||
| 
 | ||||
| namespace qpOASES | ||||
| { | ||||
| 	class SQProblem; | ||||
| } | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief (not yet documented) | ||||
|  * | ||||
|  *	\ingroup ExternalFunctionality | ||||
|  * | ||||
|  *  The class QPsolver_qpOASES interfaces the qpOASES software package | ||||
|  *  for solving convex quadratic programming (QP) problems. | ||||
|  * | ||||
|  *	 \author Boris Houska, Hans Joachim Ferreau | ||||
|  */ | ||||
| class QPsolver_qpOASES : public DenseQPsolver | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
|         /** Default constructor. */ | ||||
|         QPsolver_qpOASES( ); | ||||
| 		
 | ||||
|         QPsolver_qpOASES(	UserInteraction* _userInteraction | ||||
| 							); | ||||
| 
 | ||||
|         /** Copy constructor (deep copy). */ | ||||
|         QPsolver_qpOASES( const QPsolver_qpOASES& rhs ); | ||||
| 
 | ||||
|         /** Destructor. */ | ||||
|         virtual ~QPsolver_qpOASES( ); | ||||
| 
 | ||||
|         /** Assignment operator (deep copy). */ | ||||
|         QPsolver_qpOASES& operator=( const QPsolver_qpOASES& rhs ); | ||||
| 
 | ||||
| 
 | ||||
|         virtual DenseCPsolver* clone( ) const; | ||||
| 
 | ||||
|         virtual DenseQPsolver* cloneDenseQPsolver( ) const; | ||||
| 
 | ||||
| 
 | ||||
|         /** Solves the QP. */ | ||||
|         virtual returnValue solve( DenseCP *cp_  ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Solves QP using at most <maxIter> iterations.
 | ||||
| 		 * \return SUCCESSFUL_RETURN \n | ||||
| 		 *         RET_QP_SOLUTION_REACHED_LIMIT \n | ||||
| 		 *         RET_QP_SOLUTION_FAILED \n | ||||
| 		 *         RET_INITIALIZE_FIRST */ | ||||
|         virtual returnValue solve(	double* H,	/**< Hessian matrix of neighbouring QP to be solved. */ | ||||
| 									double* A,	/**< Constraint matrix of neighbouring QP to be solved. */ | ||||
| 									double* g,	/**< Gradient of neighbouring QP to be solved. */ | ||||
| 									double* lb,	/**< Lower bounds of neighbouring QP to be solved. */ | ||||
| 									double* ub,	/**< Upper bounds of neighbouring QP to be solved. */ | ||||
| 									double* lbA,	/**< Lower constraints' bounds of neighbouring QP to be solved. */ | ||||
| 									double* ubA,	/**< Upper constraints' bounds of neighbouring QP to be solved. */ | ||||
| 									uint maxIter		/**< Maximum number of iterations. */ | ||||
| 									); | ||||
| 
 | ||||
|         /** Solves QP using at most <maxIter> iterations. */ | ||||
|         virtual returnValue solve(  DMatrix *H,    /**< Hessian matrix of neighbouring QP to be solved. */ | ||||
|                                     DMatrix *A,    /**< Constraint matrix of neighbouring QP to be solved. */ | ||||
|                                     DVector *g,    /**< Gradient of neighbouring QP to be solved. */ | ||||
|                                     DVector *lb,   /**< Lower bounds of neighbouring QP to be solved. */ | ||||
|                                     DVector *ub,   /**< Upper bounds of neighbouring QP to be solved. */ | ||||
|                                     DVector *lbA,  /**< Lower constraints' bounds of neighbouring QP to be solved. */ | ||||
|                                     DVector *ubA,  /**< Upper constraints' bounds of neighbouring QP to be solved. */ | ||||
|                                     uint maxIter        /**< Maximum number of iterations. */  
 | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
|         /** Performs exactly one QP iteration.
 | ||||
| 		 * \return SUCCESSFUL_RETURN \n | ||||
| 		 *         RET_QP_SOLUTION_REACHED_LIMIT \n | ||||
| 		 *         RET_QP_SOLUTION_FAILED \n | ||||
| 		 *         RET_INITIALIZE_FIRST */ | ||||
|         virtual returnValue step(	double* H,		/**< Hessian matrix of neighbouring QP to be solved. */ | ||||
| 									double* A,		/**< Constraint matrix of neighbouring QP to be solved. */ | ||||
| 									double* g,		/**< Gradient of neighbouring QP to be solved. */ | ||||
| 									double* lb,		/**< Lower bounds of neighbouring QP to be solved. */ | ||||
| 									double* ub,		/**< Upper bounds of neighbouring QP to be solved. */ | ||||
| 									double* lbA,	/**< Lower constraints' bounds of neighbouring QP to be solved. */ | ||||
| 									double* ubA	/**< Upper constraints' bounds of neighbouring QP to be solved. */ | ||||
| 									); | ||||
| 
 | ||||
|         /** Performs exactly one QP iteration.
 | ||||
| 		 * \return SUCCESSFUL_RETURN \n | ||||
| 		 *         RET_QP_SOLUTION_REACHED_LIMIT \n | ||||
| 		 *         RET_QP_SOLUTION_FAILED \n | ||||
| 		 *         RET_INITIALIZE_FIRST */ | ||||
|         virtual returnValue step(	DMatrix *H,    /**< Hessian matrix of neighbouring QP to be solved. */ | ||||
|                                     DMatrix *A,    /**< Constraint matrix of neighbouring QP to be solved. */ | ||||
|                                     DVector *g,    /**< Gradient of neighbouring QP to be solved. */ | ||||
|                                     DVector *lb,   /**< Lower bounds of neighbouring QP to be solved. */ | ||||
|                                     DVector *ub,   /**< Upper bounds of neighbouring QP to be solved. */ | ||||
|                                     DVector *lbA,  /**< Lower constraints' bounds of neighbouring QP to be solved. */ | ||||
|                                     DVector *ubA   /**< Upper constraints' bounds of neighbouring QP to be solved. */ | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns primal solution vector if QP has been solved.
 | ||||
| 		 * \return SUCCESSFUL_RETURN \n | ||||
| 		 *         RET_QP_NOT_SOLVED */ | ||||
| 		virtual returnValue getPrimalSolution(	DVector& xOpt	/**< OUTPUT: primal solution vector. */ | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Returns dual solution vector if QP has been solved.
 | ||||
| 		 * \return SUCCESSFUL_RETURN \n | ||||
| 		 *         RET_QP_NOT_SOLVED */ | ||||
| 		virtual returnValue getDualSolution(	DVector& yOpt	/**< OUTPUT: dual solution vector. */ | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Returns optimal objective function value.
 | ||||
| 		 *	\return finite value: Optimal objective function value (QP has been solved) \n | ||||
| 		 			+INFTY:	      QP has not been solved or is infeasible \n | ||||
| 					-INFTY:	      QP is unbounded */ | ||||
| 		virtual double getObjVal( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		virtual uint getNumberOfVariables( ) const; | ||||
| 		virtual uint getNumberOfConstraints( ) const; | ||||
| 
 | ||||
| 
 | ||||
|         /** Returns a variance-covariance estimate if possible or an error message otherwise.
 | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          *          RET_MEMBER_NOT_INITIALISED | ||||
|          */ | ||||
|         virtual returnValue getVarianceCovariance( DMatrix &var ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Returns a variance-covariance estimate if possible or an error message otherwise.
 | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          *          RET_MEMBER_NOT_INITIALISED | ||||
|          */ | ||||
|         virtual returnValue getVarianceCovariance( DMatrix &H, DMatrix &var ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     // PROTECTED MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     protected: | ||||
|         /** Setups QP object.
 | ||||
| 		 *  \return SUCCESSFUL_RETURN \n | ||||
| 		 *          RET_QP_INIT_FAILED */ | ||||
|         virtual returnValue setupQPobject(	uint nV,	/**< Number of QP variables. */ | ||||
| 											uint nC		/**< Number of QP constraints (without bounds). */ | ||||
| 											); | ||||
| 
 | ||||
| 		returnValue updateQPstatus(	int ret | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     // DATA MEMBERS:
 | ||||
|     //
 | ||||
|     protected: | ||||
| 		qpOASES::SQProblem* qp; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/bindings/acado_qpoases/qp_solver_qpoases.ipp> | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_QP_SOLVER_QPOASES_HPP
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,48 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /** | ||||
|  *    \file external_packages/include/acado_qpoases/qp_solver_qpoases.ipp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 19.08.2008 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| // PUBLIC MEMBER FUNCTIONS: | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,184 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
| *    \file include/acado/clock/clock.hpp | ||||
| *    \author Hans Joachim Ferreau, Boris Houska | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_CLOCK_HPP | ||||
| #define ACADO_TOOLKIT_CLOCK_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Base class for all kind of time measurements. | ||||
|  * | ||||
|  *	\ingroup BasicDataStructures | ||||
|  * | ||||
|  *	The class Clock serves as base class for all kind of time measurements, 
 | ||||
|  *	both real and simulated ones. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class Clock | ||||
| { | ||||
| 	//
 | ||||
| 	//  PUBLIC MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 */ | ||||
| 		Clock( ); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs	Right-hand side object. | ||||
| 		 */ | ||||
| 		Clock(	const Clock &rhs | ||||
| 				); | ||||
| 
 | ||||
| 		/** Destructor. 
 | ||||
| 		 */ | ||||
| 		virtual ~Clock(); | ||||
| 
 | ||||
| 		/** Assignment Operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs	Right-hand side object. | ||||
| 		 */ | ||||
| 		Clock& operator=(	const Clock &rhs | ||||
| 							); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to deep copy of base class type | ||||
| 		 */ | ||||
| 		virtual Clock* clone( ) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes the clock with given initial time.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _initialTime	Initial time. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue init(	double _initialTime | ||||
| 									); | ||||
| 
 | ||||
| 		/** Initializes the clock with initial time zero.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue reset( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Starts time measurement.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY, \n | ||||
| 		 *	        RET_NO_SYSTEM_TIME | ||||
| 		 */ | ||||
| 		virtual returnValue start( ) = 0; | ||||
| 	
 | ||||
| 		/** Shifts measured time by a given offset.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _timeShift		Time offset. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY, \n | ||||
| 		 *	        RET_NO_SYSTEM_TIME | ||||
| 		 */ | ||||
| 		virtual returnValue step(	double _timeShift | ||||
| 									) = 0; | ||||
| 	
 | ||||
| 		/** Stops time measurement.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY, \n | ||||
| 		 *	        RET_NO_SYSTEM_TIME | ||||
| 		 */ | ||||
| 		virtual returnValue stop ( ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns elapsed time.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _elapsedTime		Elapsed time. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_BLOCK_NOT_READY | ||||
| 		 */ | ||||
| 		virtual returnValue getTime(	double& _elapsedTime | ||||
| 										); | ||||
| 
 | ||||
| 		/** Returns elapsed time.
 | ||||
| 		 * | ||||
| 		 *  \return   >= 0: elapsed time, \n | ||||
| 		 *	        -INFTY: internal error | ||||
| 		 */ | ||||
| 		virtual double getTime( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns current status of clock, see documentation of ClockStatus for details.
 | ||||
| 		 * | ||||
| 		 *  \return Current status of clock | ||||
| 		 */ | ||||
| 		inline ClockStatus getStatus( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	//  PROTECTED MEMBERS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 		double elapsedTime;				/**< Elapsed time since last reset. */ | ||||
| 		ClockStatus status;				/**< Status of clock. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/clock/clock.ipp> | ||||
| 
 | ||||
| 
 | ||||
| // collect all remaining headers of clock directory
 | ||||
| #include <acado/clock/real_clock.hpp> | ||||
| #include <acado/clock/simulation_clock.hpp> | ||||
| 
 | ||||
| 
 | ||||
| #endif	// ACADO_TOOLKIT_CLOCK_HPP
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,54 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
| *    \file include/acado/clock/clock.ipp | ||||
| *    \author Boris Houska, Hans Joachim Ferreau | ||||
| *    \date 13.06.2008 | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| //  PUBLIC MEMBER FUNCTIONS: | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| inline ClockStatus Clock::getStatus( ) const | ||||
| { | ||||
| 	return status; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,138 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
| *    \file include/acado/clock/real_clock.hpp | ||||
| *    \author Boris Houska, Hans Joachim Ferreau | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_REAL_CLOCK_HPP | ||||
| #define ACADO_TOOLKIT_REAL_CLOCK_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/clock/clock.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows real time measurements based on the system's clock. | ||||
|  * | ||||
|  *	\ingroup BasicDataStructures | ||||
|  * | ||||
|  *	The class RealClock allows real time measurements based on the | ||||
|  *	system's clock. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class RealClock : public Clock | ||||
| { | ||||
| 	//
 | ||||
| 	//  PUBLIC MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	public: | ||||
| 
 | ||||
| 		/** Default constructor.
 | ||||
| 		 */ | ||||
| 		RealClock(); | ||||
| 	
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs	Right-hand side object. | ||||
| 		 */ | ||||
| 		RealClock(	const RealClock &rhs | ||||
| 					); | ||||
| 	
 | ||||
| 		/** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~RealClock( ); | ||||
| 	
 | ||||
| 		/** Assignment Operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs	Right-hand side object. | ||||
| 		 */ | ||||
| 		RealClock& operator=(	const RealClock &rhs | ||||
| 								); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to deep copy of base class type | ||||
| 		 */ | ||||
| 		virtual Clock* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Starts time measurement.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY, \n | ||||
| 		 *	        RET_NO_SYSTEM_TIME | ||||
| 		 */ | ||||
| 		virtual returnValue start( ); | ||||
| 	
 | ||||
| 		/** Shifts measured time by a given offset.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _timeShift		Time offset. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY, \n | ||||
| 		 *	        RET_NO_SYSTEM_TIME | ||||
| 		 */ | ||||
| 		virtual returnValue step(	double _timeShift | ||||
| 									); | ||||
| 	
 | ||||
| 		/** Stops time measurement.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY, \n | ||||
| 		 *	        RET_NO_SYSTEM_TIME | ||||
| 		 */ | ||||
| 		virtual returnValue stop( ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	//  PROTECTED MEMBERS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		double lastTimeInstant;			/**< Last time instant at which start() has been called. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| //#include <acado/clock/real_clock.ipp>
 | ||||
| 
 | ||||
| 
 | ||||
| #endif	// ACADO_TOOLKIT_REAL_CLOCK_HPP
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,49 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
| *    \file include/acado/clock/real_clock.ipp | ||||
| *    \author Boris Houska, Hans Joachim Ferreau | ||||
| *    \date 13.06.2008 | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| //  PUBLIC MEMBER FUNCTIONS: | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,132 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
| *    \file include/acado/clock/simulation_clock.hpp | ||||
| *    \author Boris Houska, Hans Joachim Ferreau | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_SIMULATION_CLOCK_HPP | ||||
| #define ACADO_TOOLKIT_SIMULATION_CLOCK_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/clock/clock.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Simulates real time measurements for simulations. | ||||
|  * | ||||
|  *	\ingroup BasicDataStructures | ||||
|  * | ||||
|  *	The class SimulationClock simulates real time measurements for 
 | ||||
|  *	simulations within the SimulationEnvironment. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class SimulationClock : public Clock | ||||
| { | ||||
| 	//
 | ||||
| 	//  PUBLIC MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	public: | ||||
| 
 | ||||
| 		/** Default constructor.
 | ||||
| 		 */ | ||||
| 		SimulationClock(); | ||||
| 	
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs	Right-hand side object. | ||||
| 		 */ | ||||
| 		SimulationClock(	const SimulationClock& rhs | ||||
| 							); | ||||
| 	
 | ||||
| 		/** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~SimulationClock( ); | ||||
| 	
 | ||||
| 		/** Assignment Operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs	Right-hand side object. | ||||
| 		 */ | ||||
| 		SimulationClock& operator=(	const SimulationClock& rhs | ||||
| 									); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to deep copy of base class type | ||||
| 		 */ | ||||
| 		virtual Clock* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Starts time measurement.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY | ||||
| 		 */ | ||||
| 		virtual returnValue start( ); | ||||
| 	
 | ||||
| 		/** Shifts measured time by a given offset.
 | ||||
| 		 * | ||||
| 		 *	@param[in]  _timeShift		Time offset. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY | ||||
| 		 */ | ||||
| 		virtual returnValue step(	double _timeShift | ||||
| 									); | ||||
| 	
 | ||||
| 		/** Stops time measurement.
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_CLOCK_NOT_READY | ||||
| 		 */ | ||||
| 		virtual returnValue stop( ); | ||||
| 	
 | ||||
| 	
 | ||||
| 	//
 | ||||
| 	//  PROTECTED MEMBERS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| //#include <acado/clock/simulation_clock.ipp>
 | ||||
| 
 | ||||
| 
 | ||||
| #endif	// ACADO_TOOLKIT_SIMULATION_CLOCK_HPP
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,48 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
| *    \file include/acado/clock/simulation_clock.ipp | ||||
| *    \author Boris Houska, Hans Joachim Ferreau | ||||
| *    \date 13.06.2008 | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| //  PUBLIC MEMBER FUNCTIONS: | ||||
| // | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,42 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/code_generation/code_generation.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov, Rien Quirynen | ||||
|  *    \date 2010 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_CODE_GENERATION_HPP | ||||
| #define ACADO_TOOLKIT_CODE_GENERATION_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/integrator_export_types.hpp> | ||||
| #include <acado/code_generation/sim_export.hpp> | ||||
| #include <acado/code_generation/ocp_export.hpp> | ||||
| #include <acado/code_generation/integrators/register_exported_integrators.hpp> | ||||
| #include <acado/code_generation/register_nlp_solvers.hpp> | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_CODE_GENERATION_HPP
 | ||||
| @ -1,205 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_ode_function.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2010 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ODE_FUNCTION_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ODE_FUNCTION_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_function.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class Function; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code of an ACADO function. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportAcadoFunction allows to export code of an ACADO function. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportAcadoFunction : public ExportFunction | ||||
| { | ||||
| public: | ||||
| 	/** Default constructor. */ | ||||
| 	ExportAcadoFunction( ); | ||||
| 
 | ||||
| 	/** Constructor which takes the differential equation to be exported
 | ||||
| 	 *	as well as the name of the exported ODE. | ||||
| 	 * | ||||
| 	 *	@param[in] _f			Differential equation to be exported. | ||||
| 	 *	@param[in] _name		Name of exported ODE function. | ||||
| 	 */ | ||||
| 	ExportAcadoFunction(	const Function& _f, | ||||
| 							const std::string& _name = "acadoFcn" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Constructor which takes name of a function only.
 | ||||
| 	 * | ||||
| 	 *  This way, we can define an "external symbolic function" with the | ||||
| 	 *  following prototype: | ||||
| 	 *  \verbatim | ||||
| 	 *  void (const real_t* in, real_t* out); | ||||
| 	 *  \endverbatim | ||||
| 	 * | ||||
| 	 *  @param[in] _name		Name of exported ODE function. | ||||
| 	 */ | ||||
| 	ExportAcadoFunction(	const std::string& _name | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportAcadoFunction( ); | ||||
| 
 | ||||
| 	/** Clone constructor (deep copy).
 | ||||
| 	 * | ||||
| 	 *	\return Pointer to cloned object. | ||||
| 	 */ | ||||
| 	virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 	/** Initializes ODE function export by taking the differential equation
 | ||||
| 	 *	to be exported as well as the name of the exported ODE. | ||||
| 	 * | ||||
| 	 *	@param[in] _f			Differential equation to be exported. | ||||
| 	 *	@param[in] _name		Name of exported ODE function. | ||||
| 	 * 	@param[in] _numX		The number of states that are needed to evaluate the system of differential equations | ||||
| 	 * 							(needed when the number of equations is not equal to the number of given states). | ||||
| 	 * 	@param[in] _numXA		The number of algebraic states in the input for the evaluation of the system of equations. | ||||
| 	 * 	@param[in] _numU		The number of control inputs given for the evaluation of the system of equations. | ||||
| 	 * 	@param[in] _numP		The number of parameters given for the evaluation of the system of equations. | ||||
| 	 * 	@param[in] _numDX		The number of differential state derivatives given for the evaluation of the system of equations. | ||||
| 	 */ | ||||
| 	returnValue init(	const Function& _f, | ||||
| 						const std::string& _name = "acadoFcn", | ||||
| 						const uint _numX = 0, | ||||
| 						const uint _numXA = 0, | ||||
| 						const uint _numU = 0, | ||||
| 						const uint _numP = 0, | ||||
| 						const uint _numDX = 0, | ||||
| 						const uint _numOD = 0 | ||||
| 						); | ||||
| 
 | ||||
| 	/** Exports data declaration of the ODE function into given file. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] stream			Name of file to be used to export function. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 												const std::string& _realString = "real_t", | ||||
| 												const std::string& _intString = "int", | ||||
| 												int _precision = 16 | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Exports forward declaration of the ODE function into given file. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] file				Name of file to be used to export statement. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportForwardDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 	/** Exports source code of the ODE function into given file. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] string			Name of file to be used to export function. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportCode(	std::ostream& stream, | ||||
| 									const std::string& _realString = "real_t", | ||||
| 									const std::string& _intString = "int", | ||||
| 									int _precision = 16 | ||||
| 									) const; | ||||
| 
 | ||||
| 	/** Returns whether function has been defined.
 | ||||
| 	 * | ||||
| 	 *	\return true  iff function has been defined, \n | ||||
| 	 *	        false otherwise | ||||
| 	 */ | ||||
| 	virtual bool isDefined( ) const; | ||||
| 
 | ||||
| 	/** Get output dimension of the ACADO function. */ | ||||
| 	unsigned getFunctionDim( void ); | ||||
| 
 | ||||
| 	/** Get global export variable - a variable that holds intermediate values. */ | ||||
| 	returnValue setGlobalExportVariable(const ExportVariable& var); | ||||
| 
 | ||||
| 	/** Set global export variable - a variable that holds intermediate values. */ | ||||
| 	ExportVariable getGlobalExportVariable( ) const; | ||||
| 
 | ||||
| 	/** A helper function to check whether a function is external. */ | ||||
| 	bool isExternal() const; | ||||
| 
 | ||||
| protected: | ||||
| 	/** The number of states that are needed to evaluate the system of differential equations.
 | ||||
| 	 *  If this number isn't specified, then it will be set to the number of equations (minus | ||||
| 	 *  the number of algebraic states).  */ | ||||
| 	unsigned numX; | ||||
| 	/** The number of algebraic states in the input for the evaluation of the system of
 | ||||
| 	 *  equations (similar to numX). */ | ||||
| 	unsigned numXA; | ||||
| 	/** The number of control inputs given for the evaluation of the system of equations
 | ||||
| 	 *  (similar to numX). */ | ||||
| 	unsigned numU; | ||||
| 	/** The number of parameters given for the evaluation of the system of equations. */ | ||||
| 	unsigned numP; | ||||
| 	/** The number of differential state derivatives given for the evaluation of the
 | ||||
| 	 *  system of equations. */ | ||||
| 	unsigned numDX; | ||||
| 	/** The number of "online data" objects. */ | ||||
| 	unsigned numOD; | ||||
| 	/** ACADO function to be exported. */ | ||||
| 	std::shared_ptr< Function > f; | ||||
| 	/** A variable that holds intermediate values. */ | ||||
| 	ExportVariable globalVar; | ||||
| 	/** Flag indicating whether the symbolic function is external or not. */ | ||||
| 	bool external; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_FUNCTION_HPP
 | ||||
| @ -1,226 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/export_algorithm.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 2010-2011 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ALGORITHM_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ALGORITHM_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/user_interaction/algorithmic_base.hpp> | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| 
 | ||||
| #include <acado/code_generation/export_variable.hpp> | ||||
| #include <acado/code_generation/export_function.hpp> | ||||
| #include <acado/code_generation/export_acado_function.hpp> | ||||
| #include <acado/code_generation/export_arithmetic_statement.hpp> | ||||
| #include <acado/code_generation/export_function_call.hpp> | ||||
| #include <acado/code_generation/export_for_loop.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export automatically generated algorithms for fast model predictive control | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExportAlgorithm allows to export automatically generated 
 | ||||
|  *	algorithms for fast model predictive control. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Milan Vukov, Boris Houska | ||||
|  */ | ||||
| class ExportAlgorithm : public AlgorithmicBase | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ExportAlgorithm(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = std::string() | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. */ | ||||
|         virtual ~ExportAlgorithm( ); | ||||
| 
 | ||||
| 		/** Initializes code export into given file.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated algorithm to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const = 0; | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated algorithm to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated algorithm into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated algorithm. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets the variables dimensions (ODE).
 | ||||
| 		 * | ||||
| 		 *	@param[in] _NX		New number of differential states. | ||||
| 		 *	@param[in] _NU		New number of control inputs. | ||||
| 		 *	@param[in] _NP		New number of parameters. | ||||
| 		 *	@param[in] _NI		New number of control intervals. (using _N resulted in a strange error when compiling with cygwin!) | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue setDimensions(	uint _NX = 0, | ||||
| 									uint _NU = 0, | ||||
| 									uint _NP = 0, | ||||
| 									uint _NI = 0, | ||||
| 									uint _NOD = 0 | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets the variables dimensions (DAE).
 | ||||
| 		 * | ||||
| 		 *	@param[in] _NX		New number of differential states. | ||||
| 		 *	@param[in] _NDX		New number of differential states derivatives. | ||||
| 		 *	@param[in] _NXA		New number of algebraic states. | ||||
| 		 *	@param[in] _NU		New number of control inputs. | ||||
| 		 *	@param[in] _NP		New number of parameters. | ||||
| 		 *	@param[in] _NI		New number of control intervals. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue setDimensions(	uint _NX, | ||||
| 									uint _NDX, | ||||
| 									uint _NXA, | ||||
| 									uint _NU, | ||||
| 									uint _NP, | ||||
| 									uint _NI, | ||||
| 									uint _NOD | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns number of differential states.
 | ||||
| 		 * | ||||
| 		 *  \return Number of differential states | ||||
| 		 */ | ||||
| 		uint getNX( ) const; | ||||
| 		
 | ||||
| 		/** Returns number of algebraic states.
 | ||||
| 		 * | ||||
| 		 *  \return Number of algebraic states | ||||
| 		 */ | ||||
| 		uint getNXA( ) const; | ||||
| 
 | ||||
| 		/** Returns the number of differential states derivatives.
 | ||||
| 		 * 
 | ||||
| 		 *  \return The requested number of differential state derivatives | ||||
| 		 */ | ||||
| 		uint getNDX( ) const; | ||||
| 
 | ||||
| 		/** Returns number of control inputs.
 | ||||
| 		 * | ||||
| 		 *  \return Number of control inputs | ||||
| 		 */ | ||||
| 		uint getNU( ) const; | ||||
| 
 | ||||
| 		/** Returns number of parameters.
 | ||||
| 		 * | ||||
| 		 *  \return Number of parameters | ||||
| 		 */ | ||||
| 		uint getNP( ) const; | ||||
| 
 | ||||
| 		/** Returns number of parameters.
 | ||||
| 		 * | ||||
| 		 *  \return Number of parameters | ||||
| 		 */ | ||||
| 		uint getNOD( ) const; | ||||
| 
 | ||||
| 		/** Returns number of control intervals.
 | ||||
| 		 * | ||||
| 		 *  \return Number of control intervals | ||||
| 		 */ | ||||
| 		uint getN( ) const; | ||||
| 		
 | ||||
| 		void setNY( uint NY_ ); | ||||
| 		uint getNY( ) const; | ||||
| 
 | ||||
| 		void setNYN( uint NYN_ ); | ||||
| 		uint getNYN( ) const; | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		uint NX;							/**< Number of differential states. */ | ||||
| 		uint NDX;							/**< Number of differential states derivatives. */ | ||||
| 		uint NXA;							/**< Number of algebraic states. */ | ||||
| 		uint NU;							/**< Number of control inputs. */ | ||||
| 		uint NP;							/**< Number of parameters. */ | ||||
| 		uint NOD;							/**< Number of "online data" values. */ | ||||
| 		uint N;								/**< Number of control intervals. */ | ||||
| 
 | ||||
| 		uint NY;							/**< Number of references/measurements, nodes 0,..., N - 1. */ | ||||
| 		uint NYN;							/**< Number of references/measurements, node N. */ | ||||
| 
 | ||||
| 		std::string commonHeaderName;		/**< Name of common header file. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_ALGORITHM_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,127 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**	\file include/code_generation/export_algorithm_factory.hpp
 | ||||
|  * 	\author Milan Vukov | ||||
|  * 	\date 2012 | ||||
|  * */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ALGORITHM_FACTORY_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ALGORITHM_FACTORY_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_algorithm.hpp> | ||||
| #include <acado/utils/acado_types.hpp> | ||||
| #include <acado/utils/acado_message_handling.hpp> | ||||
| 
 | ||||
| #include <map> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**	\brief  Factory for creation of exported algorithms.
 | ||||
|  * | ||||
|  * 	Note that the class is implemented as a singleton | ||||
|  * | ||||
|  * 	\author Milan Vukov | ||||
|  * 	\date   2012 - 2013 | ||||
|  * */ | ||||
| template | ||||
| < | ||||
| 	/** Base class, derived from ExportAlgorithm class. */ | ||||
| 	class	 AlgorithmBase, | ||||
| 	/** Type identifier. */ | ||||
| 	typename AlgorithmType | ||||
| > | ||||
| class ExportAlgorithmFactory | ||||
| { | ||||
| public: | ||||
| 	/** Helper type. */ | ||||
| 	typedef AlgorithmBase* (*exportAlgorithmCreator)(UserInteraction* _userInteraction, const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 	/** Static creator function. */ | ||||
| 	static ExportAlgorithmFactory& instance() | ||||
| 	{ | ||||
| 		static ExportAlgorithmFactory instance; | ||||
| 		return instance; | ||||
| 	} | ||||
| 
 | ||||
| 	/** Function for algorithm registration. */ | ||||
| 	bool registerAlgorithm(	const AlgorithmType& id, | ||||
| 									exportAlgorithmCreator creator) | ||||
| 	{ | ||||
| 		bool status = associations_.insert( | ||||
| 				typename idToProductMap::value_type(id, creator)).second; | ||||
| 
 | ||||
| 		if ( status == true ) | ||||
| 			return true; | ||||
| 
 | ||||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	/** Function to unregister an algorithm. */ | ||||
| 	bool unregisterAlgorithm(	const AlgorithmType& id) | ||||
| 	{ | ||||
| 		bool status = associations_.erase( id ) == 1; | ||||
| 
 | ||||
| 		if ( status == true ) | ||||
| 			return true; | ||||
| 
 | ||||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	/** Function to create an instance of an algorithm. */ | ||||
| 	AlgorithmBase* createAlgorithm(	UserInteraction* _userInteraction, | ||||
| 									const std::string& _commonHeaderName, | ||||
| 									const AlgorithmType& id) | ||||
| 	{ | ||||
| 		typename idToProductMap::const_iterator it = associations_.find( id ); | ||||
| 		if (it != associations_.end()) | ||||
| 		{ | ||||
| 			return (it->second)(_userInteraction, _commonHeaderName); | ||||
| 		} | ||||
| 
 | ||||
| 		LOG( LVL_DEBUG ) << "Algorithm is not registered!" << std::endl; | ||||
| 
 | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| private: | ||||
| 	typedef std::map<AlgorithmType, exportAlgorithmCreator> idToProductMap; | ||||
| 
 | ||||
| 	idToProductMap associations_; | ||||
| 
 | ||||
| 	ExportAlgorithmFactory() | ||||
| 	{} | ||||
| 
 | ||||
| 	ExportAlgorithmFactory(const ExportAlgorithmFactory&); | ||||
| 
 | ||||
| 	ExportAlgorithmFactory& operator=(const ExportAlgorithmFactory&); | ||||
| 
 | ||||
| 	~ExportAlgorithmFactory() | ||||
| 	{} | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_ALGORITHM_FACTORY_HPP
 | ||||
| @ -1,211 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_argument.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ARGUMENT_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ARGUMENT_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| #include <acado/code_generation/export_data.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| class ExportArgumentInternal; | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Defines a matrix-valued variable that can be passed as argument to exported functions. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportArgument defines a matrix-valued variable that 
 | ||||
|  *	can be passed as argument to exported functions. By default, all entries | ||||
|  *	of an arguments are undefined, but each of its component can be set to 
 | ||||
|  *	a fixed value if known beforehand. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| class ExportArgument : public ExportData | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 */ | ||||
|         ExportArgument( ); | ||||
| 
 | ||||
| 		/** Constructor which takes the name, type
 | ||||
| 		 *	and dimensions of the argument. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _nRows			Number of rows of the argument. | ||||
| 		 *	@param[in] _nCols			Number of columns of the argument. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 *	@param[in] _addressIdx		If an address index is specified, not the argument itself but 
 | ||||
| 		 *								a pointer to this address within the memory of the argument is passed. | ||||
| 		 */ | ||||
| 		ExportArgument(	const std::string& _name, | ||||
| 						uint _nRows = 1, | ||||
| 						uint _nCols = 1, | ||||
| 						ExportType _type = REAL, | ||||
| 						ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 						bool _callByValue = false, | ||||
| 						const ExportIndex& _addressIdx = emptyConstExportIndex, | ||||
| 						const std::string& _prefix = std::string() | ||||
| 						); | ||||
| 
 | ||||
| 		/** Constructor which takes the name and type of the argument.
 | ||||
| 		 *	Moreover, it initializes the argument with the dimensions and the 
 | ||||
| 		 *	values of the given matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _data			DMatrix used for initialization. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 *	@param[in] _addressIdx		If an address index is specified, not the argument itself but 
 | ||||
| 		 *								a pointer to this address within the memory of the argument is passed. | ||||
| 		 */ | ||||
| 		ExportArgument(	const std::string& _name, | ||||
| 						const DMatrixPtr& _data, | ||||
| 						ExportType _type = REAL, | ||||
| 						ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 						bool _callByValue = false, | ||||
| 						const ExportIndex& _addressIdx = emptyConstExportIndex, | ||||
| 						const std::string& _prefix = std::string() | ||||
| 						); | ||||
| 
 | ||||
| 		ExportArgument(	const DMatrix& _data | ||||
| 						); | ||||
| 
 | ||||
| 		ExportArgumentInternal* operator->(); | ||||
| 
 | ||||
| 		const ExportArgumentInternal* operator->() const; | ||||
| 
 | ||||
| 		/** Returns a copy of the argument with address index set to given location.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Row index of the adress. | ||||
| 		 *	@param[in] colIdx		Column index of the adress. | ||||
| 		 * | ||||
| 		 *	\return Copy of the argument with address index set to given location | ||||
| 		 */ | ||||
| 		ExportArgument getAddress(	const ExportIndex& _rowIdx, | ||||
| 									const ExportIndex& _colIdx = emptyConstExportIndex | ||||
| 									) const; | ||||
| 
 | ||||
| 		/** Returns a string containing the address of the argument to be called. 
 | ||||
| 		 *	If an address index has been set, the string contains a pointer to the 
 | ||||
| 		 *	desired location. The string also depends on whether the argument is 
 | ||||
| 		 *	to be called by value or not. | ||||
| 		 * | ||||
| 		 *	\return String containing the address of the argument | ||||
| 		 */ | ||||
| 		const std::string getAddressString(	bool withDataStruct = true | ||||
| 											) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns number of rows of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Number of rows of the argument | ||||
| 		 */ | ||||
| 		virtual uint getNumRows( ) const; | ||||
| 
 | ||||
| 		/** Returns number of columns of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Number of columns of the argument | ||||
| 		 */ | ||||
| 		virtual uint getNumCols( ) const; | ||||
| 
 | ||||
| 		/** Returns total dimension of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Total dimension of the argument | ||||
| 		 */ | ||||
| 		virtual uint getDim( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether all components of the argument are given.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff all components of the argument have given values, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		virtual bool isGiven( ) const; | ||||
| 
 | ||||
| 		/** Returns whether argument is to be called by value.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff argument is to be called by value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isCalledByValue( ) const; | ||||
| 
 | ||||
| 		/** Specifies to call argument by value.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue callByValue( ); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports declaration of the argument into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] file				Name of file to be used to export declaration. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| static const ExportArgument emptyConstExportArgument; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_ARGUMENT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,220 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_argument.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ARGUMENT_INTERNAL_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ARGUMENT_INTERNAL_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| #include <acado/code_generation/export_data_internal.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| class ExportArithmeticStatement; | ||||
| class ExportIndex; | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Defines a matrix-valued variable that can be passed as argument to exported functions. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportArgumentInternal defines a matrix-valued variable that | ||||
|  *	can be passed as argument to exported functions. By default, all entries | ||||
|  *	of an arguments are undefined, but each of its component can be set to | ||||
|  *	a fixed value if known beforehand. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| class ExportArgumentInternal : public ExportDataInternal | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor.
 | ||||
| 		 */ | ||||
|         ExportArgumentInternal( ); | ||||
| 
 | ||||
| 		/** Constructor which takes the name and type of the argument.
 | ||||
| 		 *	Moreover, it initializes the argument with the dimensions and the | ||||
| 		 *	values of the given matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _data			DMatrix used for initialization. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 *	@param[in] _addressIdx		If an address index is specified, not the argument itself but | ||||
| 		 *								a pointer to this address within the memory of the argument is passed. | ||||
| 		 */ | ||||
| 		ExportArgumentInternal(	const std::string& _name, | ||||
| 								const DMatrixPtr& _data, | ||||
| 								ExportType _type, | ||||
| 								ExportStruct _dataStruct, | ||||
| 								bool _callByValue, | ||||
| 								const ExportIndex& _addressIdx, | ||||
| 								const std::string& _prefix | ||||
| 								); | ||||
| 
 | ||||
| 		/** Destructor. */ | ||||
| 		virtual ~ExportArgumentInternal( ); | ||||
| 
 | ||||
| 		virtual ExportArgumentInternal* clone() const; | ||||
| 
 | ||||
| 		/** Deep copy data members. */ | ||||
| 		virtual void deepCopyMembers(	std::map<CasADi::SharedObjectNode*, CasADi::SharedObject>& already_copied | ||||
| 										); | ||||
| 
 | ||||
| 		/** Returns a copy of the argument with address index set to given location.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Row index of the adress. | ||||
| 		 *	@param[in] colIdx		Column index of the adress. | ||||
| 		 * | ||||
| 		 *	\return Copy of the argument with address index set to given location | ||||
| 		 */ | ||||
| 		ExportArgument getAddress(	const ExportIndex& rowIdx, | ||||
| 									const ExportIndex& colIdx = emptyConstExportIndex | ||||
| 									) const; | ||||
| 
 | ||||
| 		/** Returns a string containing the address of the argument to be called.
 | ||||
| 		 *	If an address index has been set, the string contains a pointer to the | ||||
| 		 *	desired location. The string also depends on whether the argument is | ||||
| 		 *	to be called by value or not. | ||||
| 		 * | ||||
| 		 *	\return std::string containing the address of the argument | ||||
| 		 */ | ||||
| 		const std::string getAddressString(	bool withDataStruct = true | ||||
| 											) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns number of rows of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Number of rows of the argument | ||||
| 		 */ | ||||
| 		virtual uint getNumRows( ) const; | ||||
| 
 | ||||
| 		/** Returns number of columns of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Number of columns of the argument | ||||
| 		 */ | ||||
| 		virtual uint getNumCols( ) const; | ||||
| 
 | ||||
| 		/** Returns total dimension of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Total dimension of the argument | ||||
| 		 */ | ||||
| 		virtual uint getDim( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether all components of the argument are given.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff all components of the argument have given values, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		virtual bool isGiven( ) const; | ||||
| 
 | ||||
| 		/** Returns whether argument is to be called by value.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff argument is to be called by value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isCalledByValue( ) const; | ||||
| 
 | ||||
| 		/** Specifies to call argument by value.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue callByValue( ); | ||||
| 
 | ||||
| 		/** Exports declaration of the argument into given file. Its appearance can
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export declaration. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	// PROTECTED MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		/** Returns column dimension of the argument.
 | ||||
| 		 * | ||||
| 		 *	\return Column dimension of the argument | ||||
| 		 */ | ||||
| 		virtual uint getColDim( ) const; | ||||
| 
 | ||||
| 		/** Returns total index of given component within memory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Row index of the component. | ||||
| 		 *	@param[in] colIdx		Column index of the component. | ||||
| 		 * | ||||
| 		 *	\return Total index of given component | ||||
| 		 */ | ||||
| 		virtual ExportIndex	getTotalIdx(	const ExportIndex& rowIdx, | ||||
| 											const ExportIndex& colIdx | ||||
| 											) const; | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		DMatrixPtr data;								/**< DMatrix containing the values of each component of the argument
 | ||||
| 													 *   (by default, all entries are undefined). */ | ||||
| 		ExportIndex addressIdx;						/**< Address index in case not the argument itself but a pointer to
 | ||||
| 													 *   this address within the memory of the argument is to be passed. */ | ||||
| 		bool callItByValue;					/**< Flag indicating whether argument it to be called by value. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_ARGUMENT_INTERNAL_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,220 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
| *	\file include/acado/code_generation/export_argument_list.hpp | ||||
| *	\author Hans Joachim Ferreau, Boris Houska | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ARGUMENT_LIST_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ARGUMENT_LIST_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_argument.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to store a list of calling arguments of an ExportFunction. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportArgumentList allows to store a list of calling 
 | ||||
|  *	arguments of an ExportFunction. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class ExportArgumentList | ||||
| { | ||||
| 	//
 | ||||
| 	// PUBLIC MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	public: | ||||
| 
 | ||||
| 		/**< Default Constructor. 
 | ||||
| 		 */ | ||||
| 		ExportArgumentList( ); | ||||
| 
 | ||||
| 		/** Constructor which takes up to nine calling arguments.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 		 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 		 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 		 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 		 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 		 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 		 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 		 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 		 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 		 */ | ||||
| 		ExportArgumentList(	const ExportArgument& _argument1, | ||||
| 							const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 							); | ||||
| 		
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportArgumentList(	const ExportArgumentList& arg | ||||
| 							); | ||||
| 
 | ||||
| 		/** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~ExportArgumentList( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportArgumentList& operator=(	const ExportArgumentList& rhs | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds up to nine calling arguments to the list.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 		 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 		 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 		 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 		 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 		 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 		 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 		 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 		 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addArgument(	const ExportArgument& _argument1, | ||||
| 									const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 									const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Return number of calling arguments in list.
 | ||||
| 		 * | ||||
| 		 *  \return Number of calling arguments | ||||
| 		 */ | ||||
| 		uint getNumArguments( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports a code snippet containing all calling arguments of the list.
 | ||||
| 		 *  Its appearance can can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export function. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Removes all calling arguments to yield an empty argument list.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue clear( ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Specifies to include variable types into calling arguments.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue doIncludeType( ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Specifies not to include variable types into calling arguments.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue doNotIncludeType( ); | ||||
| 
 | ||||
| 		/** Get the list of arguments.
 | ||||
| 		 * | ||||
| 		 *	\return Argument list | ||||
| 		 */ | ||||
| 		const std::vector< ExportArgument >& get( ) const; | ||||
| 
 | ||||
| 	//
 | ||||
| 	// PROTECTED MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		/** Adds a single calling arguments to the list.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _argument	Calling argument. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addSingleArgument(	const ExportArgument& _argument | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	// DATA MEMBERS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		/** Array containing all calling arguments. */ | ||||
| 		std::vector< ExportArgument > arguments; | ||||
| 		
 | ||||
| 		/** Flag indicating whether variable types are to be included in calling arguments. */ | ||||
| 		bool includeType; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #endif	// ACADO_TOOLKIT_EXPORT_ARGUMENT_LIST_HPP
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,218 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_arithmetic_statement.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2010 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_ARITHMETIC_STATEMENT_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_ARITHMETIC_STATEMENT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_statement.hpp> | ||||
| #include <acado/code_generation/export_variable.hpp> | ||||
| #include <acado/code_generation/memory_allocator.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code of different arithmetic statements. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportArithmeticStatement allows to export code of different arithmetic 
 | ||||
|  *	statements of the form: | ||||
|  * | ||||
|  *	lhs <op0> rhs1 <op1> rhs2 <op2> rhs3, | ||||
|  * | ||||
|  *	where <op0> can be "=", "+=" or "-=", | ||||
|  *	<op1> can be "+", "-" or "*" and | ||||
|  *	<op2> can be "+" or "-". | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportArithmeticStatement : public ExportStatement | ||||
| { | ||||
| 	friend class ExportVariable; | ||||
| 
 | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 */ | ||||
|         ExportArithmeticStatement( ); | ||||
| 
 | ||||
| 		/** Constructor which takes all expressions and operators of the arithmetic statement.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _lhs			Left-hand side expressions | ||||
| 		 *	@param[in] _op0			Operator between left- and right-hand side expression. | ||||
| 		 *	@param[in] _rhs1		First right-hand side expression. | ||||
| 		 *	@param[in] _op1			Operator between first and second right-hand side expression. | ||||
| 		 *	@param[in] _rhs2		Second right-hand side expression of arithmetic statement. | ||||
| 		 *	@param[in] _op2			Operator between second and third right-hand side expression. | ||||
| 		 *	@param[in] _rhs3		Third right-hand side expression. | ||||
| 		 */ | ||||
| 		ExportArithmeticStatement(	const ExportVariable& _lhs, | ||||
| 									ExportStatementOperator _op0, | ||||
| 									const ExportVariable& _rhs1, | ||||
| 									ExportStatementOperator _op1, | ||||
| 									const ExportVariable& _rhs2, | ||||
| 									ExportStatementOperator _op2 = ESO_UNDEFINED, | ||||
| 									const ExportVariable& _rhs3 = 0 | ||||
| 									); | ||||
| 
 | ||||
| 		/** Destructor. */ | ||||
| 		virtual ~ExportArithmeticStatement( ); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 		/** Exports data declaration of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 		/** Exports source code of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
| 		ExportArithmeticStatement& allocate( MemoryAllocatorPtr allocator ); | ||||
| 
 | ||||
| 	//
 | ||||
|     // PROTECTED MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     protected: | ||||
| 
 | ||||
| 		/** Exports source code for an addition or subtraction to given file. 
 | ||||
| 		 *  Its appearance can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] _sign			std::string of the operation ("+" or "-"). | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue exportCodeAddSubtract(	std::ostream& stream, | ||||
| 											const std::string& _sign = "+", | ||||
| 											const std::string& _realString = "real_t", | ||||
| 											const std::string& _intString = "int" | ||||
| 											) const; | ||||
| 
 | ||||
| 		/** Exports source code for a multiplication to given file.
 | ||||
| 		 *  Its appearance can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] transposeRhs1	Flag indicating whether rhs1 shall be transposed. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue exportCodeMultiply(	std::ostream& stream, | ||||
| 										bool transposeRhs1 = false, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int" | ||||
| 										) const; | ||||
| 
 | ||||
| 		/** Exports source code for an assignment to given file. 
 | ||||
| 		 *  Its appearance can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] _op				std::string of the assignment operation ("=", "+=" or "-="). | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue exportCodeAssign(	std::ostream& stream, | ||||
| 										const std::string& _op = "=", | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int" | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		// Refactor this guys as shared pointers
 | ||||
| 		ExportVariable lhs;						/**< Left-hand side expression of arithmetic statement. */ | ||||
| 		ExportVariable rhs1;					/**< First right-hand side expression of arithmetic statement. */ | ||||
| 		ExportVariable rhs2;					/**< Second right-hand side expression of arithmetic statement. */ | ||||
| 		ExportVariable rhs3;					/**< Third right-hand side expression of arithmetic statement. */ | ||||
| 
 | ||||
| 		ExportStatementOperator op0;			/**< Operator between left- and right-hand side expression of arithmetic statement. */ | ||||
| 		ExportStatementOperator op1; 			/**< Operator between first and second right-hand side expression of arithmetic statement. */ | ||||
| 		ExportStatementOperator op2;			/**< Operator between second and third right-hand side expression of arithmetic statement. */ | ||||
| 
 | ||||
| 		MemoryAllocatorPtr memAllocator; | ||||
| 
 | ||||
|     private: | ||||
| 		std::string getAssignString( ) const; | ||||
| 
 | ||||
| 		uint getNumRows( ) const; | ||||
| 		uint getNumCols( ) const; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_ARITHMETIC_STATEMENT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,96 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_auxiliary_functions.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_AUXILIARY_FUNCTIONS_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_AUXILIARY_FUNCTIONS_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for generating some helper functions. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportAuxiliaryFunctions | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _moduleName		    Module name for customization. | ||||
|      **	@param[in] _moduleName		    Module prefix for customization. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportAuxiliaryFunctions(	const std::string& _headerFileName, | ||||
| 								const std::string& _sourceFileName, | ||||
| 								const std::string& _moduleName = "acado", | ||||
|                                 const std::string& _modulePrefix = "ACADO", | ||||
| 								const std::string& _commonHeaderName = "", | ||||
| 								const std::string& _realString = "double", | ||||
| 								const std::string& _intString = "int", | ||||
| 								int _precision = 16, | ||||
| 								const std::string& _commentString = std::string() | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportAuxiliaryFunctions() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	); | ||||
| 
 | ||||
| 	/** Export the interface. */ | ||||
| 	returnValue exportCode(); | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| 	ExportTemplatedFile source; | ||||
| 	ExportTemplatedFile header; | ||||
| 	std::string moduleName; | ||||
|     std::string modulePrefix; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_AUXILIARY_FUNCTIONS_HPP
 | ||||
| @ -1,122 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_cholesky_decomposition.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_CHOLESKY_DECOMPOSITION_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_CHOLESKY_DECOMPOSITION_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_algorithm.hpp> | ||||
| #include <acado/code_generation/export_function.hpp> | ||||
| #include <acado/code_generation/export_variable.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for exporting a function for calculation of the | ||||
|  *	       Cholesky decomposition. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| class ExportCholeskyDecomposition: public ExportAlgorithm | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportCholeskyDecomposition(	UserInteraction* _userInteraction = 0, | ||||
| 									const std::string& _commonHeaderName = "" | ||||
| 									); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportCholeskyDecomposition() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes the different parameters of the linear solver that will be exported.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue init(	const std::string& _name, | ||||
| 						unsigned _dim, | ||||
| 						bool _unrolling = false | ||||
| 						); | ||||
| 
 | ||||
| 	/** Initializes code export into given file.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup(); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated algorithm to given list of declarations.
 | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated algorithm to given list of declarations.
 | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated algorithm into the given directory.
 | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 	/** Get name of the function that perform the decomposition. */ | ||||
| 	const std::string getName(); | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| 	ExportVariable A; | ||||
| 	ExportFunction fcn; | ||||
| 	bool unrolling; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_CHOLESKY_DECOMPOSITION_HPP
 | ||||
| @ -1,90 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_common_header.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_COMMON_HEADER_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_COMMON_HEADER_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Centralized place to export the common header for a generated module. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportCommonHeader : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentstd::string		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportCommonHeader(	const std::string& _fileName, | ||||
| 						const std::string& _commonHeaderName = "", | ||||
| 						const std::string& _realString = "real_t", | ||||
| 						const std::string& _intString = "int", | ||||
| 						int _precision = 16, | ||||
| 						const std::string& _commentString = std::string() | ||||
| 						); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportCommonHeader( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	const std::string& _moduleName, | ||||
|                             const std::string& _modulePrefix, | ||||
| 							bool _useSinglePrecision, | ||||
| 							bool _useComplexArithmetic, | ||||
| 							QPSolverName _qpSolver, | ||||
| 							const std::map<std::string, std::pair<std::string, std::string> >& _options, | ||||
| 							const std::string& _variables, | ||||
| 							const std::string& _workspace, | ||||
| 							const std::string& _functions | ||||
| 							); | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_COMMON_HEADER_HPP
 | ||||
| @ -1,194 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_data.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_DATA_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_DATA_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <casadi/symbolic/shared_object.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| // Forward declaration
 | ||||
| class ExportDataInternal; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Abstract base class to define variables to be used for exporting code | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportData serves as an abstract base class to define variables | ||||
|  *	to be used for exporting code. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportData : public CasADi::SharedObject | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 		/** Default constructor. 
 | ||||
| 		 */ | ||||
|         ExportData( ); | ||||
| 
 | ||||
|         /** Destructor.
 | ||||
| 		 */ | ||||
|         virtual ~ExportData( ); | ||||
| 
 | ||||
|         /** An operator for access to functions and  members of the node
 | ||||
|          */ | ||||
|         ExportDataInternal* operator->(); | ||||
| 
 | ||||
|         /** An operator for const access to functions and  members of the node
 | ||||
|          */ | ||||
|         const ExportDataInternal* operator->() const; | ||||
| 
 | ||||
| 		/** Sets the name of the data object.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _name			New name of the data object. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue	setName(	const std::string& _name | ||||
| 								); | ||||
| 
 | ||||
| 		/** Sets the data type of the data object.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _type			New data type of the data object. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue	setType(	ExportType _type | ||||
| 								); | ||||
| 								
 | ||||
| 		/** Sets the global data struct to which the data object belongs to.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _dataStruct		New global data struct to which the data object belongs to. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue	setDataStruct(	ExportStruct _dataStruct | ||||
| 									); | ||||
| 		/** Sets the prefix which is placed before the structure name.
 | ||||
| 		 * | ||||
| 		 *  @param[in] _prefix Prefix name. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue setPrefix(	const std::string& _prefix | ||||
| 								); | ||||
| 		/** Returns the name of the data object.
 | ||||
| 		 * | ||||
| 		 *	\return Name of the data object | ||||
| 		 */ | ||||
| 		std::string getName( ) const; | ||||
| 
 | ||||
| 		/** Returns the data type of the data object.
 | ||||
| 		 * | ||||
| 		 *	\return Data type of the data object | ||||
| 		 */ | ||||
| 		ExportType getType( ) const; | ||||
| 
 | ||||
| 		/** Returns a string containing the data type of the data object.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 * | ||||
| 		 *	\return std::string containing the data type of the data object. | ||||
| 		 */ | ||||
| 		std::string getTypeString(	const std::string& _realString = "real_t", | ||||
| 									const std::string& _intString = "int" | ||||
| 									) const; | ||||
| 
 | ||||
| 		/** Returns the global data struct to which the data object belongs to.
 | ||||
| 		 * | ||||
| 		 *	\return Global data struct to which the data object belongs to | ||||
| 		 */ | ||||
| 		ExportStruct getDataStruct( ) const; | ||||
| 
 | ||||
| 		/** Returns a string containing the global data struct to which the data object belongs to.
 | ||||
| 		 * | ||||
| 		 *	\return std::string containing the global data struct to which the data object belongs to. | ||||
| 		 */ | ||||
| 		std::string getDataStructString( ) const; | ||||
| 		
 | ||||
| 		/** Returns a string which contains a prefix name.
 | ||||
| 		 * | ||||
| 		 *  \return Prefix name | ||||
| 		 */ | ||||
| 		std::string getPrefix( ) const; | ||||
| 
 | ||||
| 		/** Returns the full name of the data object including the possible prefix 
 | ||||
| 		 *	of the global data struct. | ||||
| 		 * | ||||
| 		 *	\return Full name of the data object | ||||
| 		 */ | ||||
| 		std::string getFullName( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports declaration of the index variable. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream				Name of file to be used to export function. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether the index is set to a given value.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff index is set to a given value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		virtual bool isGiven( ); | ||||
| 
 | ||||
| 		virtual returnValue setDoc(const std::string& _doc); | ||||
| 
 | ||||
| 		virtual std::string getDoc() const; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_DATA_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,146 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_data_declaration.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 2010-2011 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_DATA_DECLARATION_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_DATA_DECLARATION_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_statement.hpp> | ||||
| #include <acado/code_generation/export_variable.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code containing variable declarations. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportDataDeclaration allows to export code containing variable 
 | ||||
|  *	declarations of different data types. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class ExportDataDeclaration : public ExportStatement | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 */ | ||||
|         ExportDataDeclaration( ); | ||||
| 		
 | ||||
| 		/** Constructor taking the variable to be declared.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _data	Variable to be declared. | ||||
| 		 */ | ||||
| 		ExportDataDeclaration(	const ExportVariable& _data | ||||
| 								); | ||||
| 
 | ||||
| 		/** Constructor taking the index variable to be declared.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _data	Index Variable to be declared. | ||||
| 		 */ | ||||
| 		ExportDataDeclaration(	const ExportIndex& _data | ||||
| 								); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportDataDeclaration(	const ExportDataDeclaration& arg | ||||
| 								); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExportDataDeclaration( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExportDataDeclaration& operator=(	const ExportDataDeclaration& arg | ||||
| 											); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] file				Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
|     // PROTECTED MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 		
 | ||||
| 		ExportData data;					/**< Variable to be declared. */ | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_DATA_DECLARATION_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,201 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_DATA_INTERNAL_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_DATA_INTERNAL_HPP | ||||
| 
 | ||||
| #include <casadi/symbolic/shared_object.hpp> | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportDataInternal : public CasADi::SharedObjectNode | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor which optionally takes name and type string
 | ||||
| 	 *	of the data object. | ||||
| 	 * | ||||
| 	 *	@param[in] _name			Name of the data object. | ||||
| 	 *	@param[in] _type			Data type of the data object. | ||||
| 	 *	@param[in] _dataStruct		Global data struct to which the data object belongs to (if any). | ||||
| 	 *	@param[in] _prefix			Optional prefix that will be put in front of the name. | ||||
| 	 */ | ||||
| 	explicit ExportDataInternal(	const std::string& _name = std::string(), | ||||
| 									ExportType _type = REAL, | ||||
| 									ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 									const std::string& _prefix = std::string() | ||||
| 									); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	 */ | ||||
| 	virtual ~ExportDataInternal( ); | ||||
| 
 | ||||
| 	virtual ExportDataInternal* clone() const = 0; | ||||
| 
 | ||||
| 	/** Sets the name of the data object.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _name			New name of the data object. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue	setName(	const std::string& _name | ||||
| 							); | ||||
| 
 | ||||
| 	/** Sets the data type of the data object.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _type			New data type of the data object. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue	setType(	ExportType _type | ||||
| 							); | ||||
| 
 | ||||
| 	/** Sets the global data struct to which the data object belongs to.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _dataStruct		New global data struct to which the data object belongs to. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue	setDataStruct(	ExportStruct _dataStruct | ||||
| 								); | ||||
| 
 | ||||
| 	/** Sets the prefix which is placed before the structure name.
 | ||||
| 	 * | ||||
| 	 *  @param[in] _prefix Prefix name. | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue setPrefix(	const std::string& _prefix | ||||
| 							); | ||||
| 	/** Returns the name of the data object.
 | ||||
| 	 * | ||||
| 	 *	\return Name of the data object | ||||
| 	 */ | ||||
| 	std::string getName( ) const; | ||||
| 
 | ||||
| 	/** Returns the data type of the data object.
 | ||||
| 	 * | ||||
| 	 *	\return Data type of the data object | ||||
| 	 */ | ||||
| 	ExportType getType( ) const; | ||||
| 
 | ||||
| 	/** Returns a string containing the data type of the data object.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 * | ||||
| 	 *	\return std::string containing the data type of the data object. | ||||
| 	 */ | ||||
| 	std::string getTypeString(	const std::string& _realString = "real_t", | ||||
| 								const std::string& _intString = "int" | ||||
| 								) const; | ||||
| 
 | ||||
| 	/** Returns the global data struct to which the data object belongs to.
 | ||||
| 	 * | ||||
| 	 *	\return Global data struct to which the data object belongs to | ||||
| 	 */ | ||||
| 	ExportStruct getDataStruct( ) const; | ||||
| 
 | ||||
| 	/** Returns a string containing the global data struct to which the data object belongs to.
 | ||||
| 	 * | ||||
| 	 *	\return String containing the global data struct to which the data object belongs to. | ||||
| 	 */ | ||||
| 	std::string getDataStructString( ) const; | ||||
| 
 | ||||
| 	/** Returns a string which contains a prefix name.
 | ||||
| 	 * | ||||
| 	 *  \return Prefix name | ||||
| 	 */ | ||||
| 	std::string getPrefix( ) const; | ||||
| 
 | ||||
| 	/** Returns the full name of the data object including the possible prefix
 | ||||
| 	 *	of the global data struct. | ||||
| 	 * | ||||
| 	 *	\return Full name of the data object | ||||
| 	 */ | ||||
| 	std::string getFullName( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports declaration of the index variable. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] file				Name of file to be used to export function. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 												const std::string& _realString = "real_t", | ||||
| 												const std::string& _intString = "int", | ||||
| 												int _precision = 16 | ||||
| 												) const = 0; | ||||
| 
 | ||||
| 	/** Returns whether the index is set to a given value.
 | ||||
| 	 * | ||||
| 	 *	\return true  iff index is set to a given value, \n | ||||
| 	 *	        false otherwise | ||||
| 	 */ | ||||
| 	virtual bool isGiven( ) const = 0; | ||||
| 
 | ||||
| 	virtual returnValue setDoc( const std::string& _doc ); | ||||
| 	virtual std::string getDoc( ) const; | ||||
| 
 | ||||
| 	//
 | ||||
| 	// PROTECTED MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| protected: | ||||
| 
 | ||||
| 	returnValue setFullName( void ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Name of the data object. */ | ||||
| 	std::string name; | ||||
| 
 | ||||
| 	/** Data type of the data object. */ | ||||
| 	ExportType type; | ||||
| 
 | ||||
| 	/** Prefix, which is added before the structure name*/ | ||||
| 	std::string prefix; | ||||
| 
 | ||||
| 	/** Global data struct to which the data object belongs to (if any). */ | ||||
| 	ExportStruct dataStruct; | ||||
| 
 | ||||
| 	/** Full name of the data object including the possible prefix of the global data struct. */ | ||||
| 	std::string fullName; | ||||
| 
 | ||||
| 	/** Description of the variable */ | ||||
| 	std::string description; | ||||
|     
 | ||||
|     
 | ||||
| public: | ||||
|     static std::string fcnPrefix; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_DATA_INTERNAL_HPP
 | ||||
| @ -1,102 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_exact_hessian_cn2.hpp | ||||
|  *    \authors Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_EXACT_HESSIAN_CN2_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_EXACT_HESSIAN_CN2_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| #include <acado/code_generation/export_gauss_newton_cn2.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief TBD | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\authors Rien Quirynen | ||||
|  * | ||||
|  *	\note Early experimental implementation | ||||
|  */ | ||||
| class ExportExactHessianCN2 : public ExportGaussNewtonCN2 | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportExactHessianCN2(	UserInteraction* _userInteraction = 0, | ||||
| 								const std::string& _commonHeaderName = "" | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportExactHessianCN2( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Setting up of a Hessian regularization routine */ | ||||
| 	virtual returnValue setupHessianRegularization( void ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_EXACT_HESSIAN_CN2_HPP
 | ||||
| @ -1,115 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_qpdunes.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_EXACT_HESSIAN_QPDUNES_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_EXACT_HESSIAN_QPDUNES_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| #include <acado/code_generation/export_gauss_newton_qpdunes.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for export of an OCP solver using sparse QP solver qpDUNES | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExportExactHessianQpDunes allows export of an OCP solver using | ||||
|  *	the generalized Exact-Hessian method. The underlying QP is solved using the | ||||
|  *	structured sparse QP solver qpDUNES. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExportExactHessianQpDunes : public ExportGaussNewtonQpDunes | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportExactHessianQpDunes(	UserInteraction* _userInteraction = 0, | ||||
| 								const std::string& _commonHeaderName = "" | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	*/ | ||||
| 	virtual ~ExportExactHessianQpDunes( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Setting up of a Hessian regularization routine */ | ||||
| 	virtual returnValue setupHessianRegularization( void ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_EXACT_HESSIAN_QPDUNES_HPP
 | ||||
| @ -1,126 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/export_file.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 2010-2011 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FILE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FILE_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_statement_block.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export files containing automatically generated algorithms for fast model predictive control | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExportFile allows to export files containing automatically generated 
 | ||||
|  *	algorithms for fast model predictive control. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Milan Vukov, Boris Houska | ||||
|  */ | ||||
| class ExportFile : public ExportStatementBlock | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
|         /** Default constructor. 
 | ||||
| 		 */ | ||||
| 		ExportFile( ); | ||||
|                 
 | ||||
| 		/** Standard constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _fileName			Name of exported file. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 		 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 		 */ | ||||
| 		ExportFile(	const std::string& _fileName, | ||||
| 					const std::string& _commonHeaderName = "", | ||||
| 					const std::string& _realString = "real_t", | ||||
| 					const std::string& _intString = "int", | ||||
| 					int _precision = 16, | ||||
| 					const std::string& _commentString = std::string() | ||||
| 					); | ||||
| 
 | ||||
|         /** Destructor. */ | ||||
|         virtual ~ExportFile( ); | ||||
| 
 | ||||
|         
 | ||||
|         /** Setup routine.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _fileName			Name of exported file. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 		 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup(	const std::string& _fileName, | ||||
|                                     const std::string& _commonHeaderName = "", | ||||
|                                     const std::string& _realString = "real_t", | ||||
|                                     const std::string& _intString = "int", | ||||
|                                     int _precision = 16, | ||||
|                                     const std::string& _commentString = std::string() | ||||
|                                     ); | ||||
|         
 | ||||
|         
 | ||||
| 		/** Exports the file containing the auto-generated code.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode( ) const; | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		std::string fileName;					/**< Name of exported file. */ | ||||
| 		std::string commonHeaderName;			/**< Name of common header file. */ | ||||
| 		
 | ||||
| 		std::string realString;					/**< std::string to be used to declare real variables. */ | ||||
| 		std::string intString;					/**< std::string to be used to declare integer variables. */ | ||||
| 		int precision;							/**< Number of digits to be used for exporting real values. */ | ||||
| 		std::string commentString;				/**< std::string to be used for exporting comments. */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_FILE_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,205 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
| *	\file include/acado/code_generation/export_for_loop.hpp | ||||
| *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
| *    \date 2010-2011 | ||||
| */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FOR_LOOP_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FOR_LOOP_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| #include <acado/code_generation/export_statement_block.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code of a for-loop. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportForLoop allows to export code of a for-loop. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportForLoop : public ExportStatementBlock | ||||
| { | ||||
| 	//
 | ||||
| 	// PUBLIC MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	public: | ||||
| 
 | ||||
| 		/** Default constructor which optionally takes the name of the
 | ||||
| 		 *	loop variable as well as other loop settings. | ||||
| 		 * | ||||
| 		 *	@param[in] _loopVariable		Name of the loop variable. | ||||
| 		 *	@param[in] _startValue			Start value of the loop counter. | ||||
| 		 *	@param[in] _finalValue			Final value of the loop counter. | ||||
| 		 *	@param[in] _increment			Increment of the loop counter. | ||||
| 		 *	@param[in] _doLoopUnrolling		Flag indicating whether loop shall be unrolled. | ||||
| 		 */ | ||||
| 		ExportForLoop(	const ExportIndex& _loopVariable = emptyConstExportIndex, | ||||
| 						const ExportIndex& _startValue = emptyConstExportIndex, | ||||
| 						const ExportIndex& _finalValue = emptyConstExportIndex, | ||||
| 						const ExportIndex& _increment = constExportIndexValueOne, | ||||
| 						bool _doLoopUnrolling = false | ||||
| 						); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportForLoop(	const ExportForLoop& arg | ||||
| 						); | ||||
| 
 | ||||
| 		/** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~ExportForLoop( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportForLoop& operator=(	const ExportForLoop& arg | ||||
| 									); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 		/** Initializes for-loop with given loop settings.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _loopVariable		Name of the loop variable. | ||||
| 		 *	@param[in] _startValue			Start value of the loop counter. | ||||
| 		 *	@param[in] _finalValue			Final value of the loop counter. | ||||
| 		 *	@param[in] _increment			Increment of the loop counter. | ||||
| 		 *	@param[in] _doLoopUnrolling		Flag indicating whether loop shall be unrolled. | ||||
| 		 */ | ||||
| 		returnValue init(	const ExportIndex& _loopVariable, | ||||
| 							const ExportIndex& _startValue, | ||||
| 							const ExportIndex& _finalValue, | ||||
| 							const ExportIndex& _increment, | ||||
| 							bool _doLoopUnrolling | ||||
| 							); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports data declaration of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 		/** Exports source code of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] file				Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Specifies to unroll for-loop.
 | ||||
| 		 * | ||||
| 		 *	\return Reference to for-loop object | ||||
| 		 */ | ||||
| 		ExportForLoop& unrollLoop( ); | ||||
| 
 | ||||
| 		/** Specifies not to unroll for-loop.
 | ||||
| 		 * | ||||
| 		 *	\return Loop-unrolled copy of for-loop object | ||||
| 		 */ | ||||
| 		ExportForLoop& keepLoop( ); | ||||
| 
 | ||||
| 		ExportForLoop& allocate(MemoryAllocatorPtr allocator); | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	// PROTECTED MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		/** Frees internal dynamic memory to yield an empty for-loop.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue clear( ); | ||||
| 
 | ||||
| 	private: | ||||
| 
 | ||||
| 		returnValue sanityCheck( void ) const; | ||||
| 
 | ||||
| 	//
 | ||||
| 	// DATA MEMBERS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		ExportIndex loopVariable;		/**< Loop variable. */ | ||||
| 		ExportIndex startValue;			/**< Start value of the loop counter. */ | ||||
| 		ExportIndex finalValue;			/**< Final value of the loop counter. */ | ||||
| 		ExportIndex increment;			/**< Increment of the loop counter. */ | ||||
| 		
 | ||||
| 		bool doLoopUnrolling;	/**< Flag indicating whether loop shall be unrolled when exporting the code. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #endif	// ACADO_TOOLKIT_EXPORT_FOR_LOOP_HPP
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,100 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_forces_generator.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2012 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FORCES_GENERATOR_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FORCES_GENERATOR_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief  Generator of the FORCES interface, the to, be called from MATLAB | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportForcesGenerator : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _templateName		Name of a template. | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportForcesGenerator(	const std::string& _templateName, | ||||
| 							const std::string& _fileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportForcesGenerator( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	const unsigned _nx, | ||||
| 							const unsigned _nu, | ||||
| 							const unsigned _NN, | ||||
| 							const std::vector< std::vector< unsigned > >& _lbIdx, | ||||
| 							const std::vector< std::vector< unsigned > >& _ubIdx, | ||||
| 							const std::vector< unsigned >& _AbDim, | ||||
| 							const bool _constHessian, | ||||
| 							const bool _diagHessian, | ||||
| 							const bool _diagHessianN, | ||||
| 							const bool _fixedInitialState, | ||||
| 							const std::string& _solverName, | ||||
| 							const unsigned _printLevel, | ||||
| 							const unsigned _maxIterations, | ||||
| 							const unsigned _parallel, | ||||
| 							bool matlabGenerator, | ||||
| 							bool warmStart | ||||
| 							); | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_FORCES_GENERATOR_HPP
 | ||||
| @ -1,91 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_forces_interface.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FORCES_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FORCES_INTERFACE_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief A class for configuration and export for interface to the FORCES QP solver | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportForcesInterface : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _templateName		Name of a template. | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentstd::string		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportForcesInterface(	const std::string& _templateName, | ||||
| 							const std::string& _fileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportForcesInterface( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	const std::string& _forcesHeader, | ||||
| 							const std::string& _forcesParams, | ||||
| 							const std::string& _forcesParamsObj, | ||||
| 							const std::string& _forcesOutput, | ||||
| 							const std::string& _forcesOutputObj, | ||||
| 							const std::string& _forcesInfo, | ||||
| 							const std::string& _forcesInfoObj | ||||
| 							); | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_FORCES_INTERFACE_HPP
 | ||||
| @ -1,303 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_function.hpp | ||||
|  *    \authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2010 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FUNCTION_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FUNCTION_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_variable.hpp> | ||||
| #include <acado/code_generation/export_argument_list.hpp> | ||||
| #include <acado/code_generation/export_statement_block.hpp> | ||||
| #include <acado/code_generation/export_statement_string.hpp> | ||||
| #include <acado/code_generation/memory_allocator.hpp> | ||||
| 
 | ||||
| #include <memory> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code of an arbitrary function. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportFunction allows to export code of an arbitrary function. | ||||
|  * | ||||
|  */ | ||||
| class ExportFunction : public ExportStatementBlock | ||||
| { | ||||
| public: | ||||
| 	/** Default constructor which optionally takes the name of the function
 | ||||
| 	 *	as well as possible calling arguments. | ||||
| 	 * | ||||
| 	 *	@param[in] _name		Name of the function. | ||||
| 	 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 	 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 	 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 	 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 	 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 	 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 	 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 	 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 	 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 	 */ | ||||
| 	ExportFunction(	const std::string& _name = "defaultFunctionName", | ||||
| 					const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 					const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 					); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	 */ | ||||
| 	virtual ~ExportFunction( ); | ||||
| 
 | ||||
| 	/** Clone constructor (deep copy).
 | ||||
| 	 * | ||||
| 	 *	\return Pointer to cloned object. | ||||
| 	 */ | ||||
| 	virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 	/** Initializes function with given name and possible calling arguments.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _name		Name of the function. | ||||
| 	 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 	 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 	 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 	 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 	 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 	 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 	 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 	 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 	 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue init(	const std::string& _name = "defaultFunctionName", | ||||
| 						const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 						const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 						); | ||||
| 
 | ||||
| 	/** Initializes function with given name and possible calling arguments.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _name		Name of the function. | ||||
| 	 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 	 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 	 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 	 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 	 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 	 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 	 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 	 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 	 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 	 * | ||||
| 	 *	\return Reference to initialized object | ||||
| 	 */ | ||||
| 	ExportFunction& setup(	const std::string& _name = "defaultFunctionName", | ||||
| 							const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 							); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Adds up to nine calling arguments to the function.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _name		Name of the function. | ||||
| 	 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 	 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 	 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 	 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 	 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 	 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 	 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 	 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 	 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue addArgument(	const ExportArgument& _argument1, | ||||
| 								const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 								const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 								); | ||||
| 
 | ||||
| 	/** Assigns a return value to the function (by default, its return value is void).
 | ||||
| 	 * | ||||
| 	 *	@param[in] _functionReturnValue		New return value of the function. | ||||
| 	 *	@param[in] _returnAsPointer			Flag indicating whether value shall be returned as pointer. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportFunction& setReturnValue(	const ExportVariable& _functionReturnValue, | ||||
| 									bool _returnAsPointer = false | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Sets the name of the function. */ | ||||
| 	ExportFunction&	setName(const std::string& _name); | ||||
| 
 | ||||
| 	/** Returns the name of the function. */ | ||||
| 	std::string getName( ) const; | ||||
| 
 | ||||
| 	/** Exports data declaration of the function into given file. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] file				Name of file to be used to export function. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 												const std::string& _realString = "real_t", | ||||
| 												const std::string& _intString = "int", | ||||
| 												int _precision = 16 | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Exports forward declaration of the function into given file. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] stream				Name of file to be used to export statement. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportForwardDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 	/** Exports source code of the function into given file. Its appearance can
 | ||||
| 	 *  can be adjusted by various options. | ||||
| 	 * | ||||
| 	 *	@param[in] stream			Name of file to be used to export function. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportCode(	std::ostream& stream, | ||||
| 									const std::string& _realString = "real_t", | ||||
| 									const std::string& _intString = "int", | ||||
| 									int _precision = 16 | ||||
| 									) const; | ||||
| 
 | ||||
| 	/** Returns whether function has been defined.
 | ||||
| 	 * | ||||
| 	 *	\return true  iff function has been defined, \n | ||||
| 	 *	        false otherwise | ||||
| 	 */ | ||||
| 	virtual bool isDefined( ) const; | ||||
| 
 | ||||
| 	/** Return number of calling arguments of the function. */ | ||||
| 	unsigned getNumArguments( ) const; | ||||
| 
 | ||||
| 	/** Add a new index (local) index to the function */ | ||||
| 	ExportFunction& addIndex( const ExportIndex& _index ); | ||||
| 
 | ||||
| 	/** Add a new index (local) variable to the function. */ | ||||
| 	ExportFunction& addVariable( const ExportVariable& _var ); | ||||
| 
 | ||||
| 	/** Acquire a local variable. */ | ||||
| 	virtual ExportFunction& acquire( ExportIndex& obj ); | ||||
| 
 | ||||
| 	/** Release a local variable. */ | ||||
| 	virtual ExportFunction& release( const ExportIndex& obj ); | ||||
| 
 | ||||
| 	/** Set a documentation string. */ | ||||
| 	virtual ExportFunction& doc( const std::string& _doc ); | ||||
| 
 | ||||
| 	/** Set the function as private. If this is true, then do not export it's declaration. */ | ||||
| 	virtual ExportFunction& setPrivate(	bool _set = true ); | ||||
| 
 | ||||
| 	/** Is function private? */ | ||||
| 	virtual bool isPrivate() const; | ||||
| 
 | ||||
| protected: | ||||
| 	/** Frees internal dynamic memory to yield an empty function.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue clear( ); | ||||
| 
 | ||||
| 	/** Name of the function. */ | ||||
| 	std::string name; | ||||
| 	/** A description string. */ | ||||
| 	std::string description; | ||||
| 
 | ||||
| 	/** List of calling arguments. */ | ||||
| 	ExportArgumentList functionArguments; | ||||
| 	/** Return value of the function. */ | ||||
| 	ExportVariable retVal; | ||||
| 	/** Flag indicating whether value shall be returned as pointer. */ | ||||
| 	bool returnAsPointer; | ||||
| 	/** Memory allocator */ | ||||
| 	MemoryAllocatorPtr memAllocator; | ||||
| 	/** Array of local variables. */ | ||||
| 	std::vector< ExportVariable > localVariables; | ||||
| 	/** Private flag. In principle if this guy is true, do not export function declaration. */ | ||||
| 	bool flagPrivate; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_FUNCTION_HPP
 | ||||
| @ -1,249 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_function_call.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 2010-2011 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FUNCTION_CALL_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FUNCTION_CALL_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| 
 | ||||
| #include <acado/code_generation/export_statement.hpp> | ||||
| #include <acado/code_generation/export_function.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code of a function call. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportFunctionCall allows to export code of a function call. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class ExportFunctionCall : public ExportStatement | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor which optionally takes the name of the function
 | ||||
| 		 *	to be called as well as possible calling arguments. | ||||
| 		 * | ||||
| 		 *	@param[in] _name		Name of the function to be called. | ||||
| 		 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 		 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 		 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 		 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 		 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 		 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 		 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 		 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 		 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 		 */ | ||||
| 		ExportFunctionCall(	const std::string& _name = "acadoFcn", | ||||
| 							const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 							); | ||||
| 
 | ||||
| 		/** Constructor which optionally takes the function to be called
 | ||||
| 		 *	as well as possible calling arguments. | ||||
| 		 * | ||||
| 		 *	@param[in] _f			Function to be called. | ||||
| 		 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 		 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 		 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 		 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 		 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 		 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 		 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 		 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 		 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 		 */ | ||||
| 		ExportFunctionCall(	const ExportFunction& _f, | ||||
| 							const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportFunctionCall(	const ExportFunctionCall& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
| 		virtual ~ExportFunctionCall( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportFunctionCall& operator=(	const ExportFunctionCall& arg | ||||
| 										); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes function call with given name of the function and possible calling arguments.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the function to be called. | ||||
| 		 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 		 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 		 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 		 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 		 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 		 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 		 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 		 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 		 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue init(	const std::string& _name = "defaultFunctionName", | ||||
| 							const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 							); | ||||
| 
 | ||||
| 		/** Initializes function call with function to be called and possible calling arguments.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _f			Function to be called. | ||||
| 		 *	@param[in] _argument1	Calling argument no. 1. | ||||
| 		 *	@param[in] _argument2	Calling argument no. 2. | ||||
| 		 *	@param[in] _argument3	Calling argument no. 3. | ||||
| 		 *	@param[in] _argument4	Calling argument no. 4. | ||||
| 		 *	@param[in] _argument5	Calling argument no. 5. | ||||
| 		 *	@param[in] _argument6	Calling argument no. 6. | ||||
| 		 *	@param[in] _argument7	Calling argument no. 7. | ||||
| 		 *	@param[in] _argument8	Calling argument no. 8. | ||||
| 		 *	@param[in] _argument9	Calling argument no. 9. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_INVALID_CALL_TO_EXPORTED_FUNCTION | ||||
| 		 */ | ||||
| 		returnValue init(	const ExportFunction& _f, | ||||
| 							const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 							const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 							); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the function call into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export function call. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_MEMBER_NOT_INITIALISED | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	// PROTECTED MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		/** Frees internal dynamic memory to yield an empty function call.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue clear( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets the name of the function to be called.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _name		New name of the function to be called. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue	setName(	const std::string& _name | ||||
| 								); | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		std::string name;							/**< Name of function to be called. */ | ||||
| 		ExportArgumentList functionArguments;		/**< List of calling arguments. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_STATEMENT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,109 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_function_declaration.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2010 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_FUNCTION_DECLARATION_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_FUNCTION_DECLARATION_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_statement.hpp> | ||||
| #include <acado/code_generation/export_function.hpp> | ||||
| #include <acado/code_generation/export_acado_function.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
| *	\brief Allows to export code containing function (forward) declarations. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportDataDeclaration allows to export code containing function 
 | ||||
|  *	(forward) declarations. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportFunctionDeclaration : public ExportStatement | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Constructor taking the function to be declared.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _f		Function to be declared. | ||||
| 		 */ | ||||
| 		ExportFunctionDeclaration(	const ExportFunction& _f | ||||
| 									); | ||||
| 
 | ||||
| 		/** Constructor taking the ODE function to be declared.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _f		ODE function to be declared. | ||||
| 		 */ | ||||
| 		ExportFunctionDeclaration(	const ExportAcadoFunction& _f | ||||
| 									); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExportFunctionDeclaration( ); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 		/** Exports source code of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream			Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
|     private: | ||||
| 		ExportFunctionDeclaration( ); | ||||
| 
 | ||||
| 		const ExportFunction& f; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_FUNCTION_DECLARATION_HPP
 | ||||
| @ -1,176 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_block_cn2.hpp | ||||
|  *    \authors Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_CN2_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_CN2_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_gauss_newton_cn2.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportQpDunesInterface; | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief An OCP solver based on the block N^2 condensing algorithm. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\authors Rien Quirynen | ||||
|  * | ||||
|  *	\note Still a limited experimental version | ||||
|  */ | ||||
| class ExportGaussNewtonBlockCN2 : public ExportGaussNewtonCN2 | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonBlockCN2(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportGaussNewtonBlockCN2( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| 	uint getBlockSize( ) const; | ||||
| 
 | ||||
| 	uint getNumberOfBlocks( ) const; | ||||
| 
 | ||||
| 	uint getNumBlockVariables( ) const; | ||||
| 
 | ||||
| 	virtual unsigned getNumStateBoundsPerBlock( ) const; | ||||
| 
 | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ) = 0; | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ) = 0; | ||||
| 
 | ||||
| 	virtual returnValue setupCondensing( ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	ExportIndex blockI; | ||||
| 
 | ||||
| 	std::vector< unsigned > qpConDim; | ||||
| 
 | ||||
| 	ExportVariable qpgN; | ||||
| 
 | ||||
| 	ExportVariable qpH; | ||||
| 	ExportVariable qpC; | ||||
| 	ExportVariable qpc; | ||||
| 	ExportVariable qpLb0, qpUb0; | ||||
| 
 | ||||
| 	ExportVariable qpLambda, qpMu; | ||||
| 
 | ||||
| 	ExportFunction cleanup; | ||||
| 	ExportFunction shiftQpData; | ||||
| 
 | ||||
| 	ExportFunction evaluateConstraints; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_CN2_HPP
 | ||||
| @ -1,142 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_block_forces.hpp | ||||
|  *    \authors Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_FORCES_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_FORCES_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_gauss_newton_block_cn2.hpp> | ||||
| #include <acado/code_generation/export_forces_interface.hpp> | ||||
| #include <acado/code_generation/export_forces_generator.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportQpDunesInterface; | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief An OCP solver based on the block N^2 condensing algorithm, in combination with qpDUNES as the QP solver. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\authors Rien Quirynen | ||||
|  * | ||||
|  *	\note Still a limited experimental version | ||||
|  */ | ||||
| class ExportGaussNewtonBlockForces : public ExportGaussNewtonBlockCN2 | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonBlockForces(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportGaussNewtonBlockForces( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	virtual returnValue setupCondensing( ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** \name QP interface */ | ||||
| 	/** @{ */ | ||||
| 	std::string qpModuleName; | ||||
| 	std::string qpObjPrefix; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	std::vector< ExportVariable > objHessians; | ||||
| 	std::vector< ExportVariable > objGradients; | ||||
| 
 | ||||
| 	std::vector< ExportVariable > conLB; | ||||
| 	std::vector< ExportVariable > conUB; | ||||
| 	std::vector< std::vector< unsigned > > conLBIndices, conUBIndices; | ||||
| 
 | ||||
| 	std::vector< ExportVariable > conA, conAB; | ||||
| 	ExportFunction evaluateAffineConstraints; | ||||
| 	std::vector< unsigned > conABDimensions; | ||||
| 
 | ||||
| 	std::vector< ExportVariable > conC; | ||||
| 	std::vector< ExportVariable > cond; | ||||
| 
 | ||||
| 	/** FORCES interface object. */ | ||||
| 	std::shared_ptr< ExportForcesInterface > qpInterface; | ||||
| 	std::shared_ptr< ExportForcesGenerator > qpGenerator; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_QPDUNES_HPP
 | ||||
| @ -1,105 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_block_qpdunes.hpp | ||||
|  *    \authors Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_QPDUNES_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_QPDUNES_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_gauss_newton_block_cn2.hpp> | ||||
| #include <acado/code_generation/export_split_qpdunes_interface.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportQpDunesInterface; | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief An OCP solver based on the block N^2 condensing algorithm, in combination with qpDUNES as the QP solver. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\authors Rien Quirynen | ||||
|  * | ||||
|  *	\note Still a limited experimental version | ||||
|  */ | ||||
| class ExportGaussNewtonBlockQpDunes : public ExportGaussNewtonBlockCN2 | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonBlockQpDunes(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportGaussNewtonBlockQpDunes( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** qpDUNES interface object. */ | ||||
| 	std::shared_ptr< ExportSplitQpDunesInterface > qpInterface; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_BLOCK_QPDUNES_HPP
 | ||||
| @ -1,259 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_cn2.hpp | ||||
|  *    \authors Milan Vukov, Joel Andersson, Rien Quirynen | ||||
|  *    \date 2013 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CN2_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CN2_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief An OCP solver based on the N^2 condensing algorithm | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\authors Milan Vukov, Joel Andersson | ||||
|  * | ||||
|  *	\note Still a limited experimental version | ||||
|  */ | ||||
| class ExportGaussNewtonCN2 : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonCN2(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportGaussNewtonCN2( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| 	/** Returns number of bounds on differential states.
 | ||||
| 	 * | ||||
| 	 *  \return Number of bounds on differential states | ||||
| 	 */ | ||||
| 	virtual unsigned getNumStateBounds( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| 	virtual returnValue setupCondensing( ); | ||||
| 
 | ||||
| 	bool performFullCondensing( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	ExportFunction evaluateObjective; | ||||
| 
 | ||||
| 	ExportVariable x0, Dx0; | ||||
| 
 | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjS1; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 
 | ||||
| 	/** Variable containing the QP Hessian matrix. */ | ||||
| 	ExportVariable H; | ||||
| 	/** Variable containing the QP constraint matrix. */ | ||||
| 	ExportVariable A; | ||||
| 
 | ||||
| 	/** Variable containing the QP gradient. */ | ||||
| 	ExportVariable g; | ||||
| 
 | ||||
| 	/** Variable containing the lower limits on QP variables. */ | ||||
| 	ExportVariable lb; | ||||
| 
 | ||||
| 	/** Variable containing the upper limits on QP variables. */ | ||||
| 	ExportVariable ub; | ||||
| 
 | ||||
| 	/** Variable containing lower limits on QP constraints. */ | ||||
| 	ExportVariable lbA; | ||||
| 
 | ||||
| 	/** Variable containing upper limits on QP constraints. */ | ||||
| 	ExportVariable ubA; | ||||
| 
 | ||||
| 	/** Variable containing the primal QP variables. */ | ||||
| 	ExportVariable xVars; | ||||
| 
 | ||||
| 	/** Variable containing the dual QP variables. */ | ||||
| 	ExportVariable yVars; | ||||
| 
 | ||||
| 	std::vector< unsigned > xBoundsIdx; | ||||
| 	ExportVariable lbValues, ubValues; | ||||
| 	ExportVariable lbAValues, ubAValues; | ||||
| 
 | ||||
| 	ExportFunction condensePrep; | ||||
| 	ExportFunction condenseFdb; | ||||
| 	ExportFunction expand; | ||||
| 
 | ||||
| 	ExportVariable C, E, QDy, Qd; | ||||
| 
 | ||||
| 	ExportFunction multGxd; | ||||
| 	ExportFunction moveGxT; | ||||
| 	ExportFunction multGxGx; | ||||
| 	ExportFunction multGxGu; | ||||
| 	ExportFunction moveGuE; | ||||
| 	ExportFunction copyHTH; | ||||
| 	ExportFunction copyHTH1; | ||||
| 	ExportFunction multQ1d; | ||||
| 	ExportFunction multQN1d; | ||||
| 	ExportFunction multRDy; | ||||
| 	ExportFunction multQDy; | ||||
| 	ExportFunction multEQDy; | ||||
| 	ExportFunction multQETGx; | ||||
| 	ExportFunction multEDu; | ||||
| 	ExportFunction multQ1Gx; | ||||
| 	ExportFunction multQN1Gx; | ||||
| 	ExportFunction multQ1Gu; | ||||
| 	ExportFunction multQN1Gu; | ||||
| 
 | ||||
| 	ExportFunction multHxC; | ||||
| 	ExportFunction multHxE; | ||||
| 	ExportFunction macHxd; | ||||
| 
 | ||||
| 	/** \name Contraint evaluation variables */ | ||||
| 	/** @{ */ | ||||
| 	ExportVariable A10; | ||||
| 	ExportVariable A20; | ||||
| 	ExportVariable pacA01Dx0; | ||||
| 	ExportVariable pocA02Dx0; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 
 | ||||
| 	ExportFunction getKKT; | ||||
| 
 | ||||
| 	//
 | ||||
| 	// N2 condensing related
 | ||||
| 	//
 | ||||
| 	ExportVariable T1, T2, W1, W2; | ||||
| 	ExportVariable sbar, w1, w2; | ||||
| 
 | ||||
| 	ExportFunction multBTW1, macBTW1_R1, multGxTGu, macQEW2, mac_S1T_E; | ||||
| 	ExportFunction macATw1QDy, macBTw1, macQSbarW2, macASbar, macS1TSbar; | ||||
| 	ExportFunction expansionStep; | ||||
| 
 | ||||
| 	// lagrange multipliers
 | ||||
| 	ExportFunction expansionStep2; | ||||
| 
 | ||||
| 	// H00 and H10 computations
 | ||||
| 	ExportFunction mult_BT_T1, mac_ST_C, multGxTGx, macGxTGx; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CN2_HPP
 | ||||
| @ -1,278 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_cn2_factorization.hpp | ||||
|  *    \authors Milan Vukov | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CN2_FACTORIZATION_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CN2_FACTORIZATION_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| #include <acado/code_generation/linear_solvers/export_cholesky_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief TBD | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	\authors Milan Vukov | ||||
|  * | ||||
|  *	\note Early experimental implementation | ||||
|  */ | ||||
| class ExportGaussNewtonCn2Factorization : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonCn2Factorization(	UserInteraction* _userInteraction = 0, | ||||
| 										const std::string& _commonHeaderName = "" | ||||
| 										); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportGaussNewtonCn2Factorization( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| 	/** Returns number of bounds on differential states.
 | ||||
| 	 * | ||||
| 	 *  \return Number of bounds on differential states | ||||
| 	 */ | ||||
| 	virtual unsigned getNumStateBounds( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| 	virtual returnValue setupCondensing( ); | ||||
| 
 | ||||
| 	bool performFullCondensing( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	ExportFunction evaluateObjective; | ||||
| 
 | ||||
| 	ExportVariable x0, Dx0; | ||||
| 
 | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 
 | ||||
| 	/** Variable containing the QP Hessian matrix. */ | ||||
| 	ExportVariable H, H00, H10, H11; | ||||
| 	/** Variable containing factorization of the QP Hessian matrix; R' * R = H. */ | ||||
| 	ExportVariable U; | ||||
| 	/** Variable containing the QP constraint matrix. */ | ||||
| 	ExportVariable A; | ||||
| 
 | ||||
| 	/** Variable containing the QP gradient. */ | ||||
| 	ExportVariable g, g0, g1; | ||||
| 
 | ||||
| 	/** Variable containing the lower limits on QP variables. */ | ||||
| 	ExportVariable lb; | ||||
| 
 | ||||
| 	/** Variable containing the upper limits on QP variables. */ | ||||
| 	ExportVariable ub; | ||||
| 
 | ||||
| 	/** Variable containing lower limits on QP constraints. */ | ||||
| 	ExportVariable lbA; | ||||
| 
 | ||||
| 	/** Variable containing upper limits on QP constraints. */ | ||||
| 	ExportVariable ubA; | ||||
| 
 | ||||
| 	/** Variable containing the primal QP variables. */ | ||||
| 	ExportVariable xVars; | ||||
| 
 | ||||
| 	/** Variable containing the dual QP variables. */ | ||||
| 	ExportVariable yVars; | ||||
| 
 | ||||
| 	std::vector< unsigned > xBoundsIdxRev, xBoundsIdx; | ||||
| 	ExportVariable lbValues, ubValues; | ||||
| 	ExportVariable lbAValues, ubAValues; | ||||
| 
 | ||||
| 	ExportVariable Qd; | ||||
| 
 | ||||
| 	ExportFunction condensePrep; | ||||
| 	ExportFunction condenseFdb; | ||||
| 	ExportFunction expand; | ||||
| 
 | ||||
| 	ExportVariable E, QE, QGx, QDy; | ||||
| 
 | ||||
| 	ExportFunction multGxd; | ||||
| 	ExportFunction moveGxT; | ||||
| 	ExportFunction multGxGx; | ||||
| 	ExportFunction multGxGu; | ||||
| 	ExportFunction moveGuE; | ||||
| 	ExportFunction setBlockH11; | ||||
| 	ExportFunction zeroBlockH11; | ||||
| 	ExportFunction copyHTH; | ||||
| 	ExportFunction multQ1d; | ||||
| 	ExportFunction multQN1d; | ||||
| 	ExportFunction multRDy; | ||||
| 	ExportFunction multQDy; | ||||
| 	ExportFunction multEQDy; | ||||
| 	ExportFunction multQETGx; | ||||
| 	ExportFunction zeroBlockH10; | ||||
| 	ExportFunction multEDu; | ||||
| 	ExportFunction multQ1Gx; | ||||
| 	ExportFunction multQN1Gx; | ||||
| 	ExportFunction multQ1Gu; | ||||
| 	ExportFunction multQN1Gu; | ||||
| 	ExportFunction zeroBlockH00; | ||||
| 	ExportFunction multCTQC; | ||||
| 
 | ||||
| 	ExportVariable A10; | ||||
| 	ExportVariable A20; | ||||
| 	ExportVariable pacA01Dx0; | ||||
| 	ExportVariable pocA02Dx0; | ||||
| 	ExportFunction multHxC; | ||||
| 	ExportFunction multHxE; | ||||
| 	ExportFunction macHxd; | ||||
| 
 | ||||
| 	ExportFunction macCTSlx; | ||||
| 	ExportFunction macETSlu; | ||||
| 
 | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 
 | ||||
| 	ExportFunction getKKT; | ||||
| 
 | ||||
| 	// N2 condensing related
 | ||||
| 	ExportVariable W1, W2; | ||||
| 	ExportVariable sbar, w1, w2; | ||||
| 
 | ||||
| 	ExportFunction mult_H_W2T_W3, mac_H_W2T_W3_R, mac_W3_G_W1T_G; | ||||
| 
 | ||||
| 	ExportFunction multBTW1, macBTW1_R1, multGxTGu, macQEW2; | ||||
| 	ExportFunction macATw1QDy, macBTw1, macQSbarW2, macASbar, macASbarD2; | ||||
| 	ExportFunction expansionStep; | ||||
| 
 | ||||
| 	ExportCholeskySolver cholSolver; | ||||
| 
 | ||||
| 	ExportFunction mac_R_T2_B_D; | ||||
| 	ExportFunction move_D_U; | ||||
| 	ExportFunction mult_L_E_U; | ||||
| 	ExportFunction updateQ; | ||||
| 	ExportFunction mul_T2_A_L; | ||||
| 	ExportFunction mult_BT_T1_T2; | ||||
| 
 | ||||
| 	ExportVariable D, L; | ||||
| 
 | ||||
| 	ExportVariable T1, T2, T3, F; | ||||
| 
 | ||||
| 	ExportFunction mac_R_BT_F_D, mult_FT_A_L; | ||||
| 	ExportFunction updateQ2; | ||||
| 	ExportFunction mac_W1_T1_E_F; | ||||
| 	ExportFunction move_GxT_T3; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CN2_FACTORIZATION_HPP
 | ||||
| @ -1,280 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_condensed.hpp | ||||
|  *    \authors Boris Houska, Hans Joachim Ferreau, Milan Vukov | ||||
|  *    \date 2010 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CONDENSED_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CONDENSED_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| #include <acado/code_generation/linear_solvers/export_cholesky_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for export of Gauss-Newton condensed OCP solver | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExportGaussNewtonCondensed allows to export an OCP solver | ||||
|  *	using the generalized Gauss-Newton method. The sparse QP is condensed | ||||
|  *	and solved with qpOASES QP solver. | ||||
|  * | ||||
|  *	\authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportGaussNewtonCondensed : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonCondensed(	UserInteraction* _userInteraction = 0, | ||||
| 								const std::string& _commonHeaderName = "" | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	*/ | ||||
| 	virtual ~ExportGaussNewtonCondensed( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| 	/** Returns number of bounds on differential states.
 | ||||
| 	 * | ||||
| 	 *  \return Number of bounds on differential states | ||||
| 	 */ | ||||
| 	virtual unsigned getNumStateBounds( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	/** Setup qpOASES interface. */ | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| 	/** Setup condensing routine variables and functions. */ | ||||
| 	virtual returnValue setupCondensing( ); | ||||
| 
 | ||||
| 	/** Indicator for full condensing. */ | ||||
| 	bool performFullCondensing( ) const; | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| 	/** Current state feedback. */ | ||||
| 	ExportVariable x0; | ||||
| 	/** Current state feedback deviation. */ | ||||
| 	ExportVariable Dx0; | ||||
| 
 | ||||
| 	/** \name Objective evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateObjective; | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Condensing functions and variables */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction condensePrep; | ||||
| 	ExportFunction condenseFdb; | ||||
| 	ExportFunction expand; | ||||
| 
 | ||||
| 	ExportVariable T, E, QE, QGx, QDy, Qd; | ||||
| 
 | ||||
| 	ExportVariable H00, H10, H11; | ||||
| 	ExportVariable g0, g1; | ||||
| 
 | ||||
| 	ExportCholeskySolver cholSolver; | ||||
| 
 | ||||
| 	std::vector< unsigned > xBoundsIdx; | ||||
| 	ExportVariable lbValues, ubValues; | ||||
| 	ExportVariable lbAValues, ubAValues; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Helper functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction multGxd; | ||||
| 	ExportFunction moveGxT; | ||||
| 	ExportFunction multGxGx; | ||||
| 	ExportFunction multGxGu; | ||||
| 	ExportFunction moveGuE; | ||||
| 	ExportFunction setBlockH11; | ||||
| 	ExportFunction setBlockH11_R1; | ||||
| 	ExportFunction zeroBlockH11; | ||||
| 	ExportFunction copyHTH; | ||||
| 	ExportFunction multQ1d; | ||||
| 	ExportFunction multQN1d; | ||||
| 	ExportFunction multRDy; | ||||
| 	ExportFunction multQDy; | ||||
| 	ExportFunction multEQDy; | ||||
| 	ExportFunction multQETGx; | ||||
| 	ExportFunction zeroBlockH10; | ||||
| 	ExportFunction multEDu; | ||||
| 	ExportFunction multQ1Gx; | ||||
| 	ExportFunction multQN1Gx; | ||||
| 	ExportFunction multQ1Gu; | ||||
| 	ExportFunction multQN1Gu; | ||||
| 	ExportFunction zeroBlockH00; | ||||
| 	ExportFunction multCTQC; | ||||
| 
 | ||||
| 	ExportFunction macCTSlx; | ||||
| 	ExportFunction macETSlu; | ||||
| 
 | ||||
| 	ExportFunction multHxC; | ||||
| 	ExportFunction multHxE; | ||||
| 	ExportFunction macHxd; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Contraint evaluation variables */ | ||||
| 	/** @{ */ | ||||
| 	ExportVariable A10; | ||||
| 	ExportVariable A20; | ||||
| 	ExportVariable pacA01Dx0; | ||||
| 	ExportVariable pocA02Dx0; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name RTI related */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 
 | ||||
| 	ExportFunction getKKT; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Covariance calculation varibables and functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportVariable CEN, sigmaTmp, sigma, sigmaN; | ||||
| 	ExportFunction calculateCovariance; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name qpOASES interface variables */ | ||||
| 	/** @{ */ | ||||
| 	/** Variable containing the QP Hessian matrix. */ | ||||
| 	ExportVariable H; | ||||
| 	/** Variable containing factorization of the QP Hessian matrix; R' * R = H. */ | ||||
| 	ExportVariable R; | ||||
| 	/** Variable containing the QP constraint matrix. */ | ||||
| 	ExportVariable A; | ||||
| 	/** Variable containing the QP gradient. */ | ||||
| 	ExportVariable g; | ||||
| 	/** Variable containing the lower limits on QP variables. */ | ||||
| 	ExportVariable lb; | ||||
| 	/** Variable containing the upper limits on QP variables. */ | ||||
| 	ExportVariable ub; | ||||
| 	/** Variable containing lower limits on QP constraints. */ | ||||
| 	ExportVariable lbA; | ||||
| 	/** Variable containing upper limits on QP constraints. */ | ||||
| 	ExportVariable ubA; | ||||
| 	/** Variable containing the primal QP variables. */ | ||||
| 	ExportVariable xVars; | ||||
| 	/** Variable containing the dual QP variables. */ | ||||
| 	ExportVariable yVars; | ||||
| 	/** @} */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_CONDENSED_HPP
 | ||||
| @ -1,227 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_forces.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2012 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_FORCES_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_FORCES_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportForcesInterface; | ||||
| class ExportForcesGenerator; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief A class for export of an OCP solver using sparse QP solver FORCES | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExportGaussNewtonForces allows export of and OCP solver using | ||||
|  *	the generalized Gauss-Newton method. The underlying QP is solved using the | ||||
|  *	structured sparse QP solver FORCES. | ||||
|  * 
 | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportGaussNewtonForces : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonForces(	UserInteraction* _userInteraction = 0, | ||||
| 								const std::string& _commonHeaderName = "" | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	*/ | ||||
| 	virtual ~ExportGaussNewtonForces( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| 	unsigned getNumLowerBounds( ) const; | ||||
| 
 | ||||
| 	unsigned getNumUpperBounds( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| private: | ||||
| 	/** Current state feedback. */ | ||||
| 	ExportVariable x0; | ||||
| 
 | ||||
| 	/** \name Objective evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateObjective; | ||||
| 
 | ||||
| 	std::vector< ExportVariable > objHessians; | ||||
| 	std::vector< ExportVariable > objGradients; | ||||
| 
 | ||||
| 	ExportFunction setStageH; | ||||
| 	ExportFunction setStagef; | ||||
| 
 | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 	ExportFunction setObjS1; | ||||
| 
 | ||||
| 	bool diagH; | ||||
| 	bool diagHN; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Constraint evaluation */ | ||||
| 	/** @{ */ | ||||
| 	std::vector< ExportVariable > conLB; | ||||
| 	std::vector< ExportVariable > conUB; | ||||
| 	ExportVariable lbValues, ubValues; | ||||
| 
 | ||||
| 	unsigned numLB; | ||||
| 	unsigned numUB; | ||||
| 
 | ||||
| 	std::vector< std::vector< unsigned > > conLBIndices, conUBIndices; | ||||
| 	std::vector< unsigned > conABDimensions; | ||||
| 	std::vector< std::vector< double > > conLBValues, conUBValues; | ||||
| 
 | ||||
| 	ExportFunction evaluateConstraints; | ||||
| 	ExportFunction conSetGxGu; | ||||
| 	ExportVariable conStageC; | ||||
| 
 | ||||
| 	std::vector< ExportVariable > conC; | ||||
| 	std::vector< ExportVariable > cond; | ||||
| 	ExportFunction conSetd; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name RTI related */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 
 | ||||
| 	ExportFunction getKKT; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Helper functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction acc; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name QP interface */ | ||||
| 	/** @{ */ | ||||
| 	std::string qpModuleName; | ||||
| 	std::string qpObjPrefix; | ||||
| 
 | ||||
| 	std::shared_ptr< ExportForcesInterface > qpInterface; | ||||
| 	std::shared_ptr< ExportForcesGenerator > qpGenerator; | ||||
| 	/** @} */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_FORCES_HPP
 | ||||
| @ -1,212 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_generic.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2017 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_GENERIC_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_GENERIC_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief TBD | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *  TBD | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportGaussNewtonGeneric : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonGeneric(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	*/ | ||||
| 	virtual ~ExportGaussNewtonGeneric( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| private: | ||||
| 	/** Current state feedback. */ | ||||
| 	ExportVariable x0; | ||||
| 
 | ||||
| 	/** \name Objective evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateObjective; | ||||
| 
 | ||||
| 	ExportFunction setStagef; | ||||
| 
 | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjS1; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 
 | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Constraint evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateConstraints; | ||||
| 	ExportFunction setStagePac; | ||||
| 	unsigned qpDimHtot; | ||||
| 	unsigned qpDimH; | ||||
| 	unsigned qpDimHN; | ||||
| 	std::vector< unsigned > qpConDim; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name RTI related */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 
 | ||||
| 	ExportFunction getKKT; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Helper functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction acc; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name QP interface */ | ||||
| 	/** @{ */ | ||||
| 
 | ||||
| 	ExportVariable qpQ, qpQf, qpS, qpR; | ||||
| 
 | ||||
| 	ExportVariable qpq, qpqf, qpr; | ||||
| 	ExportVariable qpx, qpu; | ||||
| 
 | ||||
| 	ExportVariable evLbValues, evUbValues; | ||||
|     ExportVariable evLbAValues, evUbAValues; | ||||
| 	ExportVariable qpLb, qpUb; | ||||
| 
 | ||||
| 	ExportVariable qpLbA, qpUbA; | ||||
| 
 | ||||
| 	ExportVariable sigmaN; | ||||
| 
 | ||||
| 	ExportVariable qpLambda, qpMu, qpSlacks; | ||||
| 
 | ||||
| 	ExportVariable nIt; | ||||
| 
 | ||||
| //	ExportVariable qpWork;
 | ||||
| 	/** @} */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_GENERIC_HPP
 | ||||
| @ -1,217 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_hpmpc.hpp | ||||
|  *    \author Milan Vukov, Niels van Duijkeren | ||||
|  *    \date 2016 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_HPMPC_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_HPMPC_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportHpmpcInterface; | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief TBD | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *  TBD | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportGaussNewtonHpmpc : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonHpmpc(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	*/ | ||||
| 	virtual ~ExportGaussNewtonHpmpc( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| private: | ||||
| 	/** Current state feedback. */ | ||||
| 	ExportVariable x0; | ||||
| 
 | ||||
| 	/** \name Objective evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateObjective; | ||||
| 
 | ||||
| 	ExportFunction setStagef; | ||||
| 
 | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjS1; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 
 | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Constraint evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateConstraints; | ||||
| 	ExportFunction setStagePac; | ||||
| 	unsigned qpDimHtot; | ||||
| 	unsigned qpDimH; | ||||
| 	unsigned qpDimHN; | ||||
| 	std::vector< unsigned > qpConDim; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name RTI related */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 
 | ||||
| 	ExportFunction getKKT; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Helper functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction acc; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name QP interface */ | ||||
| 	/** @{ */ | ||||
| 
 | ||||
| 	ExportVariable qpQ, qpQf, qpS, qpR; | ||||
| 
 | ||||
| 	ExportVariable qpq, qpqf, qpr; | ||||
| 	ExportVariable qpx, qpu; | ||||
| 
 | ||||
| 	ExportVariable evLbValues, evUbValues; | ||||
| 	ExportVariable qpLb, qpUb; | ||||
| 
 | ||||
| 	ExportVariable qpLbA, qpUbA; | ||||
| 
 | ||||
| 	ExportVariable sigmaN; | ||||
| 
 | ||||
| 	ExportVariable qpLambda, qpMu, qpSlacks; | ||||
| 
 | ||||
| 	ExportVariable nIt; | ||||
| 
 | ||||
| //	ExportVariable qpWork;
 | ||||
| 
 | ||||
| 	std::shared_ptr< ExportHpmpcInterface > qpInterface; | ||||
| 	/** @} */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_HPMPC_HPP
 | ||||
| @ -1,222 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_gauss_newton_qpdunes.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_QPDUNES_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_QPDUNES_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_nlp_solver.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportQpDunesInterface; | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for export of an OCP solver using sparse QP solver qpDUNES | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExportGaussNewtonQpDunes allows export of and OCP solver using | ||||
|  *	the generalized Gauss-Newton method. The underlying QP is solved using the | ||||
|  *	structured sparse QP solver qpDUNES. | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportGaussNewtonQpDunes : public ExportNLPSolver | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportGaussNewtonQpDunes(	UserInteraction* _userInteraction = 0, | ||||
| 								const std::string& _commonHeaderName = "" | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	*/ | ||||
| 	virtual ~ExportGaussNewtonQpDunes( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ); | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									); | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	unsigned getNumQPvars( ) const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of an objective evaluation:
 | ||||
| 	 *   - functions and derivatives evaulation | ||||
| 	 *   - creating Hessians and gradients | ||||
| 	 * | ||||
| 	 *   \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupObjectiveEvaluation( void ); | ||||
| 
 | ||||
| 	/** Set-up evaluation of constraints
 | ||||
| 	 *   - box constraints on states and controls | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( void ); | ||||
| 
 | ||||
| 	/** Initialization of all member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ); | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm. */ | ||||
| 	virtual returnValue setupEvaluation( ); | ||||
| 
 | ||||
| 	/** Setup of the glue code for the QP solver interaction. */ | ||||
| 	virtual returnValue setupQPInterface( ); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Current state feedback. */ | ||||
| 	ExportVariable x0; | ||||
| 
 | ||||
| 	/** \name QP interface variables */ | ||||
| 	/** @{ */ | ||||
| 	ExportVariable qpH; | ||||
| 	ExportVariable qpg; | ||||
| 	ExportVariable qpgN; | ||||
| 
 | ||||
| 	ExportVariable qpC; | ||||
| 	ExportVariable qpc; | ||||
| 	ExportVariable qpLb0, qpUb0; | ||||
| 	ExportVariable qpLb, qpUb; | ||||
| 
 | ||||
| 	ExportVariable lbValues, ubValues; | ||||
| 
 | ||||
| 	ExportVariable qpA; | ||||
| 	ExportVariable qpLbA, qpUbA; | ||||
| 
 | ||||
| 	ExportVariable qpPrimal, qpLambda, qpMu; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Objective evaluation. */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateObjective; | ||||
| 
 | ||||
| 	ExportFunction setStageH; | ||||
| 	ExportFunction setStagef; | ||||
| 
 | ||||
| 	ExportFunction setObjQ1Q2; | ||||
| 	ExportFunction setObjR1R2; | ||||
| 	ExportFunction setObjQN1QN2; | ||||
| 
 | ||||
| 	bool diagH, diagHN; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Constraint evaluation */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction evaluateConstraints; | ||||
| 	ExportFunction setStagePac; | ||||
| 	std::vector< unsigned > qpConDim; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name RTI related */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction preparation; | ||||
| 	ExportFunction feedback; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name qpDUNES interface functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction cleanup; | ||||
| 	ExportFunction shiftQpData; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Auxiliary functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction getKKT; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Helper functions */ | ||||
| 	/** @{ */ | ||||
| 	ExportFunction acc; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** qpDUNES interface object. */ | ||||
| 	std::shared_ptr< ExportQpDunesInterface > qpInterface; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_GAUSS_NEWTON_QPDUNES_HPP
 | ||||
| @ -1,91 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_hessian_regularization.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_HESSIAN_REG_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_HESSIAN_REG_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for generating code implementing a symmetric EigenValue Decomposition. | ||||
|  * | ||||
|  *	\ingroup ExportHessianRegularization | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExportHessianRegularization : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _moduleName		    Module name for customization. | ||||
|      *	@param[in] _modulePrefix	    Module name for customization. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportHessianRegularization(	const std::string& _sourceFileName, | ||||
|                                     const std::string& _moduleName = "acado", | ||||
|                                     const std::string& _modulePrefix = "ACADO", | ||||
|                                     const std::string& _commonHeaderName = "", | ||||
|                                     const std::string& _realString = "double", | ||||
|                                     const std::string& _intString = "int", | ||||
|                                     int _precision = 16, | ||||
|                                     const std::string& _commentString = std::string() | ||||
|                                     ); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportHessianRegularization() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	uint DIM, double eps ); | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| 	std::string moduleName; | ||||
|     std::string modulePrefix; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_HESSIAN_REG_HPP
 | ||||
| @ -1,96 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_hpmpc_interface.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_HPMPC_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_HPMPC_INTERFACE_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Interface generator for the HPMPC QP solver | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportHpmpcInterface : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentstd::string		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportHpmpcInterface(	const std::string& _fileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportHpmpcInterface( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
|     returnValue configure(	const unsigned _maxIter, | ||||
| 							const unsigned _printLevel, | ||||
| 							bool _useSinglePrecision, | ||||
| 							bool _warmStart, | ||||
| 							const std::string& _Hx, | ||||
| 							const std::string& _Hu, | ||||
| 							const std::string& _lbA, | ||||
| 							const std::string& _ubA, | ||||
| 							const unsigned _DimH, | ||||
| 							const std::vector< unsigned >& _conDim, | ||||
| 							const unsigned _NI, | ||||
| 							const unsigned _NX, | ||||
| 							const unsigned _NU | ||||
| 												); | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_HPMPC_INTERFACE_HPP
 | ||||
| @ -1,144 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_index.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_INDEX_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_INDEX_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_data.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportIndexNode; | ||||
| class ExportArgument; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Defines a scalar-valued index variable to be used for exporting code. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportIndex defines a scalar-valued index variable to be used for 
 | ||||
|  *	exporting code. Instances of this class can be used similar to usual integers 
 | ||||
|  *	but offer additional functionality, e.g. they allow to export arithmetic 
 | ||||
|  *	expressions involving indices of the form: | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| class ExportIndex : public ExportData | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	ExportIndex(); | ||||
| 
 | ||||
| 	ExportIndex(	const int _value ); | ||||
| 
 | ||||
| 	explicit ExportIndex(	const std::string& _name, | ||||
| 							const std::string& _prefix = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	ExportIndexNode* operator->(); | ||||
| 
 | ||||
| 	const ExportIndexNode* operator->() const; | ||||
| 
 | ||||
| 	operator ExportArgument(); | ||||
| 
 | ||||
| 	friend ExportIndex operator+(	const ExportIndex& _arg1, | ||||
| 									const ExportIndex& _arg2 | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	friend ExportIndex operator-(	const ExportIndex& _arg1, | ||||
| 									const ExportIndex& _arg2 | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	friend ExportIndex operator*(	const ExportIndex& _arg1, | ||||
| 									const ExportIndex& _arg2 | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 	friend ExportIndex operator/(	const ExportIndex& _arg1, | ||||
| 									const ExportIndex& _arg2 | ||||
| 									); | ||||
| 
 | ||||
| 	friend ExportIndex operator%(	const ExportIndex& _arg1, | ||||
| 									const ExportIndex& _arg2 | ||||
| 									); | ||||
| 
 | ||||
| 	friend std::string operator==(	const ExportIndex& _arg1, | ||||
| 									const ExportIndex& _arg2 | ||||
| 									); | ||||
| 
 | ||||
| 	virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 												const std::string& _realString = "real_t", | ||||
| 												const std::string& _intString = "int", | ||||
| 												int _precision = 16 | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Returns a string containing the value of the index.
 | ||||
| 	 * | ||||
| 	 *	\return std::string containing the value of the index. | ||||
| 	 */ | ||||
| 	const std::string get( ) const; | ||||
| 
 | ||||
| 	/** Returns the given value of the index (if defined).
 | ||||
| 	 * | ||||
| 	 *	\return Given value of the index or "undefinedValue". | ||||
| 	 */ | ||||
| 	int getGivenValue( ) const; | ||||
| 
 | ||||
| 	/** Returns whether the index is set to a given value.
 | ||||
| 	 * | ||||
| 	 *	\return true  iff index is set to a given value, \n | ||||
| 	 *	        false otherwise | ||||
| 	 */ | ||||
| 	bool isGiven( ) const; | ||||
| 
 | ||||
| 	bool isBinary() const; | ||||
| 
 | ||||
| 	bool isVariable() const; | ||||
| }; | ||||
| 
 | ||||
| struct ExportIndexComparator | ||||
| { | ||||
|     bool operator() (const ExportIndex& val1, const ExportIndex& val2) const | ||||
|     { | ||||
|     	int tmp = std::string( val1.getName() ).compare( std::string( val2.getName() ) ); | ||||
| 
 | ||||
|     	return (tmp < 0) ? true : false; | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| const ExportIndex emptyConstExportIndex( int( 0 ) ); | ||||
| const ExportIndex constExportIndexValueOne( int( 1 ) ); | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_INDEX_HPP
 | ||||
| @ -1,163 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_index_node.hpp | ||||
|  *    \author Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_INDEX_NODE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_INDEX_NODE_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_data_internal.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| #include <acado/code_generation/export_index_node.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| enum ExportVariableType | ||||
| { | ||||
| 	EVT_VARIABLE, | ||||
| 	EVT_VALUE, | ||||
| 	EVT_BINARY_OPERATOR | ||||
| }; | ||||
| 
 | ||||
| class ExportIndexNode : public ExportDataInternal | ||||
| { | ||||
| public: | ||||
| 	ExportIndexNode(	const std::string& _name, | ||||
| 						const std::string& _prefix, | ||||
| 						const int _factor = 1, | ||||
| 						const int _offset = 0) | ||||
| 	:	ExportDataInternal(_name, INT, ACADO_LOCAL, _prefix) | ||||
| 	{ | ||||
| 		if ( _factor ) | ||||
| 		{ | ||||
| 			varType = EVT_VARIABLE; | ||||
| 			value = 0; | ||||
| 			factor = _factor; | ||||
| 			offset = _offset; | ||||
| 			op = ESO_UNDEFINED; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			varType = EVT_VALUE; | ||||
| 			value = _offset; | ||||
| 			factor = 1; | ||||
| 			offset = 0; | ||||
| 			op = ESO_UNDEFINED; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	explicit ExportIndexNode(	const int _value ) | ||||
| 	:	ExportDataInternal("defaultIndexName", INT, ACADO_LOCAL, ""), | ||||
| 	 	varType( EVT_VALUE ), value( _value ), factor( 1 ), offset( 0 ), op( ESO_UNDEFINED ) | ||||
| 	{} | ||||
| 
 | ||||
| 	ExportIndexNode(	ExportStatementOperator _op, | ||||
| 						const ExportIndex& _arg1, | ||||
| 						const ExportIndex& _arg2 | ||||
| 						) | ||||
| 	:	ExportDataInternal("defaultIndexName", INT, ACADO_LOCAL, ""), | ||||
| 	 	varType( EVT_BINARY_OPERATOR ), value( 0 ), factor( 1 ), offset( 0 ), | ||||
| 	 	op( _op ), left( _arg1 ), right( _arg2 ) | ||||
| 	{} | ||||
| 
 | ||||
| 	virtual ~ExportIndexNode() | ||||
| 	{} | ||||
| 
 | ||||
| 	virtual ExportIndexNode* clone() const | ||||
| 	{ | ||||
| 		return new ExportIndexNode( *this ); | ||||
| 	} | ||||
| 
 | ||||
| 	virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 												const std::string& _realString = "real_t", | ||||
| 												const std::string& _intString = "int", | ||||
| 												int _precision = 16 | ||||
| 												) const; | ||||
| 
 | ||||
| 	/// Returns a string containing the value of the index.
 | ||||
| 	const std::string get( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns the given value of the index (if defined).
 | ||||
| 	 * | ||||
| 	 *	\return Given value of the index or 0 in case the index is undefined. | ||||
| 	 */ | ||||
| 	const int getGivenValue( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns whether the index is set to a given value.
 | ||||
| 	 * | ||||
| 	 *	\return true  iff index is set to a given value, \n | ||||
| 	 *	        false otherwise | ||||
| 	 */ | ||||
| 	virtual bool isGiven( ) const; | ||||
| 
 | ||||
| 	bool isBinary() const | ||||
| 	{ | ||||
| 		if (varType == EVT_BINARY_OPERATOR) | ||||
| 			return true; | ||||
| 
 | ||||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	bool isVariable() const | ||||
| 	{ | ||||
| 		if (varType == EVT_VARIABLE) | ||||
| 			return true; | ||||
| 
 | ||||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	const int getFactor( ) const | ||||
| 	{ | ||||
| 		return factor; | ||||
| 	} | ||||
| 
 | ||||
| 	const int getOffset( ) const | ||||
| 	{ | ||||
| 		return offset; | ||||
| 	} | ||||
| 
 | ||||
| private: | ||||
| 	ExportVariableType varType; | ||||
| 	int value; | ||||
| 	int factor; | ||||
| 	int offset; | ||||
| 
 | ||||
| 	int op; | ||||
| 	ExportIndex left; | ||||
| 	ExportIndex right; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_INDEX_NODE_HPP
 | ||||
| 
 | ||||
| @ -1,140 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_module.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2010 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_MODULE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_MODULE_HPP | ||||
| 
 | ||||
| #include <acado/user_interaction/user_interaction.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportStatementBlock; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief User-interface to automatically generate algorithms for fast model predictive control | ||||
|  * | ||||
|  *	\ingroup UserInterfaces | ||||
|  * | ||||
|  *  The class ExportModule is a user-interface to automatically generate tailored | ||||
|  *  algorithms for fast model predictive control. It takes an optimal control 
 | ||||
|  *  problem (OCP) formulation and generates code based on given user options. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class ExportModule : public UserInteraction | ||||
| { | ||||
| //
 | ||||
| // PUBLIC MEMBER FUNCTIONS:
 | ||||
| //
 | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor. */ | ||||
| 	ExportModule( ); | ||||
| 
 | ||||
| 	/** Destructor.
 | ||||
| 	 */ | ||||
| 	virtual ~ExportModule( ); | ||||
| 
 | ||||
| 	/** Exports all files of the auto-generated code into the given directory.
 | ||||
| 	 * | ||||
| 	 *	@param[in] dirName			Name of directory to be used to export files. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportCode(	const std::string& dirName, | ||||
| 									const std::string& _realString = "real_t", | ||||
| 									const std::string& _intString = "int", | ||||
| 									int _precision = 16 | ||||
| 									) = 0; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Exports main header file for using the exported algorithm.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _dirName			Name of directory to be used to export file. | ||||
| 	 *	@param[in] _fileName		Name of file to be exported. | ||||
| 	 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue exportAcadoHeader(	const std::string& _dirName, | ||||
| 											const std::string& _fileName, | ||||
| 											const std::string& _realString = "real_t", | ||||
| 											const std::string& _intString = "int", | ||||
| 											int _precision = 16 | ||||
| 											) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Collects all data declarations of the auto-generated sub-modules to given
 | ||||
| 	 *	list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN, \n | ||||
| 	 *	        RET_UNABLE_TO_EXPORT_CODE | ||||
| 	 */ | ||||
| 	virtual returnValue collectDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Collects all function (forward) declarations of the auto-generated sub-modules
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN, \n | ||||
| 	 *	        RET_UNABLE_TO_EXPORT_CODE | ||||
| 	 */ | ||||
| 	virtual returnValue collectFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const = 0; | ||||
| 
 | ||||
| 	/** Sets-up default options.
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue setupOptions( ); | ||||
| 
 | ||||
| 	/** Name of common header file. */ | ||||
| 	std::string commonHeaderName; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_MODULE_HPP
 | ||||
| @ -1,378 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_nlp_solver.hpp | ||||
|  *    \author Milan Vukov, Rien Quirynen | ||||
|  *    \date 2012 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_NLP_SOLVER_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_NLP_SOLVER_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| 
 | ||||
| #include <acado/code_generation/export_algorithm_factory.hpp> | ||||
| #include <acado/code_generation/integrators/integrator_export.hpp> | ||||
| 
 | ||||
| #include <acado/code_generation/export_cholesky_decomposition.hpp> | ||||
| #include <acado/code_generation/linear_solvers/householder_qr_export.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class OCP; | ||||
| class Objective; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Base class for export of NLP/OCP solvers. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	This base class is basically used to extract information from an OCP | ||||
|  *	object and prepare low level structures. Later, a derived class is | ||||
|  *	actually building the solver to solve an OCP problem. | ||||
|  * 
 | ||||
|  *	\author Milan Vukov | ||||
|  * | ||||
|  *	\note Based on code originally developed by Boris Houska and Hand Joachim Ferreau. | ||||
|  */ | ||||
| class ExportNLPSolver : public ExportAlgorithm | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 */ | ||||
| 	ExportNLPSolver(	UserInteraction* _userInteraction = 0, | ||||
| 						const std::string& _commonHeaderName = "" | ||||
| 						); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportNLPSolver( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Initializes export of an algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup( ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Assigns module for exporting a tailored integrator.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _integrator	Integrator module. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue setIntegratorExport(	IntegratorExportPtr const _integrator | ||||
| 										); | ||||
| 
 | ||||
| 	/** Assigns new constant for Levenberg-Marquardt regularization.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _levenbergMarquardt		Non-negative constant for Levenberg-Marquardt regularization. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue setLevenbergMarquardt(	double _levenbergMarquardt | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	/** Adds all data declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 												ExportStruct dataStruct = ACADO_ANY | ||||
| 												) const; | ||||
| 
 | ||||
| 	/** Adds all function (forward) declarations of the auto-generated condensing algorithm
 | ||||
| 	 *	to given list of declarations. | ||||
| 	 * | ||||
| 	 *	@param[in] declarations		List of declarations. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 													) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Exports source code of the auto-generated condensing algorithm
 | ||||
| 	 *  into the given directory. | ||||
| 	 * | ||||
| 	 *	@param[in] code				Code block containing the auto-generated condensing algorithm. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 									) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 	/** Returns number of variables in underlying QP.
 | ||||
| 	 * | ||||
| 	 *  \return Number of variables in underlying QP | ||||
| 	 */ | ||||
| 	virtual unsigned getNumQPvars( ) const = 0; | ||||
| 
 | ||||
| 	/** Returns whether a single shooting state discretization is used.
 | ||||
| 	 * | ||||
| 	 *	\return true  iff single shooting state discretization is used, \n | ||||
| 	 *	        false otherwise | ||||
| 	 */ | ||||
| 	bool performsSingleShooting( ) const; | ||||
| 
 | ||||
| 	/** Set objective function
 | ||||
| 	 *  \return SUCCESSFUL_RETURN, \n | ||||
| 	 *          RET_INITIALIZE_FIRST, \n | ||||
| 	 *          RET_INVALID_OBJECTIVE_FOR_CODE_EXPORT, \n | ||||
| 	 *			RET_INVALID_ARGUMENTS | ||||
| 	 * */ | ||||
| 	returnValue setObjective(const Objective& _objective); | ||||
| 	returnValue setLSQObjective(const Objective& _objective); | ||||
| 	returnValue setGeneralObjective(const Objective& _objective); | ||||
| 
 | ||||
| 	/** Set the "complex" path and point constraints
 | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 * */ | ||||
| 	returnValue setConstraints(const OCP& _ocp); | ||||
| 
 | ||||
| 	/** Get the number of complex constraints - path + point constraints.
 | ||||
| 	 *  \return Number of complex constraints | ||||
| 	 * */ | ||||
| 	unsigned getNumComplexConstraints( void ); | ||||
| 
 | ||||
|     /** Get the number of path constraints.
 | ||||
|      *  \return Number of path constraints | ||||
|      * */ | ||||
|     unsigned getNumPathConstraints( void ); | ||||
| 
 | ||||
| 	/** Return type of weighting matrices.
 | ||||
| 	 *  \return Type of weighting matrices. */ | ||||
| 	unsigned weightingMatricesType( void ) const; | ||||
| 
 | ||||
| 	/** Indicates whether initial state is fixed. */ | ||||
| 	bool initialStateFixed( ) const; | ||||
| 
 | ||||
| 	/** Indicates whether linear terms in the objective are used. */ | ||||
| 	bool usingLinearTerms() const; | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Setting up of a model simulation:
 | ||||
| 	 *   - model integration | ||||
| 	 *   - sensitivity generation | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupSimulation( void ); | ||||
| 
 | ||||
| 	/** Initialization of member variables.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupVariables( ) = 0; | ||||
| 
 | ||||
| 	/** Exports source code containing the multiplication routines of the algorithm.
 | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setupMultiplicationRoutines( ) = 0; | ||||
| 
 | ||||
| 	/** Exports source code containing the evaluation routines of the algorithm. */ | ||||
| 	virtual returnValue setupEvaluation( ) = 0; | ||||
| 
 | ||||
| 	/** Setup of functions for evaluation of constraints. */ | ||||
| 	virtual returnValue setupConstraintsEvaluation( ) = 0; | ||||
| 
 | ||||
| 	/** Setup of functions for evaluation of auxiliary functions. */ | ||||
| 	returnValue setupAuxiliaryFunctions(); | ||||
| 
 | ||||
| 	/** Setup the function for evaluating the actual objective value. */ | ||||
| 	virtual returnValue setupGetObjective(); | ||||
| 
 | ||||
| 	/** Setup the function for evaluating the actual LSQ objective value. */ | ||||
| 	virtual returnValue setupGetLSQObjective(); | ||||
| 
 | ||||
| 	/** Setup the function for evaluating the actual objective value. */ | ||||
| 	virtual returnValue setupGetGeneralObjective(); | ||||
| 
 | ||||
| 	/** Setup of functions and variables for evaluation of arrival cost. */ | ||||
| 	returnValue setupArrivalCostCalculation(); | ||||
| 
 | ||||
| 	/** Setup main initialization code for the solver */ | ||||
| 	virtual returnValue setupInitialization(); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** \name Evaluation of model dynamics. */ | ||||
| 	/** @{ */ | ||||
| 
 | ||||
| 	/** Module for exporting a tailored integrator. */ | ||||
| 	IntegratorExportPtr integrator; | ||||
| 
 | ||||
| 	ExportFunction modelSimulation; | ||||
| 
 | ||||
| 	ExportVariable state; | ||||
| 	ExportVariable x; | ||||
| 	ExportVariable z; | ||||
| 	ExportVariable u; | ||||
| 	ExportVariable od; | ||||
| 	ExportVariable d; | ||||
| 
 | ||||
| 	ExportVariable evGx; // stack of sensitivities w.r.t. x
 | ||||
| 	ExportVariable evGu; // stack of sensitivities w.r.t. u
 | ||||
| 
 | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Evaluation of objective */ | ||||
| 	/** @{ */ | ||||
| 
 | ||||
| 	/** Non-negative constant for Levenberg-Marquardt regularization. */ | ||||
| 	double levenbergMarquardt; | ||||
| 
 | ||||
| 	ExportVariable y, yN, Dy, DyN; | ||||
| 
 | ||||
| 	// lagrange multipliers
 | ||||
| 	ExportVariable mu; | ||||
| 
 | ||||
| 	ExportVariable objg, objS, objSEndTerm; | ||||
| 	ExportVariable objEvFx, objEvFu, objEvFxEnd; // aliasing
 | ||||
| 	ExportVariable objEvFxx, objEvFxu, objEvFuu, objEvFxxEnd; // aliasing
 | ||||
| 
 | ||||
| 	ExportVariable objAuxVar, objValueIn, objValueOut; | ||||
| 	ExportAcadoFunction evaluateStageCost; | ||||
| 	ExportAcadoFunction evaluateTerminalCost; | ||||
| 
 | ||||
| 	ExportVariable Q1, Q2; | ||||
| 	ExportVariable R1, R2; | ||||
| 	ExportVariable S1; | ||||
| 	ExportVariable QN1, QN2; | ||||
| 
 | ||||
| 	ExportVariable objSlx, objSlu; | ||||
| 
 | ||||
| 	bool diagonalH, diagonalHN; | ||||
| 
 | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Evaluation of box constraints*/ | ||||
| 	/** @{ */ | ||||
| 	VariablesGrid uBounds; | ||||
| 	VariablesGrid xBounds; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Evaluation of path constraints */ | ||||
| 	/** @{ */ | ||||
| 	unsigned dimPacH; | ||||
| 	ExportAcadoFunction evaluatePathConstraints; | ||||
| 	ExportVariable conAuxVar; | ||||
| 	ExportVariable conValueIn; | ||||
| 	ExportVariable conValueOut; | ||||
| 
 | ||||
| 	DVector lbPathConValues, ubPathConValues; | ||||
| 
 | ||||
| 	ExportVariable pacEvH; | ||||
| 	ExportVariable pacEvHx, pacEvHu, pacEvHxd; | ||||
| 	ExportVariable pacEvDDH; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Evaluation of point constraints */ | ||||
| 	/** @{ */ | ||||
| 	unsigned dimPocH; | ||||
| 	std::vector< std::shared_ptr< ExportAcadoFunction > > evaluatePointConstraints; | ||||
| 	DVector lbPointConValues, ubPointConValues; | ||||
| 
 | ||||
| 	std::vector< DVector > pocLbStack, pocUbStack; | ||||
| 
 | ||||
| 	ExportVariable pocEvH; | ||||
| 	ExportVariable pocEvHx, pocEvHu, pocEvHxd; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Auxiliary functions */ | ||||
| 	/**  @{ */ | ||||
| 
 | ||||
| 	/** Main initialization function for the solver. */ | ||||
| 	ExportFunction initialize; | ||||
| 
 | ||||
| 	ExportFunction shiftStates; | ||||
| 	ExportFunction shiftControls; | ||||
| 	ExportFunction getObjective; | ||||
| 	ExportFunction initializeNodes; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| 	/** \name Arrival cost related */ | ||||
| 	/**  @{ */ | ||||
| 	ExportFunction updateArrivalCost; | ||||
| 
 | ||||
| 	ExportCholeskyDecomposition cholObjS; | ||||
| 	ExportCholeskyDecomposition cholSAC; | ||||
| 
 | ||||
| 	ExportHouseholderQR acSolver; | ||||
| 
 | ||||
| 	ExportVariable acA, acb, acP, acTmp; | ||||
| 	// acWL and acVL are assumed to be upper triangular matrices
 | ||||
| 	ExportVariable acWL, acVL, acHx, acHu, acXx, acXu, acXTilde, acHTilde; | ||||
| 
 | ||||
| 	// Older stuff; TODO make this more unique
 | ||||
| 	ExportVariable SAC, xAC, DxAC; | ||||
| 
 | ||||
| 	ExportFunction regularizeHessian; | ||||
| 	ExportFunction regularization; | ||||
| 	/** @} */ | ||||
| 
 | ||||
| private: | ||||
| 	returnValue setupResidualVariables(); | ||||
| 	returnValue setupObjectiveLinearTerms(const Objective& _objective); | ||||
| }; | ||||
| 
 | ||||
| /** Types of NLP/OCP solvers. */ | ||||
| enum ExportNLPType | ||||
| { | ||||
| 	GAUSS_NEWTON_CONDENSED, | ||||
| 	GAUSS_NEWTON_CN2, | ||||
| 	GAUSS_NEWTON_BLOCK_QPDUNES, | ||||
| 	GAUSS_NEWTON_BLOCK_FORCES, | ||||
| 	GAUSS_NEWTON_CN2_FACTORIZATION, | ||||
| 	GAUSS_NEWTON_FORCES, | ||||
| 	GAUSS_NEWTON_QPDUNES, | ||||
| 	GAUSS_NEWTON_HPMPC, | ||||
|     GAUSS_NEWTON_GENERIC, | ||||
| 	EXACT_HESSIAN_CN2, | ||||
| 	EXACT_HESSIAN_QPDUNES | ||||
| }; | ||||
| 
 | ||||
| /** Factory for creation of exported NLP/OCP solvers. */ | ||||
| typedef ExportAlgorithmFactory<ExportNLPSolver, ExportNLPType> NLPSolverFactory; | ||||
| 
 | ||||
| /** Shared pointer to an NLP solver. */ | ||||
| typedef std::shared_ptr< ExportNLPSolver > ExportNLPSolverPtr; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_NLP_SOLVER_HPP
 | ||||
| @ -1,106 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_qpdunes_interface.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2013 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_QPDUNES_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_QPDUNES_INTERFACE_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Interface generator for the qpDUNES QP solver | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportQpDunesInterface : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentstd::string		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportQpDunesInterface(	const std::string& _fileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportQpDunesInterface( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	const unsigned _maxIter, | ||||
| 							const unsigned _printLevel, | ||||
| 							const std::string& _HH, | ||||
| 							const std::string& _g, | ||||
| 							const std::string& _gN, | ||||
| 							const std::string& _CC, | ||||
| 							const std::string& _c, | ||||
| 							const std::string& _DD, | ||||
| 							const std::string& _lb0, | ||||
| 							const std::string& _ub0, | ||||
| 							const std::string& _lb, | ||||
| 							const std::string& _ub, | ||||
| 							const std::string& _lbA, | ||||
| 							const std::string& _ubA, | ||||
| 							const std::string& _primal, | ||||
| 							const std::string& _lambda, | ||||
| 							const std::string& _mu, | ||||
| 							const std::vector< unsigned >& conDim, | ||||
| 							const std::string& _initialStateFixed, | ||||
| 							const std::string& _diagH, | ||||
| 							const std::string& _diagHN, | ||||
| 							const unsigned _NI, | ||||
| 							const unsigned _NX, | ||||
| 							const unsigned _NU | ||||
| 							); | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_QPDUNES_INTERFACE_HPP
 | ||||
| @ -1,116 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_qpoases3_interface.hpp | ||||
|  *    \author Milan Vukov, Joachim Ferreau | ||||
|  *    \date 2012 - 2015 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_QPOASES3_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_QPOASES3_INTERFACE_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| #include <acado/code_generation/export_qpoases_interface.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for generating the glue code for interfacing qpOASES. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  * | ||||
|  *	\note Based on code originally developed by Hans Joachim Ferreau and Boris Houska. | ||||
|  */ | ||||
| class ExportQpOases3Interface : public ExportQpOasesInterface | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _headerFileName		Name of exported file for header file. | ||||
| 	 *	@param[in] _sourceFileName		Name of exported file for source file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportQpOases3Interface(	const std::string& _headerFileName, | ||||
| 								const std::string& _sourceFileName, | ||||
| 								const std::string& _commonHeaderName = "", | ||||
| 								const std::string& _realString = "real_t", | ||||
| 								const std::string& _intString = "int", | ||||
| 								int _precision = 16, | ||||
| 								const std::string& _commentString = std::string() | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportQpOases3Interface() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue configure(	const std::string& _prefix, | ||||
| 									const std::string& _solverDefine, | ||||
| 									const int nvmax, | ||||
| 									const int ncmax, | ||||
| 									const int nwsrmax, | ||||
| 									const std::string& _printLevel, | ||||
| 									bool _useSinglePrecision, | ||||
| 
 | ||||
| 									const std::string& _commonHeader, | ||||
| 									const std::string& _namespace, | ||||
| 									const std::string& _primalSolution, | ||||
| 									const std::string& _dualSolution, | ||||
| 									const std::string& _sigma, | ||||
| 									bool _hotstartQP, | ||||
| 									bool _externalCholesky, | ||||
| 									const std::string& _qpH, | ||||
| 									const std::string& _qpR, | ||||
| 									const std::string& _qpg, | ||||
| 									const std::string& _qpA, | ||||
| 									const std::string& _qplb, | ||||
| 									const std::string& _qpub, | ||||
| 									const std::string& _qplbA, | ||||
| 									const std::string& _qpubA | ||||
| 									); | ||||
| 
 | ||||
| 	/** Export the interface. */ | ||||
| 	virtual returnValue exportCode(); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_QPOASES3_INTERFACE_HPP
 | ||||
| @ -1,116 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_qpoases_interface.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2012 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_QPOASES_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_QPOASES_INTERFACE_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for generating the glue code for interfacing qpOASES. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  * | ||||
|  *	\note Based on code originally developed by Hans Joachim Ferreau and Boris Houska. | ||||
|  */ | ||||
| class ExportQpOasesInterface | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _headerFileName		Name of exported file for header file. | ||||
| 	 *	@param[in] _sourceFileName		Name of exported file for source file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportQpOasesInterface(	const std::string& _headerFileName, | ||||
| 							const std::string& _sourceFileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportQpOasesInterface() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue configure(	const std::string& _prefix, | ||||
| 									const std::string& _solverDefine, | ||||
| 									const int nvmax, | ||||
| 									const int ncmax, | ||||
| 									const int nwsrmax, | ||||
| 									const std::string& _printLevel, | ||||
| 									bool _useSinglePrecision, | ||||
| 									const std::string& _commonHeader, | ||||
| 									const std::string& _namespace, | ||||
| 									const std::string& _primalSolution, | ||||
| 									const std::string& _dualSolution, | ||||
| 									const std::string& _sigma, | ||||
| 									bool _hotstartQP, | ||||
| 									bool _externalCholesky, | ||||
| 									const std::string& _qpH, | ||||
| 									const std::string& _qpR, | ||||
| 									const std::string& _qpg, | ||||
| 									const std::string& _qpA, | ||||
| 									const std::string& _qplb, | ||||
| 									const std::string& _qpub, | ||||
| 									const std::string& _qplbA, | ||||
| 									const std::string& _qpubA | ||||
| 									); | ||||
| 
 | ||||
| 	/** Export the interface. */ | ||||
| 	virtual returnValue exportCode(); | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	ExportTemplatedFile qpoHeader; | ||||
| 	ExportTemplatedFile qpoSource; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_QPOASES_INTERFACE_HPP
 | ||||
| @ -1,113 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_simulink_interface.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2013 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_SIMULINK_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_SIMULINK_INTERFACE_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for generating the glue code and makefile | ||||
|  *	       for interfacing generated code and Simulink. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportSimulinkInterface | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _moduleName		    Module name for customization. | ||||
|      *	@param[in] _modulePrefix	    Module prefix for customization. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportSimulinkInterface(	const std::string& _makefileName, | ||||
| 								const std::string& _wrapperHeaderFileName, | ||||
| 								const std::string& _wrapperSourceFileName, | ||||
| 								const std::string& _moduleName = "acado", | ||||
|                                 const std::string& _modulePrefix = "ACADO", | ||||
| 								const std::string& _commonHeaderName = "", | ||||
| 								const std::string& _realString = "double", | ||||
| 								const std::string& _intString = "int", | ||||
| 								int _precision = 16, | ||||
| 								const std::string& _commentString = std::string() | ||||
| 								); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportSimulinkInterface() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	unsigned N, | ||||
| 							unsigned NX, | ||||
| 							unsigned NDX, | ||||
| 							unsigned NXA, | ||||
| 							unsigned NU, | ||||
| 							unsigned NP, | ||||
| 							unsigned NY, | ||||
| 							unsigned NYN, | ||||
| 							bool _initialStateFixed, | ||||
| 							unsigned _wMatrixType, | ||||
| 							bool _hardcodedConstraints, | ||||
| 							bool _useArrivalCost, | ||||
| 							bool _compCovMatrix, | ||||
| 							std::string _qpSolver | ||||
| 							); | ||||
| 
 | ||||
| 	/** Export the interface. */ | ||||
| 	returnValue exportCode(); | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| 	ExportTemplatedFile makefile; | ||||
| 	ExportTemplatedFile wrapperSource; | ||||
| 	ExportTemplatedFile wrapperHeader; | ||||
| 	std::string moduleName; | ||||
|     std::string modulePrefix; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_SIMULINK_INTERFACE_HPP
 | ||||
| @ -1,106 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_split_qpdunes_interface.hpp | ||||
|  *    \author Milan Vukov, Rien Quirynen | ||||
|  *    \date 2013 - 2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_SPLIT_QPDUNES_INTERFACE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_SPLIT_QPDUNES_INTERFACE_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Interface generator for the qpDUNES QP solver | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportSplitQpDunesInterface : public ExportTemplatedFile | ||||
| { | ||||
| public: | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentstd::string		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportSplitQpDunesInterface(	const std::string& _fileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportSplitQpDunesInterface( ) | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	const unsigned _maxIter, | ||||
| 							const unsigned _printLevel, | ||||
| 							const std::string& _HH, | ||||
| 							const std::string& _g, | ||||
| 							const std::string& _gN, | ||||
| 							const std::string& _CC, | ||||
| 							const std::string& _c, | ||||
| 							const std::string& _DD, | ||||
| 							const std::string& _lb0, | ||||
| 							const std::string& _ub0, | ||||
| 							const std::string& _lb, | ||||
| 							const std::string& _ub, | ||||
| 							const std::string& _lbA, | ||||
| 							const std::string& _ubA, | ||||
| 							const std::string& _primal, | ||||
| 							const std::string& _lambda, | ||||
| 							const std::string& _mu, | ||||
| 							const std::vector< unsigned >& conDim, | ||||
| 							const std::string& _initialStateFixed, | ||||
| 							const std::string& _diagH, | ||||
| 							const std::string& _diagHN, | ||||
| 							const unsigned _NI, | ||||
| 							const unsigned _NX, | ||||
| 							const unsigned _NU | ||||
| 							); | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif // ACADO_TOOLKIT_EXPORT_SPLIT_QPDUNES_INTERFACE_HPP
 | ||||
| @ -1,164 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_statement.hpp | ||||
|  *    \authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *    \date 2010 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_STATEMENT_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_STATEMENT_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| 
 | ||||
| #include <memory> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| class ExportIndex; | ||||
| class MemoryAllocator; | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Base class for all kind of statements to be exported by the code generation tool. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportStatement serves as a base class for all kind of statements to be exported 
 | ||||
|  *	by the code generation tool. | ||||
|  * | ||||
|  *	\authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportStatement | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Shared pointer to a statement. */ | ||||
| 		typedef std::shared_ptr< ExportStatement > StatementPtr; | ||||
| 
 | ||||
| 		/** A vector of shared pointer statements. */ | ||||
| 		typedef std::vector< StatementPtr > StatementPtrArray; | ||||
| 
 | ||||
| 		/** Shared pointer to a memory allocator */ | ||||
| 		typedef std::shared_ptr< MemoryAllocator > MemoryAllocatorPtr; | ||||
| 
 | ||||
| 		/** Default constructor. */ | ||||
|         ExportStatement( ); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportStatement(	const ExportStatement& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. */ | ||||
|         virtual ~ExportStatement( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExportStatement& operator=(	const ExportStatement& arg | ||||
| 									); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports data declaration of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream				Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 		/** Exports source code of the statement into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream				Name of file to be used to export statement. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const = 0; | ||||
| 
 | ||||
| 		/** Acquire an index. */ | ||||
| 		virtual ExportStatement& acquire( ExportIndex&  ) | ||||
| 		{ | ||||
| 			return *this; | ||||
| 		} | ||||
| 
 | ||||
| 		/** Release an index. */ | ||||
| 		virtual ExportStatement& release( const ExportIndex&  ) | ||||
| 		{ | ||||
| 			return *this; | ||||
| 		} | ||||
| 
 | ||||
| 		/** Set a memory allocator. */ | ||||
| 		virtual ExportStatement& allocate( MemoryAllocatorPtr  ) | ||||
| 		{ | ||||
| 			return *this; | ||||
| 		} | ||||
|         
 | ||||
|         
 | ||||
|     public: | ||||
|         static std::string fcnPrefix; | ||||
|         static std::string varPrefix; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_STATEMENT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,312 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *	\file include/acado/code_generation/export_statement_block.hpp | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  *	\date 2010-2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_STATEMENT_BLOCK_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_STATEMENT_BLOCK_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_statement.hpp> | ||||
| #include <acado/code_generation/export_argument.hpp> | ||||
| 
 | ||||
| #include <vector> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportFunction; | ||||
| class ExportAcadoFunction; | ||||
| class ExportFunctionDeclaration; | ||||
| class ExportVariable; | ||||
| class ExportIndex; | ||||
| class ExportDataDeclaration; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code for a block of statements. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	The class ExportStatementBlock allows to export code for a block of statements. | ||||
|  * | ||||
|  *	\authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| class ExportStatementBlock : public ExportStatement | ||||
| { | ||||
| 	//
 | ||||
| 	// PUBLIC MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	public: | ||||
| 
 | ||||
| 		/**< Default Constructor.
 | ||||
| 		 */ | ||||
| 		ExportStatementBlock( ); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportStatementBlock(	const ExportStatementBlock& arg | ||||
| 								); | ||||
| 
 | ||||
| 		/** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~ExportStatementBlock( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg	Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportStatementBlock& operator=(	const ExportStatementBlock& rhs | ||||
| 											); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds a statement to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _statement		Statement to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addStatement(	const ExportStatement& _statement | ||||
| 									); | ||||
| 
 | ||||
| 		/** Adds a string statement to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _statementString		std::string statement to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addStatement(	const std::string& _statementString | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds a function to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _function		Function to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addFunction(	const ExportFunction& _function | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds a function call to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _fName			Name of function to be called. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addFunctionCall(	const std::string& _fName, | ||||
| 										const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 										); | ||||
| 
 | ||||
| 		/** Adds a function call to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _f				Function to be called. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addFunctionCall(	const ExportFunction& _f, | ||||
| 										const ExportArgument& _argument1 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument2 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument3 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument4 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument5 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument6 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument7 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument8 = emptyConstExportArgument, | ||||
| 										const ExportArgument& _argument9 = emptyConstExportArgument | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds a variable declaration to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _data		Variable declaration to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addDeclaration(	const ExportVariable& _data, | ||||
| 									ExportStruct _dataStruct = ACADO_ANY | ||||
| 									); | ||||
| 
 | ||||
| 		/** Adds an index declaration to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _data		Index declaration to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addDeclaration(	const ExportIndex& _data, | ||||
| 									ExportStruct _dataStruct = ACADO_ANY | ||||
| 									); | ||||
| 
 | ||||
| 		/** Adds a function forward declaration to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _f			function forward declaration to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addDeclaration(	const ExportFunction& _f | ||||
| 									); | ||||
| 
 | ||||
| 		/** Adds a forward declaration of an ODE function to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _f			ODE function whose forward declaration is to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addDeclaration(	const ExportAcadoFunction& _f | ||||
| 									); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds a line break to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] num			Number of line breaks to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addLinebreak(	uint num = 1 | ||||
| 									); | ||||
| 
 | ||||
| 		/** Adds a comment to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _comment		Comment to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addComment(	const std::string& _comment | ||||
| 								); | ||||
| 
 | ||||
| 		/** Adds a comment preceded by a given number of blanks to the statement block.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _nBlanks		Number of blanks. | ||||
| 		 *	@param[in] _comment		Comment to be added. | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue addComment(	uint _nBlanks, | ||||
| 								const std::string& _comment | ||||
| 								); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns number of statement within statement block.
 | ||||
| 		 * | ||||
| 		 *  \return Number of statement within statement block | ||||
| 		 */ | ||||
| 		uint getNumStatements( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports data declaration of the statement block into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream				Name of file to be used to export statement block. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportDataDeclaration(	std::ostream& stream, | ||||
| 													const std::string& _realString = "real_t", | ||||
| 													const std::string& _intString = "int", | ||||
| 													int _precision = 16 | ||||
| 													) const; | ||||
| 
 | ||||
| 		/** Exports source code of the statement block into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream				Name of file to be used to export statement block. | ||||
| 		 *	@param[in] _realString		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Removes all statements to yield an empty statement block.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue clear( ); | ||||
| 
 | ||||
| 		/** Add a statement. */ | ||||
| 		friend ExportStatementBlock& operator<<(ExportStatementBlock& _block, const ExportStatement& _statement); | ||||
| 
 | ||||
| 		/** Add a string. */ | ||||
| 		friend ExportStatementBlock& operator<<(ExportStatementBlock& _block, const std::string& _statement); | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	// PROTECTED MEMBER FUNCTIONS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 	//
 | ||||
| 	// DATA MEMBERS:
 | ||||
| 	//
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		/** Array containing all statements of the statement block. */ | ||||
| 		StatementPtrArray statements; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #endif	// ACADO_TOOLKIT_EXPORT_STATEMENT_BLOCK_HPP
 | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  *	end of file | ||||
|  */ | ||||
| @ -1,106 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_statement_string.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska | ||||
|  *    \date 2010-2011 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_STATEMENT_STRING_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_STATEMENT_STRING_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_statement.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export code writing a string. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *  The class ExportStatementstd::string allows to export code writing a string. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska | ||||
|  */ | ||||
| class ExportStatementString : public ExportStatement | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor which optionally takes the string to be exported.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _statementstd::string		std::string to be exported. | ||||
| 		 */ | ||||
|         ExportStatementString(	const std::string& _statementString = std::string() | ||||
| 								); | ||||
| 
 | ||||
|         /** Destructor.
 | ||||
| 		 */ | ||||
|         virtual ~ExportStatementString( ); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportStatement* clone( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the string into given file. Its appearance can 
 | ||||
| 		 *  can be adjusted by various options. | ||||
| 		 * | ||||
| 		 *	@param[in] stream				Name of file to be used to export string. | ||||
| 		 *	@param[in] _realSstring		std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString		std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision		Number of digits to be used for exporting real values. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue exportCode(	std::ostream& stream, | ||||
| 										const std::string& _realString = "real_t", | ||||
| 										const std::string& _intString = "int", | ||||
| 										int _precision = 16 | ||||
| 										) const; | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		std::string statementString;					/**< std::string to be exported. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_STATEMENT_STRING_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,139 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_templated_file.hpp | ||||
|  *    \author Milan Vukov | ||||
|  *    \date 2012 - 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_TEMPLATED_FILE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_TEMPLATED_FILE_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_file.hpp> | ||||
| 
 | ||||
| #include <map> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportQpOasesInterface; | ||||
| class ExportSimulinkInterface; | ||||
| class ExportAuxiliaryFunctions; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows export of template files. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Milan Vukov | ||||
|  */ | ||||
| class ExportTemplatedFile : public ExportFile | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	friend class ExportQpOasesInterface; | ||||
| 	friend class ExportQpOases3Interface; | ||||
| 	friend class ExportSimulinkInterface; | ||||
| 	friend class ExportAuxiliaryFunctions; | ||||
| 	friend class ExportHessianRegularization; | ||||
| 	friend class ExportAuxiliarySimFunctions; | ||||
|     friend class OCPexport; | ||||
|     friend class SIMexport; | ||||
| 
 | ||||
|     /** Default constructor.
 | ||||
| 	 */ | ||||
| 	ExportTemplatedFile( ); | ||||
|     
 | ||||
|             
 | ||||
| 	/** Standard constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _templateName		Name of a template. | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 */ | ||||
| 	ExportTemplatedFile(	const std::string& _templateName, | ||||
| 							const std::string& _fileName, | ||||
| 							const std::string& _commonHeaderName = "", | ||||
| 							const std::string& _realString = "real_t", | ||||
| 							const std::string& _intString = "int", | ||||
| 							int _precision = 16, | ||||
| 							const std::string& _commentString = std::string() | ||||
| 							); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportTemplatedFile( ) | ||||
| 	{} | ||||
| 
 | ||||
|     
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _templateName		Name of a template. | ||||
| 	 *	@param[in] _fileName			Name of exported file. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
|      * | ||||
|      *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue setup(	const std::string& _templateName, | ||||
|                                 const std::string& _fileName, | ||||
|                                 const std::string& _commonHeaderName = "", | ||||
|                                 const std::string& _realString = "real_t", | ||||
|                                 const std::string& _intString = "int", | ||||
|                                 int _precision = 16, | ||||
|                                 const std::string& _commentString = std::string() | ||||
|                                 ); | ||||
| 
 | ||||
|     
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	virtual returnValue configure(  ) | ||||
| 	{ | ||||
| 		return fillTemplate( ); | ||||
| 	} | ||||
| 
 | ||||
| protected: | ||||
| 
 | ||||
| 	/** Fill in the template. */ | ||||
| 	returnValue fillTemplate( ); | ||||
| 	/** Name of the template file. */ | ||||
| 	std::string templateName; | ||||
| 	/** Dictionary used to fill in the template file. */ | ||||
| 	std::map< std::string, std::string > dictionary; | ||||
| 	/** List of folders where templates are stored. */ | ||||
| 	std::string folders; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_TEMPLATED_FILE_HPP
 | ||||
| @ -1,536 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_variable.hpp | ||||
|  *    \authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_VARIABLE_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_VARIABLE_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_argument.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| class ExportArithmeticStatement; | ||||
| class ExportVariableInternal; | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Defines a matrix-valued variable to be used for exporting code. | ||||
|  * | ||||
|  *	\ingroup UserDataStructures | ||||
|  * | ||||
|  *	The class ExportVariable defines a matrix-valued variable to be used for exporting | ||||
|  *	code. Instances of this class can be used similar to usual DMatrix objects | ||||
|  *	but offer additional functionality, e.g. they allow to export arithmetic 
 | ||||
|  *	expressions and they can be passed as argument to exported functions. By 
 | ||||
|  *	default, all entries of a ExportVariable are undefined, but each of its 
 | ||||
|  *	component can be set to a fixed value if known beforehand. | ||||
|  * | ||||
|  *	\authors Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| class ExportVariable : public ExportArgument | ||||
| { | ||||
| 	//
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. */ | ||||
| 		ExportVariable(); | ||||
| 
 | ||||
| 		/** Constructor which takes the name, type string
 | ||||
| 		 *	and dimensions of the variable. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _nRows			Number of rows of the argument. | ||||
| 		 *	@param[in] _nCols			Number of columns of the argument. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 */ | ||||
| 		ExportVariable(	const std::string& _name, | ||||
| 						uint _nRows, | ||||
| 						uint _nCols, | ||||
| 						ExportType _type = REAL, | ||||
| 						ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 						bool _callItByValue = false, | ||||
| 						const std::string& _prefix = std::string() | ||||
| 						); | ||||
| 
 | ||||
| 		/** Constructor which takes the name and type string of the variable.
 | ||||
| 		 *	Moreover, it initializes the variable with the dimensions and the 
 | ||||
| 		 *	values of the given matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _data			DMatrix used for initialization. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 */ | ||||
| 		ExportVariable(	const std::string& _name, | ||||
| 						const DMatrix& _data, | ||||
| 						ExportType _type = REAL, | ||||
| 						ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 						bool _callItByValue = false, | ||||
| 						const std::string& _prefix = std::string(), | ||||
| 						bool _isGiven = true | ||||
| 						); | ||||
| 
 | ||||
| 		/** Constructor which takes the name and type string of the variable.
 | ||||
| 		 *	Moreover, it initializes the variable with the dimensions and the | ||||
| 		 *	values of the given matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _data			Shared pointer to DMatrix used for initialization. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 */ | ||||
| 		ExportVariable(	const std::string& _name, | ||||
| 						const DMatrixPtr& _data, | ||||
| 						ExportType _type = REAL, | ||||
| 						ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 						bool _callItByValue = false, | ||||
| 						const std::string& _prefix = std::string() | ||||
| 						); | ||||
| 
 | ||||
| 		/** Constructor which takes the name and type string of the variable.
 | ||||
| 		 *	Moreover, it initializes the variable with the dimensions of the matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _nRows			Name of the argument. | ||||
| 		 *	@param[in] _nCols			Name of the argument. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 */ | ||||
| 		ExportVariable(	unsigned _nRows, | ||||
| 						unsigned _nCols, | ||||
| 						ExportType _type = REAL, | ||||
| 						ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 						bool _callItByValue = false, | ||||
| 						const std::string& _prefix = std::string() | ||||
| 						); | ||||
| 
 | ||||
| 		/** \name Constructor which converts a given matrix/vector/scalar into an ExportVariable.
 | ||||
| 		  * @{ */ | ||||
| 
 | ||||
| 		template<typename Derived> | ||||
| 		ExportVariable(	const Eigen::MatrixBase<Derived>& _data | ||||
| 						) | ||||
| 		{ | ||||
| 			simpleForward(DMatrix( _data )); | ||||
| 		} | ||||
| 
 | ||||
| 		ExportVariable(	const double _data	/**< Scalar used for initialization */ | ||||
| 						); | ||||
| 		/** @} */ | ||||
| 
 | ||||
|         /** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~ExportVariable( ); | ||||
| 
 | ||||
| 		ExportVariable clone() const; | ||||
| 
 | ||||
| 		ExportVariableInternal* operator->(); | ||||
| 
 | ||||
| 		const ExportVariableInternal* operator->() const; | ||||
| 
 | ||||
| 		/** Initializes variable with given name, type string
 | ||||
| 		 *	and dimensions of the variable. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _nRows			Number of rows of the argument. | ||||
| 		 *	@param[in] _nCols			Number of columns of the argument. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 * | ||||
| 		 *	\return Reference to initialized object | ||||
| 		 */ | ||||
| 		ExportVariable& setup(	const std::string& _name, | ||||
| 								uint _nRows = 1, | ||||
| 								uint _nCols = 1, | ||||
| 								ExportType _type = REAL, | ||||
| 								ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 								bool _callItByValue = false, | ||||
| 								const std::string& _prefix = std::string() | ||||
| 								); | ||||
| 
 | ||||
| 		/** Initializes variable with given name and type string of the variable.
 | ||||
| 		 *	Moreover, the variable is initialized with the dimensions and the 
 | ||||
| 		 *	values of the given matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _data			DMatrix used for initialization. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 * | ||||
| 		 *	\return Reference to initialized object | ||||
| 		 */ | ||||
| 		ExportVariable& setup(	const std::string& _name, | ||||
| 								const DMatrix& _data, | ||||
| 								ExportType _type = REAL, | ||||
| 								ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 								bool _callItByValue = false, | ||||
| 								const std::string& _prefix = std::string(), | ||||
| 								bool _isGiven = true | ||||
| 								); | ||||
| 
 | ||||
| 		/** Returns value of given component.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Row index of the component to be returned. | ||||
| 		 *	@param[in] colIdx		Column index of the component to be returned. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		double operator()(	uint rowIdx, | ||||
| 							uint colIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns value of given component.
 | ||||
| 		 * | ||||
| 		 *	@param[in] totalIdx		Memory location of the component to be returned. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		double operator()(	uint totalIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns whether given component is set to zero.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to zero, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isZero( const ExportIndex& rowIdx, | ||||
| 							const ExportIndex& colIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns whether given component is set to one.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to one, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isOne(	const ExportIndex& rowIdx, | ||||
| 							const ExportIndex& colIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns whether given component is set to a given value.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to a given value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isGiven(	const ExportIndex& rowIdx, | ||||
| 								const ExportIndex& colIdx | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns whether all components of the variable are set to a given value.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff all components of the variable are set to a given value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isGiven( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns string containing the value of a given component. If its 
 | ||||
| 		 *	value is undefined, the string contains the address of the component. | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return std::string containing the value of a given component | ||||
| 		 */ | ||||
| 		const std::string get(	const ExportIndex& rowIdx, | ||||
| 								const ExportIndex& colIdx | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns number of rows of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Number of rows of the variable | ||||
| 		 */ | ||||
| 		virtual uint getNumRows( ) const; | ||||
| 
 | ||||
| 		/** Returns number of columns of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Number of columns of the variable | ||||
| 		 */ | ||||
| 		virtual uint getNumCols( ) const; | ||||
| 
 | ||||
| 		/** Returns total dimension of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Total dimension of the variable | ||||
| 		 */ | ||||
| 		virtual uint getDim( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Operator for adding two ExportVariables.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be added. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the addition | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator+(	const ExportVariable& arg1, | ||||
| 													const ExportVariable& arg2 | ||||
| 													); | ||||
| 
 | ||||
| 		/** Operator for subtracting an ExportVariable from another.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be subtracted. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the subtraction | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator-(	const ExportVariable& arg1, | ||||
| 													const ExportVariable& arg2 | ||||
| 													); | ||||
| 
 | ||||
| 		/** Operator for add-assigning an ExportVariable to another.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be add-assigned. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the add-assignment | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator+=(	const ExportVariable& arg1, | ||||
| 														const ExportVariable& arg2 | ||||
| 														); | ||||
| 
 | ||||
| 		/** Operator for subtract-assigning an ExportVariables from another.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be subtract-assigned. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the subtract-assignment | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator-=(	const ExportVariable& arg1, | ||||
| 														const ExportVariable& arg2 | ||||
| 														); | ||||
| 
 | ||||
| 		/** Operator for multiplying two ExportVariables.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be multiplied from the right. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the multiplication | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator*(		const ExportVariable& arg1, | ||||
| 														const ExportVariable& arg2 | ||||
| 														); | ||||
| 
 | ||||
| 		/** Operator for multiplying an ExportVariable to the transposed on another.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be multiplied from the right. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the multiplication with left-hand side variable transposed | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator^(	const ExportVariable& arg1, | ||||
| 													const ExportVariable& arg2 | ||||
| 													); | ||||
| 
 | ||||
| 		/** Operator for assigning an ExportVariable to another.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Variable to be assined. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the assignment | ||||
| 		 */ | ||||
| 		friend ExportArithmeticStatement operator==(	const ExportVariable& arg1, | ||||
| 														const ExportVariable& arg2 | ||||
| 														); | ||||
| 
 | ||||
| 		/** Operator for assigning an arithmetic statement to an ExportVariable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Arithmetic statement to be assigned. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the assignment | ||||
| 		 */ | ||||
| 		ExportArithmeticStatement operator==(	ExportArithmeticStatement arg | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Operator for adding an arithmetic statement to an ExportVariable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Arithmetic statement to be added. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the addition | ||||
| 		 */ | ||||
| 		ExportArithmeticStatement operator+(	ExportArithmeticStatement arg | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Operator for subtraction an arithmetic statement from an ExportVariable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Arithmetic statement to be subtracted. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the subtraction | ||||
| 		 */ | ||||
| 		ExportArithmeticStatement operator-(	ExportArithmeticStatement arg | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Operator for add-assigning an arithmetic statement to an ExportVariable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Arithmetic statement to be add-assigned. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the add-assignment | ||||
| 		 */ | ||||
| 		ExportArithmeticStatement operator+=(	ExportArithmeticStatement arg | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Operator for subtract-assigning an arithmetic statement from an ExportVariable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Arithmetic statement to be subtract-assigned. | ||||
| 		 * | ||||
| 		 *	\return Arithmetic statement containing the subtract-assignment | ||||
| 		 */ | ||||
| 		ExportArithmeticStatement operator-=(	ExportArithmeticStatement arg | ||||
| 												) const; | ||||
| 
 | ||||
| 		/** Returns a copy of the variable with transposed components.
 | ||||
| 		 * | ||||
| 		 *	\return Copy of the variable with transposed components | ||||
| 		 */ | ||||
| 		ExportVariable getTranspose( ) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given row of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx			Variable row index. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given row of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getRow(	const ExportIndex& idx | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given column of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx			Variable column index. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given column of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getCol(	const ExportIndex& idx | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given rows of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx1			Variable index of first row of new variable. | ||||
| 		 *	@param[in] idx2			Variable index following last row of new variable. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given rows of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getRows(	const ExportIndex& idx1, | ||||
| 								const ExportIndex& idx2 | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given columns of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx1			Variable index of first column of new variable. | ||||
| 		 *	@param[in] idx2			Variable index following last column of new variable. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given columns of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getCols(	const ExportIndex& idx1, | ||||
| 								const ExportIndex& idx2 | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given rows and columns of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx1		Variable index of first row of new variable. | ||||
| 		 *	@param[in] rowIdx2		Variable index following last row of new variable. | ||||
| 		 *	@param[in] colIdx1		Variable index of first column of new variable. | ||||
| 		 *	@param[in] colIdx2		Variable index following last column of new variable. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given sub-matrix of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getSubMatrix(	const ExportIndex& rowIdx1, | ||||
| 										const ExportIndex& rowIdx2, | ||||
| 										const ExportIndex& colIdx1, | ||||
| 										const ExportIndex& colIdx2 | ||||
| 										) const; | ||||
| 
 | ||||
| 		/** Returns element at position (rowIdx, colIdx).
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return Element at position (rowIdx, colIdx) | ||||
| 		 */ | ||||
| 		ExportVariable getElement(	const ExportIndex& rowIdx, | ||||
| 									const ExportIndex& colIdx | ||||
| 									) const; | ||||
| 
 | ||||
| 		/** Returns a copy of the variable that is transformed to a row vector.
 | ||||
| 		 * | ||||
| 		 *	\return Copy of the variable that is transformed to a row vector | ||||
| 		 */ | ||||
| 		ExportVariable makeRowVector( ) const; | ||||
| 
 | ||||
| 		/** Returns a copy of the variable that is transformed to a column vector.
 | ||||
| 		 * | ||||
| 		 *	\return Copy of the variable that is transformed to a column vector | ||||
| 		 */ | ||||
| 		ExportVariable makeColVector( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether variable is a vector.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff variable is a vector, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isVector( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the internal data matrix.
 | ||||
| 		 * | ||||
| 		 *	\return Internal data matrix | ||||
| 		 */ | ||||
| 		const DMatrix& getGivenMatrix( ) const; | ||||
| 
 | ||||
| 		/** Check whether the matrix is actually a submatrix. */ | ||||
| 		bool isSubMatrix() const; | ||||
| 
 | ||||
| 		/** Check whether the matrix is diagonal. */ | ||||
| 		bool isDiagonal() const; | ||||
| 
 | ||||
| 		/** Prints contents of variable to screen.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue print( ) const; | ||||
| 
 | ||||
|     private: | ||||
| 		void simpleForward(const DMatrix& _value); | ||||
| }; | ||||
| 
 | ||||
| static const ExportVariable emptyConstExportVariable; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_VARIABLE_HPP
 | ||||
| @ -1,349 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/export_variable.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_VARIABLE_INTERNAL_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_VARIABLE_INTERNAL_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_utils.hpp> | ||||
| #include <acado/code_generation/export_argument_internal.hpp> | ||||
| #include <acado/code_generation/export_index.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| class ExportArithmeticStatement; | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief Defines a matrix-valued variable to be used for exporting code. | ||||
|  * | ||||
|  *	\ingroup UserDataStructures | ||||
|  * | ||||
|  *	The class ExportVariableInternal defines a matrix-valued variable to be used for exporting | ||||
|  *	code. Instances of this class can be used similar to usual DMatrix objects | ||||
|  *	but offer additional functionality, e.g. they allow to export arithmetic | ||||
|  *	expressions and they can be passed as argument to exported functions. By | ||||
|  *	default, all entries of a ExportVariableInternal are undefined, but each of its | ||||
|  *	component can be set to a fixed value if known beforehand. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Milan Vukov | ||||
|  */ | ||||
| 
 | ||||
| class ExportVariableInternal : public ExportArgumentInternal | ||||
| { | ||||
| 	//
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor.
 | ||||
| 		 */ | ||||
|         ExportVariableInternal( ); | ||||
| 
 | ||||
| 		/** Constructor which takes the name and type string of the variable.
 | ||||
| 		 *	Moreover, it initializes the variable with the dimensions and the | ||||
| 		 *	values of the given matrix. | ||||
| 		 * | ||||
| 		 *	@param[in] _name			Name of the argument. | ||||
| 		 *	@param[in] _data			DMatrix used for initialization. | ||||
| 		 *	@param[in] _type			Data type of the argument. | ||||
| 		 *	@param[in] _dataStruct		Global data struct to which the argument belongs to (if any). | ||||
| 		 *	@param[in] _callByValue		Flag indicating whether argument it to be called by value. | ||||
| 		 */ | ||||
| 		ExportVariableInternal(	const std::string& _name, | ||||
| 								const DMatrixPtr& _data, | ||||
| 								ExportType _type = REAL, | ||||
| 								ExportStruct _dataStruct = ACADO_LOCAL, | ||||
| 								bool _callItByValue = false, | ||||
| 								const std::string& _prefix = std::string() | ||||
| 								); | ||||
| 
 | ||||
|         /** Destructor.
 | ||||
| 		 */ | ||||
| 		virtual ~ExportVariableInternal( ); | ||||
| 
 | ||||
| 		/** Clone constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	\return Pointer to cloned object. | ||||
| 		 */ | ||||
| 		virtual ExportVariableInternal* clone() const; | ||||
| 
 | ||||
| 		/** Returns whether given component is set to zero.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to zero, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isZero( const ExportIndex& rowIdx, | ||||
| 							const ExportIndex& colIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns whether given component is set to one.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to one, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isOne(	const ExportIndex& rowIdx, | ||||
| 							const ExportIndex& colIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns whether given component is set to a given value.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to a given value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isGiven(	const ExportIndex& rowIdx, | ||||
| 								const ExportIndex& colIdx | ||||
| 								) const; | ||||
| 
 | ||||
| 		virtual bool isGiven() const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns string containing the value of a given component. If its
 | ||||
| 		 *	value is undefined, the string contains the address of the component. | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 * | ||||
| 		 *	\return std::string containing the value of a given component | ||||
| 		 */ | ||||
| 		const std::string get(	const ExportIndex& rowIdx, | ||||
| 							const ExportIndex& colIdx | ||||
| 							) const; | ||||
| 
 | ||||
| 		/** Returns number of rows of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Number of rows of the variable | ||||
| 		 */ | ||||
| 		virtual uint getNumRows( ) const; | ||||
| 
 | ||||
| 		/** Returns number of columns of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Number of columns of the variable | ||||
| 		 */ | ||||
| 		virtual uint getNumCols( ) const; | ||||
| 
 | ||||
| 		/** Returns total dimension of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Total dimension of the variable | ||||
| 		 */ | ||||
| 		virtual uint getDim( ) const; | ||||
| 
 | ||||
| 		/** Returns a copy of the variable with transposed components.
 | ||||
| 		 * | ||||
| 		 *	\return Copy of the variable with transposed components | ||||
| 		 */ | ||||
| 		ExportVariable getTranspose( ) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given row of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx			Variable row index. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given row of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getRow(	const ExportIndex& idx | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given column of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx			Variable column index. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given column of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getCol(	const ExportIndex& idx | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given rows of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx1			Variable index of first row of new variable. | ||||
| 		 *	@param[in] idx2			Variable index following last row of new variable. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given rows of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getRows(	const ExportIndex& idx1, | ||||
| 								const ExportIndex& idx2 | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given columns of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] idx1			Variable index of first column of new variable. | ||||
| 		 *	@param[in] idx2			Variable index following last column of new variable. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given columns of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getCols(	const ExportIndex& idx1, | ||||
| 								const ExportIndex& idx2 | ||||
| 								) const; | ||||
| 
 | ||||
| 		/** Returns a new variable containing only the given rows and columns of the variable.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx1		Variable index of first row of new variable. | ||||
| 		 *	@param[in] rowIdx2		Variable index following last row of new variable. | ||||
| 		 *	@param[in] colIdx1		Variable index of first column of new variable. | ||||
| 		 *	@param[in] colIdx2		Variable index following last column of new variable. | ||||
| 		 * | ||||
| 		 *	\return New variable containing only the given sub-matrix of the variable | ||||
| 		 */ | ||||
| 		ExportVariable getSubMatrix(	const ExportIndex& _rowIdx1, | ||||
| 										const ExportIndex& _rowIdx2, | ||||
| 										const ExportIndex& _colIdx1, | ||||
| 										const ExportIndex& _colIdx2 | ||||
| 										) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns a copy of the variable that is transformed to a row vector.
 | ||||
| 		 * | ||||
| 		 *	\return Copy of the variable that is transformed to a row vector | ||||
| 		 */ | ||||
| 		ExportVariable makeRowVector( ) const; | ||||
| 
 | ||||
| 		/** Returns a copy of the variable that is transformed to a column vector.
 | ||||
| 		 * | ||||
| 		 *	\return Copy of the variable that is transformed to a column vector | ||||
| 		 */ | ||||
| 		ExportVariable makeColVector( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether variable is a vector.
 | ||||
| 		 * | ||||
| 		 *	\return true  iff variable is a vector, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool isVector( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the internal data matrix.
 | ||||
| 		 * | ||||
| 		 *	\return Internal data matrix | ||||
| 		 */ | ||||
| 		const DMatrix& getGivenMatrix( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Prints contents of variable to screen.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue print( ) const; | ||||
| 
 | ||||
| 		/** Check whether the matrix is actually a submatrix. */ | ||||
| 		bool isSubMatrix() const; | ||||
| 
 | ||||
| 		/** Check whether the matrix is diagonal. */ | ||||
| 		bool isDiagonal() const; | ||||
| 
 | ||||
| 	//
 | ||||
|     // PROTECTED MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     protected: | ||||
| 
 | ||||
| 		/** Returns column dimension of the variable.
 | ||||
| 		 * | ||||
| 		 *	\return Column dimension of the variable | ||||
| 		 */ | ||||
| 		virtual uint getColDim( ) const; | ||||
| 
 | ||||
| 		/** Returns total index of given component within memory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Row index of the component. | ||||
| 		 *	@param[in] colIdx		Column index of the component. | ||||
| 		 * | ||||
| 		 *	\return Total index of given component | ||||
| 		 */ | ||||
| 		virtual ExportIndex	getTotalIdx(	const ExportIndex& rowIdx, | ||||
| 											const ExportIndex& colIdx | ||||
| 											) const; | ||||
| 
 | ||||
| 		/** Assigns offsets and dimensions of a sub-matrix. This function is used to
 | ||||
| 		 *	access only a sub-matrix of the variable without copying its values to | ||||
| 		 *	a new variable. | ||||
| 		 * | ||||
| 		 *	@param[in] _rowOffset		Variable index of first row of sub-matrix. | ||||
| 		 *	@param[in] _colOffset		Variable index of first column of sub-matrix. | ||||
| 		 *	@param[in] _rowDim			Row dimension of variable (as only the submatrix data is stored). | ||||
| 		 *	@param[in] _colDim			Column dimension of variable (as only the submatrix data is stored). | ||||
| 		 *	@param[in] _nRows			Number of rows of sub-matrix. | ||||
| 		 *	@param[in] _nCols			Number of columns of sub-matrix. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN, \n | ||||
| 		 *	        RET_INVALID_ARGUMENTS | ||||
| 		 */ | ||||
| 		returnValue setSubmatrixOffsets(	const ExportIndex& _rowOffset, | ||||
| 											const ExportIndex& _colOffset, | ||||
| 											unsigned _rowDim = 0, | ||||
| 											unsigned _colDim = 0, | ||||
| 											unsigned _nRows = 0, | ||||
| 											unsigned _nCols = 0 | ||||
| 											); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether given component is set to given value.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rowIdx		Variable row index of the component. | ||||
| 		 *	@param[in] colIdx		Variable column index of the component. | ||||
| 		 *	@param[in] _value		Value used for comparison. | ||||
| 		 * | ||||
| 		 *	\return true  iff given component is set to given value, \n | ||||
| 		 *	        false otherwise | ||||
| 		 */ | ||||
| 		bool hasValue(	const ExportIndex& _rowIdx, | ||||
| 						const ExportIndex& _colIdx, | ||||
| 						double _value | ||||
| 						) const; | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		bool doAccessTransposed;				/**< Flag indicating whether variable is to be accessed in a transposed manner. */ | ||||
| 
 | ||||
| 		ExportIndex rowOffset;						/**< Index of first row of a possible sub-matrix of the variable. */ | ||||
| 		ExportIndex colOffset;						/**< Index of first column of a possible sub-matrix of the variable. */ | ||||
| 		unsigned rowDim;							/**< Row dimension of variable (as only the submatrix data is stored). */ | ||||
| 		unsigned colDim;							/**< Column dimension of variable (as only the submatrix data is stored). */ | ||||
| 		unsigned nRows;								/**< Number of rows of a possible sub-matrix of the variable. */ | ||||
| 		unsigned nCols;								/**< Number of columns of a possible sub-matrix of the variable. */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_VARIABLE_INTERNAL_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,95 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/dirk3_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_DIRK3_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_DIRK3_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/dirk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored diagonally implicit 2-stage Runge-Kutta method of order 3 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class DiagonallyIRK3Export allows to export a tailored diagonally implicit 2-stage Runge-Kutta method of order 3 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class DiagonallyIRK3Export : public DiagonallyImplicitRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         DiagonallyIRK3Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         DiagonallyIRK3Export(	const DiagonallyIRK3Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~DiagonallyIRK3Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createDiagonallyIRK3Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_DIRK3_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,95 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/dirk4_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_DIRK4_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_DIRK4_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/dirk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored diagonally implicit 3-stage Runge-Kutta method of order 4 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class DiagonallyIRK4Export allows to export a tailored diagonally implicit 3-stage Runge-Kutta method of order 4 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class DiagonallyIRK4Export : public DiagonallyImplicitRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         DiagonallyIRK4Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         DiagonallyIRK4Export(	const DiagonallyIRK4Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~DiagonallyIRK4Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createDiagonallyIRK4Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_DIRK4_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,95 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/dirk5_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_DIRK5_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_DIRK5_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/dirk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored diagonally implicit 5-stage Runge-Kutta method of order 5 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class DiagonallyIRK5Export allows to export a tailored diagonally implicit 5-stage Runge-Kutta method of order 5 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class DiagonallyIRK5Export : public DiagonallyImplicitRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         DiagonallyIRK5Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         DiagonallyIRK5Export(	const DiagonallyIRK5Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~DiagonallyIRK5Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createDiagonallyIRK5Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_DIRK5_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,308 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/dirk_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_DIRK_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_DIRK_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored diagonally implicit Runge-Kutta integrator for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class DiagonallyImplicitRKExport allows to export a tailored diagonally implicit Runge-Kutta integrator | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class DiagonallyImplicitRKExport : public ForwardIRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         DiagonallyImplicitRKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         DiagonallyImplicitRKExport(	const DiagonallyImplicitRKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~DiagonallyImplicitRKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		DiagonallyImplicitRKExport& operator=(	const DiagonallyImplicitRKExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the linear input system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] A1				A constant matrix defining the equations of the linear input system. | ||||
| 		 *	@param[in] B1				A constant matrix defining the equations of the linear input system. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveInputSystem( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& index3, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportVariable& Ah ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear input system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareInputSystem(	ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] A3				A constant matrix defining the equations of the linear output system. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveOutputSystem( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& index3, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportVariable& Ah, | ||||
| 										bool DERIVATIVES = false ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states, defined by the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesOutputSystem( 	ExportStatementBlock* block, | ||||
| 												const ExportIndex& index1, | ||||
| 												const ExportIndex& index2, | ||||
| 												const ExportIndex& index3, | ||||
| 												const ExportIndex& index4, | ||||
| 												const ExportIndex& tmp_index1, | ||||
| 												const ExportIndex& tmp_index2, | ||||
| 												const ExportVariable& Ah, | ||||
| 												const ExportVariable& Bh, | ||||
| 												bool STATES, | ||||
| 												uint number 		); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear output system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareOutputSystem( ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Forms a constant linear system matrix for the collocation equations, given a constant jacobian and mass matrix.
 | ||||
| 		 * | ||||
| 		 *	@param[in] jacobian			given constant Jacobian matrix | ||||
| 		 *	@param[in] mass				given constant mass matrix | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual DMatrix formMatrix( const DMatrix& mass, const DMatrix& jacobian ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& index1, | ||||
| 											const ExportIndex& index2, | ||||
| 											const ExportIndex& index3, | ||||
| 											const ExportIndex& tmp_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportVariable& det, | ||||
| 											bool DERIVATIVES = false  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2, | ||||
| 													const ExportVariable& Ah, | ||||
| 													const ExportVariable& Bh, | ||||
| 													const ExportVariable& det, | ||||
| 													bool STATES, | ||||
| 													uint number 		); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the matrix of the linear system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] index1			The loop index of the outer loop. | ||||
| 		 *	@param[in] index2			The loop index of the inner loop. | ||||
| 		 *	@param[in] tmp_index		A temporary index to be used. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] evaluateB		True if the right-hand side of the linear system should also be evaluated, false otherwise. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateMatrix( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportVariable& _rk_A, | ||||
| 										const ExportVariable& Ah, | ||||
| 										const ExportVariable& C, | ||||
| 										bool evaluateB, | ||||
| 										bool DERIVATIVES ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the states at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateStatesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportIndex& stage, | ||||
| 											const ExportIndex& i, | ||||
| 											const ExportIndex& j ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the right-hand side of the linear system at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateRhsImplicitSystem( 	ExportStatementBlock* block, | ||||
| 														const ExportIndex& stage ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 		
 | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
|     
 | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| //
 | ||||
| // Create the integrator
 | ||||
| //
 | ||||
| inline DiagonallyImplicitRKExport* createDiagonallyImplicitRKExport(	UserInteraction* _userInteraction, | ||||
| 		const std::string &_commonHeaderName	) | ||||
| { | ||||
| 	int sensGen; | ||||
| 	_userInteraction->get( DYNAMIC_SENSITIVITY, sensGen ); | ||||
| 	if ( (ExportSensitivityType)sensGen == FORWARD ) { | ||||
| 		return new DiagonallyImplicitRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else { | ||||
| 		ACADOERROR( RET_INVALID_OPTION ); | ||||
| 		return new DiagonallyImplicitRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_DIRK_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,229 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/discrete_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_DT_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_DT_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/integrator_export.hpp> | ||||
| 
 | ||||
| #include <acado/code_generation/export_algorithm_factory.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored discrete-time 'integrator' for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class DiscreteTimeExport allows to export a tailored discrete-time 'integrator' | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class DiscreteTimeExport : public IntegratorExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         DiscreteTimeExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         DiscreteTimeExport(	const DiscreteTimeExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~DiscreteTimeExport( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		DiscreteTimeExport& operator=(	const DiscreteTimeExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		
 | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets a polynomial NARX model to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] delay		The delay for the states in the NARX model. | ||||
| 		 *	@param[in] parms		The parameters defining the polynomial NARX model. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setNARXmodel( const uint delay, const DMatrix& parms ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		*                                                                      										\n | ||||
| 		*  \param outputGrids_	  	The vector containing a grid for each output function.			  				\n | ||||
| 		*  \param rhs 	  	  		The expressions corresponding the output functions.								\n | ||||
| 		*                                                                      										\n | ||||
| 		*  \return SUCCESSFUL_RETURN | ||||
| 		*/ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<Expression> rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  		The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 	The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.										\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  			The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 		The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *  \param _outputDependencies		A separate dependency matrix for each output.								\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output, | ||||
| 										  const std::vector<DMatrix> _outputDependencies ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Copies all class members from given object.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue copy(	const DiscreteTimeExport& arg | ||||
| 							); | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		ExportVariable  rk_diffsTemp3; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createDiscreteTimeExport(	UserInteraction* _userInteraction, | ||||
| 											const std::string &_commonHeaderName ); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_DT_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,92 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/erk2_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK2_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK2_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_export.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator of order 2 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExplicitRungeKutta2Export allows to export a tailored explicit Runge-Kutta integrator of order 2 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExplicitRungeKutta2Export : public ExplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ExplicitRungeKutta2Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExplicitRungeKutta2Export(	const ExplicitRungeKutta2Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExplicitRungeKutta2Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createExplicitRungeKutta2Export(	UserInteraction* _userInteraction, | ||||
| 													const std::string &_commonHeaderName); | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK2_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,95 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/erk3_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK3_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK3_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator of order 3 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExplicitRungeKutta3Export allows to export a tailored explicit Runge-Kutta integrator of order 3 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExplicitRungeKutta3Export : public ExplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ExplicitRungeKutta3Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExplicitRungeKutta3Export(	const ExplicitRungeKutta3Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExplicitRungeKutta3Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createExplicitRungeKutta3Export(	UserInteraction* _userInteraction, | ||||
| 													const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK3_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,94 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/erk4_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK4_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK4_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator of order 4 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExplicitRungeKutta4Export allows to export a tailored explicit Runge-Kutta integrator of order 4 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExplicitRungeKutta4Export : public ExplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ExplicitRungeKutta4Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExplicitRungeKutta4Export(	const ExplicitRungeKutta4Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExplicitRungeKutta4Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createExplicitRungeKutta4Export(	UserInteraction* _userInteraction, | ||||
| 													const std::string &_commonHeaderName); | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK4_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,146 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrators/erk_3sweep_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK_3SWP_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK_3SWP_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_adjoint_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator with three-sweeps second order sensitivity propagation for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ThreeSweepsERKExport allows to export a tailored explicit Runge-Kutta integrator with three-sweeps second order sensitivity propagation | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ThreeSweepsERKExport : public AdjointERKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ThreeSweepsERKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ThreeSweepsERKExport(	const ThreeSweepsERKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ThreeSweepsERKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 
 | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		Expression returnLowerTriangular( const Expression& expr ); | ||||
| 
 | ||||
| 		Expression symmetricDoubleProduct( const Expression& expr, const Expression& arg ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		ExportAcadoFunction diffs_sweep3;			/**< Module to export ODE. */ | ||||
| 		ExportVariable rk_backward_sweep;			/**< Variable containing intermediate results of a backward sweep of the RK integrator. */ | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK_3SWP_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,137 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrators/erk_adjoint_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK_ADJOINT_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK_ADJOINT_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator with adjoint first order sensitivity propagation for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class AdjointERKExport allows to export a tailored explicit Runge-Kutta integrator with adjoint first order sensitivity propagation | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class AdjointERKExport : public ExplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         AdjointERKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         AdjointERKExport(	const AdjointERKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~AdjointERKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 
 | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		ExportVariable rk_forward_sweep;				/**< Variable containing intermediate results of a forward sweep of the RK integrator. */ | ||||
| //		ExportVariable seed_backward;					/**< Variable containing the seed for a backward propagation of the RK integrator. */
 | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK_ADJOINT_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,229 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrators/erk_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/rk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExplicitRungeKuttaExport allows to export a tailored explicit Runge-Kutta integrator | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExplicitRungeKuttaExport : public RungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ExplicitRungeKuttaExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExplicitRungeKuttaExport(	const ExplicitRungeKuttaExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExplicitRungeKuttaExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		
 | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setLinearInput( const DMatrix& M1, const DMatrix& A1, const DMatrix& B1 ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setLinearOutput( const DMatrix& M3, const DMatrix& A3, const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setLinearOutput( const DMatrix& M3, const DMatrix& A3, const std::string& _rhs3, const std::string& _diffs_rhs3 ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 							
 | ||||
|         
 | ||||
|         /** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		*                                                                      										\n | ||||
| 		*  \param outputGrids_	  	The vector containing a grid for each output function.			  				\n | ||||
| 		*  \param rhs 	  	  		The expressions corresponding the output functions.								\n | ||||
| 		*                                                                      										\n | ||||
| 		*  \return SUCCESSFUL_RETURN | ||||
| 		*/ | ||||
| 		virtual returnValue setupOutput( const std::vector<Grid> outputGrids_, | ||||
| 									  const std::vector<Expression> rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  		The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 	The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.										\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  			The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 		The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *  \param _outputDependencies		A separate dependency matrix for each output.								\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output, | ||||
| 										  const std::vector<DMatrix> _outputDependencies ); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/lifted_erk_export.hpp> | ||||
| #include <acado/code_generation/integrators/erk_adjoint_export.hpp> | ||||
| #include <acado/code_generation/integrators/erk_fob_export.hpp> | ||||
| #include <acado/code_generation/integrators/erk_3sweep_export.hpp> | ||||
| #include <acado/code_generation/integrators/erk_export.ipp> | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,73 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  *    \file include/acado/code_generation/integrators/erk_export.ipp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| // Create the integrator | ||||
| // | ||||
| inline ExplicitRungeKuttaExport* createExplicitRungeKuttaExport(	UserInteraction* _userInteraction, | ||||
| 																	const std::string &_commonHeaderName	) | ||||
| { | ||||
| 	int sensGen; | ||||
| 	_userInteraction->get( DYNAMIC_SENSITIVITY, sensGen ); | ||||
| 	int liftedGen; | ||||
| 	_userInteraction->get( IMPLICIT_INTEGRATOR_MODE, liftedGen ); | ||||
| 	if ( (ImplicitIntegratorMode)liftedGen == LIFTED && ((ExportSensitivityType)sensGen == FORWARD || (ExportSensitivityType)sensGen == INEXACT) ) { | ||||
| 		return new LiftedERKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ExportSensitivityType)sensGen == FORWARD || (ExportSensitivityType)sensGen == NO_SENSITIVITY ) { | ||||
| 		return new ExplicitRungeKuttaExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if( (ExportSensitivityType)sensGen == BACKWARD ) { | ||||
| 		return new AdjointERKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if( (ExportSensitivityType)sensGen == FORWARD_OVER_BACKWARD || (ExportSensitivityType)sensGen == SYMMETRIC_FB ) { | ||||
| 		return new ForwardOverBackwardERKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if( (ExportSensitivityType)sensGen == SYMMETRIC ) { | ||||
| 		return new ThreeSweepsERKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else { | ||||
| 		ACADOERROR( RET_INVALID_OPTION ); | ||||
| 		return new ExplicitRungeKuttaExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| // end of file. | ||||
| @ -1,115 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrators/erk_fob_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_ERK_FOB_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_ERK_FOB_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_adjoint_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Runge-Kutta integrator with forward-over-backward second order sensitivity propagation for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ForwardOverBackwardERKExport allows to export a tailored explicit Runge-Kutta integrator with forward-over-backward second order sensitivity propagation | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ForwardOverBackwardERKExport : public AdjointERKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ForwardOverBackwardERKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ForwardOverBackwardERKExport(	const ForwardOverBackwardERKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ForwardOverBackwardERKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 
 | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 		Expression returnLowerTriangular( const Expression& expr ); | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_ERK_FOB_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,95 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/explicit_euler_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPLICIT_EULER_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_EXPLICIT_EULER_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/erk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored explicit Euler method for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ExplicitEulerExport allows to export a tailored explicit Euler method | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExplicitEulerExport : public ExplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ExplicitEulerExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExplicitEulerExport(	const ExplicitEulerExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExplicitEulerExport( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createExplicitEulerExport(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPLICIT_EULER_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,96 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/export_auxiliary_sim_functions.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_AUXILIARY_SIM_FUNCTIONS_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_AUXILIARY_SIM_FUNCTIONS_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /**
 | ||||
|  *	\brief A class for generating some helper functions. | ||||
|  * | ||||
|  *	\ingroup AuxiliaryFunctionality | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExportAuxiliarySimFunctions | ||||
| { | ||||
| public: | ||||
| 
 | ||||
| 	/** Default constructor.
 | ||||
| 	 * | ||||
| 	 *	@param[in] _moduleName		    Module name for customization. | ||||
|      *	@param[in] _modulePrefix	    Module prefix for customization. | ||||
| 	 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 	 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 	 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 	 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 	 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 	 * | ||||
| 	 *	\return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	ExportAuxiliarySimFunctions(	const std::string& _headerFileName, | ||||
|                                     const std::string& _sourceFileName, | ||||
|                                     const std::string& _moduleName = "acado", | ||||
|                                     const std::string& _modulePrefix = "ACADO", | ||||
|                                     const std::string& _commonHeaderName = "", | ||||
|                                     const std::string& _realString = "double", | ||||
|                                     const std::string& _intString = "int", | ||||
|                                     int _precision = 16, | ||||
|                                     const std::string& _commentString = std::string() | ||||
|                                     ); | ||||
| 
 | ||||
| 	/** Destructor. */ | ||||
| 	virtual ~ExportAuxiliarySimFunctions() | ||||
| 	{} | ||||
| 
 | ||||
| 	/** Configure the template
 | ||||
| 	 * | ||||
| 	 *  \return SUCCESSFUL_RETURN | ||||
| 	 */ | ||||
| 	returnValue configure(	); | ||||
| 
 | ||||
| 	/** Export the interface. */ | ||||
| 	returnValue exportCode(); | ||||
| 
 | ||||
| private: | ||||
| 
 | ||||
| 	ExportTemplatedFile source; | ||||
| 	ExportTemplatedFile header; | ||||
| 	std::string moduleName; | ||||
|     std::string modulePrefix; | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_AUXILIARY_SIM_FUNCTIONS_HPP
 | ||||
| @ -1,112 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file ... | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_EXPORT_MATLAB_INTEGRATOR_HPP | ||||
| #define ACADO_TOOLKIT_EXPORT_MATLAB_INTEGRATOR_HPP | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/code_generation/export_templated_file.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief ... | ||||
|  * | ||||
|  *	\ingroup ... | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ExportMatlabIntegrator : public ExportTemplatedFile | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _templateName		Name of a template. | ||||
| 		 *	@param[in] _fileName			Name of exported file. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 *	@param[in] _realString			std::string to be used to declare real variables. | ||||
| 		 *	@param[in] _intString			std::string to be used to declare integer variables. | ||||
| 		 *	@param[in] _precision			Number of digits to be used for exporting real values. | ||||
| 		 *	@param[in] _commentString		std::string to be used for exporting comments. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		ExportMatlabIntegrator(	const std::string& _templateName, | ||||
| 								const std::string& _fileName, | ||||
| 								const std::string& _commonHeaderName = "", | ||||
| 								const std::string& _realString = "real_t", | ||||
| 								const std::string& _intString = "int", | ||||
| 								int _precision = 16, | ||||
| 								const std::string& _commentString = "" | ||||
| 								); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ExportMatlabIntegrator(	const ExportMatlabIntegrator& arg | ||||
| 								); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ExportMatlabIntegrator( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ExportMatlabIntegrator& operator=(	const ExportMatlabIntegrator& arg | ||||
| 										); | ||||
| 		
 | ||||
| 		/** Configure the template
 | ||||
| 		 * | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue configure(	const uint firstOrder, const uint online, const uint debugMode, const uint timingCalls, const uint numStages ); | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_EXPORT_MATLAB_INTEGRATOR_HPP
 | ||||
| @ -1,94 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/gauss_legendre2_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_GAUSS_LEG2_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_GAUSS_LEG2_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored Gauss-Legendre method of order 2 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class GaussLegendre2Export allows to export a tailored Gauss-Legendre method of order 2 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class GaussLegendre2Export : public ImplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         GaussLegendre2Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         GaussLegendre2Export(	const GaussLegendre2Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~GaussLegendre2Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createGaussLegendre2Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_GAUSS_LEG2_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,95 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/gauss_legendre4_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_GAUSS_LEG4_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_GAUSS_LEG4_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored Gauss-Legendre method of order 4 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class GaussLegendre4Export allows to export a tailored Gauss-Legendre method of order 4 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class GaussLegendre4Export : public ImplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         GaussLegendre4Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         GaussLegendre4Export(	const GaussLegendre4Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~GaussLegendre4Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createGaussLegendre4Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_GAUSS_LEG4_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,96 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/gauss_legendre6_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_GAUSS_LEG6_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_GAUSS_LEG6_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored Gauss-Legendre method of order 6 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class GaussLegendre6Export allows to export a tailored Gauss-Legendre method of order 6 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class GaussLegendre6Export : public ImplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         GaussLegendre6Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         GaussLegendre6Export(	const GaussLegendre6Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~GaussLegendre6Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createGaussLegendre6Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_GAUSS_LEG6_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,94 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/gauss_legendre8_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_GAUSS_LEG8_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_GAUSS_LEG8_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored Gauss-Legendre method of order 8 for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class GaussLegendre8Export allows to export a tailored Gauss-Legendre method of order 8 | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class GaussLegendre8Export : public ImplicitRungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     private: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         GaussLegendre8Export(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         GaussLegendre8Export(	const GaussLegendre8Export& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~GaussLegendre8Export( ); | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| IntegratorExport* createGaussLegendre8Export(	UserInteraction* _userInteraction, | ||||
| 												const std::string &_commonHeaderName); | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_GAUSS_LEG6_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,508 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/integrator_export.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Rien Quirynen | ||||
|  *    \date 2010-2011 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_INTEGRATOR_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_INTEGRATOR_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/matrix_vector/matrix_vector.hpp> | ||||
| #include <acado/code_generation/export_algorithm_factory.hpp> | ||||
| #include <acado/ocp/model_data.hpp> | ||||
| #include <acado/code_generation/integrators/integrator_export_types.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored integrator for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class IntegratorExport allows to export a tailored integrator | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Hans Joachim Ferreau, Boris Houska, Rien Quirynen | ||||
|  */ | ||||
| class IntegratorExport : public ExportAlgorithm | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         IntegratorExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         IntegratorExport(	const IntegratorExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~IntegratorExport( ); | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		IntegratorExport& operator=(	const IntegratorExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		
 | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setLinearInput( const DMatrix& M1, const DMatrix& A1, const DMatrix& B1 ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setLinearOutput( const DMatrix& M3, const DMatrix& A3, const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setNonlinearFeedback( const DMatrix& C, const Expression& feedb ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] 		. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setLinearOutput( const DMatrix& M3, const DMatrix& A3, const std::string& _rhs3, const std::string& _diffs_rhs3 ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns the model to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _name_ODE			Name of the function, evaluating the ODE right-hand side. | ||||
| 		 *	@param[in] _name_diffs_ODE		Name of the function, evaluating the derivatives of the ODE right-hand side. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 
 | ||||
| 		virtual returnValue setModel( 	const std::string& _name_ODE, | ||||
| 										const std::string& _name_diffs_ODE ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets a polynomial NARX model to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] delay		The delay for the states in the NARX model. | ||||
| 		 *	@param[in] parms		The parameters defining the polynomial NARX model. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 
 | ||||
| 		virtual returnValue setNARXmodel( const uint delay, const DMatrix& parms ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Passes all the necessary model data to the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] data			The model data. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setModelData( 	const ModelData& data  ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to update the sensitivities of the states, defined by the linear input system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue updateInputSystem( 	ExportStatementBlock* block, | ||||
| 												const ExportIndex& index1, | ||||
| 												const ExportIndex& index2, | ||||
| 												const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to propagate the sensitivities of the states, defined by the linear input system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue propagateInputSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to update the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue updateImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to propagate the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue propagateImplicitSystem( 	ExportStatementBlock* block, | ||||
| 														const ExportIndex& index1, | ||||
| 														const ExportIndex& index2, | ||||
| 														const ExportIndex& _index3, | ||||
| 														const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to update the sensitivities of the states, defined by the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue updateOutputSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to propagate the sensitivities of the states, defined by the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue propagateOutputSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets integration grid (this grid is expected to be non equidistant, otherwise use the other setGrid function).
 | ||||
| 		 * | ||||
| 		 *	@param[in] _grid		integration grid | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setGrid(	const Grid& _grid   ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const = 0; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										) = 0; | ||||
| 							
 | ||||
|         
 | ||||
|         /** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		*                                                                      										\n | ||||
| 		*  \param outputGrids_	  	The vector containing a grid for each output function.			  				\n | ||||
| 		*  \param rhs 	  	  		The expressions corresponding the output functions.								\n | ||||
| 		*                                                                      										\n | ||||
| 		*  \return SUCCESSFUL_RETURN | ||||
| 		*/ | ||||
| 		virtual returnValue setupOutput( const std::vector<Grid> outputGrids_, | ||||
| 									  const std::vector<Expression> rhs ) = 0; | ||||
| 
 | ||||
| 
 | ||||
|         /** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		*                                                                      										\n | ||||
| 		*  \param outputGrids_	  		The vector containing a grid for each output function.			  			\n | ||||
| 		*  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		*  \param _diffs_outputNames 	The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		*  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		*                                                                      										\n | ||||
| 		*  \return SUCCESSFUL_RETURN | ||||
| 		*/ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.										\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  			The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 		The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *  \param _outputDependencies		A separate dependency matrix for each output.								\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output, | ||||
| 										  const std::vector<DMatrix> _outputDependencies ) = 0; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the grid of the integrator. 	\n
 | ||||
| 		* 
 | ||||
| 		*  \return SUCCESSFUL_RETURN          		\n | ||||
| 		*/ | ||||
| 		virtual returnValue getGrid( Grid& grid_ ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the number of integration steps along the prediction horizon. 	\n
 | ||||
| 		* 
 | ||||
| 		*  \return SUCCESSFUL_RETURN          		\n | ||||
| 		*/ | ||||
| 		virtual returnValue getNumSteps( DVector& _numSteps ) const; | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the output expressions. 	\n
 | ||||
| 		* 
 | ||||
| 		*  \return SUCCESSFUL_RETURN          	\n | ||||
| 		*/ | ||||
| 		virtual returnValue getOutputExpressions( std::vector<Expression>& outputExpressions_ ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the output grids. 			\n
 | ||||
| 		* 
 | ||||
| 		*  \return SUCCESSFUL_RETURN          	\n | ||||
| 		*/ | ||||
| 		virtual returnValue getOutputGrids( std::vector<Grid>& outputGrids_ ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns whether the grid is equidistant.	\n
 | ||||
| 		 *  
 | ||||
| 		 * \return true  iff the grid is equidistant, false otherwise. \n | ||||
| 		 */ | ||||
| 		virtual bool equidistantControlGrid( ) const; | ||||
| 
 | ||||
| 
 | ||||
| 		const std::string getNameRHS() const; | ||||
| 		const std::string getNameDiffsRHS() const; | ||||
| 		virtual const std::string getNameFullRHS() const; | ||||
| 
 | ||||
| 		const std::string getNameOutputRHS() const; | ||||
| 		const std::string getNameOutputDiffs() const; | ||||
| 
 | ||||
| 		const std::string getNameOUTPUT( uint index ) const; | ||||
| 		const std::string getNameDiffsOUTPUT( uint index ) const; | ||||
| 		uint getDimOUTPUT( uint index ) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		/** .
 | ||||
| 		 * | ||||
| 		 *	@param[in] A3			. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		DMatrix expandOutputMatrix( const DMatrix& A3 ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Copies all class members from given object.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue copy(	const IntegratorExport& arg | ||||
| 							); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Frees internal dynamic memory to yield an empty function.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue clear( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/**	Get the index of the integration interval, corresponding a certain time.
 | ||||
| 		 * | ||||
| 		 * 	@param[in] time		The time. | ||||
| 		 * | ||||
| 		 *	\return The index of the integration interval. | ||||
| 		 */ | ||||
| 		uint getIntegrationInterval( double time ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual ExportVariable getAuxVariable() const = 0; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		uint NX1; | ||||
| 		uint NX2; | ||||
| 		uint NX3; | ||||
| 		uint NDX3; | ||||
| 		uint NXA3; | ||||
| 
 | ||||
| 		uint diffsDim;							/**< This is the total number of sensitivities needed. */ | ||||
| 		uint inputDim;							/**< This is the dimension of the input to the integrator. */ | ||||
| 
 | ||||
| 		bool timeDependant; | ||||
| 
 | ||||
| 		DMatrix M11, A11, B11; | ||||
| 		DMatrix A33, M33; | ||||
| 
 | ||||
|         bool exportRhs;						/**< True if the right-hand side and their derivatives should be exported too. */ | ||||
|         bool crsFormat;						/**< True if the CRS format is used for the jacobian of output functions. */ | ||||
| 
 | ||||
| 		Grid grid;							/**< Evaluation grid along the prediction horizon. */ | ||||
| 		DVector numSteps;					/**< The number of integration steps per shooting interval. */ | ||||
| 
 | ||||
| 		ExportFunction fullRhs;				/**< Function that evaluates the full right-hand side. */ | ||||
| 		ExportVariable	rhs_in; | ||||
| 		ExportVariable	rhs_out; | ||||
| 		
 | ||||
| 		ExportFunction integrate;			/**< Function that integrates the exported ODE. */ | ||||
| 		ExportAcadoFunction rhs;			/**< Module to export ODE. */ | ||||
| 		ExportAcadoFunction diffs_rhs;		/**< Module to export the evaluation of the derivatives of the ordinary differential equations. */ | ||||
| 
 | ||||
| 		ExportAcadoFunction lin_input; | ||||
| 
 | ||||
| 		ExportAcadoFunction rhs3; | ||||
| 		ExportAcadoFunction diffs_rhs3; | ||||
| 
 | ||||
| 		ExportVariable  error_code;			/**< Variable containing the error code, returned by the integrator. */ | ||||
| 		ExportVariable  reset_int;			/**< Variable containing the number of the current integration step. */ | ||||
| 		ExportVariable  rk_index;			/**< Variable containing the number of the current shooting interval. */ | ||||
| 		ExportVariable 	rk_ttt;				/**< Variable containing the integration time. */ | ||||
| 		ExportVariable 	rk_xxx;				/**< Variable containing the current integrator state. */ | ||||
| 		ExportVariable 	rk_eta;				/**< Variable containing the inputs or the results of the integrator. */ | ||||
| 
 | ||||
| 		ExportVariable	rk_diffsPrev1; | ||||
| 		ExportVariable	rk_diffsNew1; | ||||
| 		
 | ||||
| 		ExportVariable  rk_diffsPrev2;			/**< Variable containing the sensitivities from the previous integration step. */ | ||||
| 		ExportVariable  rk_diffsNew2;			/**< Variable containing the derivatives wrt the previous values. */ | ||||
| 		ExportVariable  rk_diffsTemp2;			/**< Variable containing intermediate results of evaluations of the derivatives of the differential equations (ordinary and algebraic). */ | ||||
| 
 | ||||
| 		ExportVariable	rk_diffsNew3; | ||||
| 		ExportVariable	rk_diffsPrev3; | ||||
| 
 | ||||
| 		DifferentialState 			x;		/**< The differential states in the model. */ | ||||
| 		DifferentialStateDerivative dx;		/**< The differential state derivatives in the model. */ | ||||
| 		AlgebraicState	  			z;		/**< The algebraic states in the model. */ | ||||
| 		Control           			u;		/**< The control inputs in the model. */ | ||||
| 		OnlineData         			od;		/**< The "online" data values in the model. */ | ||||
| 
 | ||||
|         std::vector<Grid> outputGrids;						/**< A separate grid for each output. */ | ||||
|         std::vector<Expression> outputExpressions;			/**< A separate expression for each output. */ | ||||
|         std::vector<DMatrix> outputDependencies;			/**< A separate dependency matrix for each output. */ | ||||
|         std::vector<ExportAcadoFunction> outputs;			/**< Module to export output functions. */ | ||||
|         std::vector<ExportAcadoFunction> diffs_outputs;		/**< Module to export the evaluation of the derivatives of the output functions. */ | ||||
| 
 | ||||
|         std::vector<uint> num_outputs;					/**< A separate dimension for each output. */ | ||||
| }; | ||||
| 
 | ||||
| /** Factory for creation of exported integrators.*/ | ||||
| typedef ExportAlgorithmFactory<IntegratorExport, ExportIntegratorType> IntegratorExportFactory; | ||||
| 
 | ||||
| /** Shared pointer to an integrator. */ | ||||
| typedef std::shared_ptr< IntegratorExport > IntegratorExportPtr; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_INTEGRATOR_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,77 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/integrator/integrator_export_types.hpp | ||||
|  *    \author Hans Joachim Ferreau, Boris Houska, Rien Quirynen, Milan Vukov | ||||
|  *    \date 2010-2014 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_INTEGRATOR_EXPORT_TYPES_HPP | ||||
| #define ACADO_TOOLKIT_INTEGRATOR_EXPORT_TYPES_HPP | ||||
| 
 | ||||
| #include <acado/utils/acado_namespace_macros.hpp> | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** Summarizes all available integrators for code generation.  */ | ||||
| enum ExportIntegratorType{ | ||||
| 
 | ||||
|      INT_EX_EULER,         	/**< Explicit Euler method.           */ | ||||
|      INT_RK2,         	 	/**< Explicit Runge-Kutta integrator of order 2.           */ | ||||
|      INT_RK3,         	 	/**< Explicit Runge-Kutta integrator of order 3.           */ | ||||
|      INT_RK4,         	 	/**< Explicit Runge-Kutta integrator of order 4.           */ | ||||
|      INT_IRK_GL2,			/**< Gauss-Legendre integrator of order 2 (Continuous output Implicit Runge-Kutta). */ | ||||
|      INT_IRK_GL4,			/**< Gauss-Legendre integrator of order 4 (Continuous output Implicit Runge-Kutta). */ | ||||
|      INT_IRK_GL6,			/**< Gauss-Legendre integrator of order 6 (Continuous output Implicit Runge-Kutta). */ | ||||
|      INT_IRK_GL8,			/**< Gauss-Legendre integrator of order 8 (Continuous output Implicit Runge-Kutta). */ | ||||
| 
 | ||||
|      INT_IRK_RIIA1,			/**< Radau IIA integrator of order 1 (Continuous output Implicit Runge-Kutta). */ | ||||
|      INT_IRK_RIIA3,			/**< Radau IIA integrator of order 3 (Continuous output Implicit Runge-Kutta). */ | ||||
|      INT_IRK_RIIA5,			/**< Radau IIA integrator of order 5 (Continuous output Implicit Runge-Kutta). */ | ||||
| 
 | ||||
|      INT_DIRK3,				/**< Diagonally Implicit 2-stage Runge-Kutta integrator of order 3 (Continuous output). */ | ||||
|      INT_DIRK4,				/**< Diagonally Implicit 3-stage Runge-Kutta integrator of order 4 (Continuous output). */ | ||||
|      INT_DIRK5,				/**< Diagonally Implicit 5-stage Runge-Kutta integrator of order 5 (Continuous output). */ | ||||
| 
 | ||||
|      INT_DT,				/**< An algorithm which handles the simulation and sensitivity generation for a discrete time state-space model. */ | ||||
|      INT_NARX				/**< An algorithm which handles the simulation and sensitivity generation for a NARX model. */ | ||||
| }; | ||||
| 
 | ||||
| /**  Summarizes all possible sensitivity generation types for exported integrators.  */ | ||||
| enum ExportSensitivityType{ | ||||
| 
 | ||||
| 	NO_SENSITIVITY, 				/**< No sensitivities are computed, if possible. 		  					 */ | ||||
|     FORWARD,    					/**< Sensitivities are computed in forward mode.                             */ | ||||
|     BACKWARD,    					/**< Sensitivities are computed in backward mode.                            */ | ||||
|     FORWARD_OVER_BACKWARD,         	/**< Sensitivities (first and second order) are computed.					 */ | ||||
|     SYMMETRIC,         				/**< Sensitivities (first and second order) are computed.					 */ | ||||
|     SYMMETRIC_FB,         				/**< Sensitivities (first and second order) are computed.				 */ | ||||
|     INEXACT         				/**< Inexact sensitivities are computed by Newton iterations.				 */ | ||||
| }; | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_INTEGRATOR_EXPORT_TYPES_HPP
 | ||||
| @ -1,59 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/code_generation/integrators/integrator_generation.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_INTEGRATOR_GENERATION_HPP | ||||
| #define ACADO_TOOLKIT_INTEGRATOR_GENERATION_HPP | ||||
| 
 | ||||
| 
 | ||||
| // LIST OF HEADER FILES:
 | ||||
| // -----------------------------------------------------
 | ||||
| 
 | ||||
|    #include <acado/code_generation/integrators/integrator_export.hpp> | ||||
|    #include <acado/code_generation/integrators/rk_export.hpp> | ||||
|    #include <acado/code_generation/integrators/erk_export.hpp> | ||||
|    #include <acado/code_generation/integrators/explicit_euler_export.hpp> | ||||
|    #include <acado/code_generation/integrators/erk2_export.hpp> | ||||
|    #include <acado/code_generation/integrators/erk3_export.hpp> | ||||
|    #include <acado/code_generation/integrators/erk4_export.hpp> | ||||
|    #include <acado/code_generation/integrators/irk_export.hpp> | ||||
|    #include <acado/code_generation/integrators/gauss_legendre2_export.hpp> | ||||
|    #include <acado/code_generation/integrators/gauss_legendre4_export.hpp> | ||||
|    #include <acado/code_generation/integrators/gauss_legendre6_export.hpp> | ||||
|    #include <acado/code_generation/integrators/gauss_legendre8_export.hpp> | ||||
|    #include <acado/code_generation/integrators/radau_IIA1_export.hpp> | ||||
|    #include <acado/code_generation/integrators/radau_IIA3_export.hpp> | ||||
|    #include <acado/code_generation/integrators/radau_IIA5_export.hpp> | ||||
| 
 | ||||
| // -----------------------------------------------------
 | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_INTEGRATOR_GENERATION_HPP
 | ||||
| @ -1,606 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/irk_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2012 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_IRK_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_IRK_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/rk_export.hpp> | ||||
| #include <acado/code_generation/linear_solvers/linear_solver_generation.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored implicit Runge-Kutta integrator for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ImplicitRungeKuttaExport allows to export a tailored implicit Runge-Kutta integrator | ||||
|  *	for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ImplicitRungeKuttaExport : public RungeKuttaExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ImplicitRungeKuttaExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ImplicitRungeKuttaExport(	const ImplicitRungeKuttaExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ImplicitRungeKuttaExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ImplicitRungeKuttaExport& operator=(	const ImplicitRungeKuttaExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** This routine sets the eigenvalues of the inverse of the AA matrix. */ | ||||
|         returnValue setEigenvalues( const DMatrix& _eig ); | ||||
| 
 | ||||
| 		/** This routine sets the transformation matrices, defined by the inverse of the AA matrix. */ | ||||
|         returnValue setSimplifiedTransformations( const DMatrix& _transf1, const DMatrix& _transf2 ); | ||||
|         returnValue setSimplifiedTransformations( const DMatrix& _transf1, const DMatrix& _transf2, const DMatrix& _transf1_T, const DMatrix& _transf2_T ); | ||||
| 
 | ||||
| 		/** This routine sets the transformation matrices, defined by the inverse of the AA matrix. */ | ||||
|         returnValue setSingleTransformations( const double _tau, const DVector& _low_tria, const DMatrix& _transf1, const DMatrix& _transf2 ); | ||||
|         returnValue setSingleTransformations( const double _tau, const DVector& _low_tria, const DMatrix& _transf1, const DMatrix& _transf2, const DMatrix& _transf1_T, const DMatrix& _transf2_T ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns the model to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] _rhs				Name of the function, evaluating the right-hand side. | ||||
| 		 *	@param[in] _diffs_rhs		Name of the function, evaluating the derivatives of the right-hand side. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 
 | ||||
| 		returnValue setModel( const std::string& _rhs, const std::string& _diffs_rhs ); | ||||
| 							
 | ||||
|         
 | ||||
|         /** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		*                                                                      										\n | ||||
| 		*  \param outputGrids_	  	The vector containing a grid for each output function.			  				\n | ||||
| 		*  \param rhs 	  	  		The expressions corresponding the output functions.								\n | ||||
| 		*                                                                      										\n | ||||
| 		*  \return SUCCESSFUL_RETURN | ||||
| 		*/ | ||||
| 		virtual returnValue setupOutput( const std::vector<Grid> outputGrids_, | ||||
| 									  const std::vector<Expression> rhs ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.									\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  		The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 	The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Sets up the output with the grids for the different output functions.										\n
 | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \param outputGrids_	  			The vector containing a grid for each output function.			  			\n | ||||
| 		 *  \param _outputNames 	  		The names of the output functions.									  		\n | ||||
| 		 *  \param _diffs_outputNames 		The names of the functions, evaluating the derivatives of the outputs.		\n | ||||
| 		 *  \param _dims_output 			The dimensions of the output functions.										\n | ||||
| 		 *  \param _outputDependencies		A separate dependency matrix for each output.								\n | ||||
| 		 *                                                                      										\n | ||||
| 		 *  \return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setupOutput(  const std::vector<Grid> outputGrids_, | ||||
| 									  	  const std::vector<std::string> _outputNames, | ||||
| 									  	  const std::vector<std::string> _diffs_outputNames, | ||||
| 										  const std::vector<uint> _dims_output, | ||||
| 										  const std::vector<DMatrix> _outputDependencies ); | ||||
|         
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes the matrix DD, which is used to extrapolate the variables of the IRK method to the next step.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue initializeDDMatrix( ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Initializes the matrix coeffs, containing coefficients of polynomials that are used to evaluate the 
 | ||||
| 		 * 	continuous output (see evaluatePolynomial). | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue initializeCoefficients( ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Recursive function that helps with the computation of the coefficients of polynomials that are used to evaluate the 
 | ||||
| 		 * 	continuous output (see initializeCoefficients), by computing the correct combinations of elements of the vector | ||||
| 		 * 	cc from the Butcher table. | ||||
| 		 * | ||||
| 		 * 	@param[in] cVec			The vector with all the elements of the vector cc from the Butcher table, of which combinations | ||||
| 		 * 							are computed in a recursive way. | ||||
| 		 * 	@param[in] index		An index of the vector cVec which denotes the relevant part for this invocation. | ||||
| 		 * 	@param[in] numEls		The number of elements in the combination. | ||||
| 		 * 
 | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		DVector computeCombinations( const DVector& cVec, uint index, uint numEls ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the coefficients of the polynomial, representing the continuous output of the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] time				The point in the interval (0,1] for which the coefficients are returned. | ||||
| 		 * | ||||
| 		 *	\return Coefficients of the polynomial, corresponding the given grid point | ||||
| 		 */ | ||||
| 		DVector evaluatePolynomial( double time ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the coefficients of the derived polynomial, representing the derivative of the continuous output with respect to time.
 | ||||
| 		 * | ||||
| 		 *	@param[in] time				The point in the interval (0,1] for which the coefficients are returned. | ||||
| 		 * | ||||
| 		 *	\return Coefficients of the polynomial, corresponding the given grid point | ||||
| 		 */ | ||||
| 		DVector evaluateDerivedPolynomial( double time ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the coefficients of the polynomial, representing the continuous output of the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] variable			The variable containing the coefficients of the polynomial. | ||||
| 		 *	@param[in] grid				The variable containing the grid point for the specific output. | ||||
| 		 *	@param[in] h				The integration step size. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue evaluatePolynomial( ExportStatementBlock& block, 
 | ||||
| 										const ExportVariable& variable, 
 | ||||
| 										const ExportVariable& grid, 
 | ||||
| 										const std::string& h ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the coefficients of the derived polynomial, representing the derivative of the continuous output with respect to time.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] variable			The variable containing the coefficients of the polynomial. | ||||
| 		 *	@param[in] grid				The variable containing the grid point for the specific output. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue evaluateDerivedPolynomial( ExportStatementBlock& block, | ||||
| 										const ExportVariable& variable, | ||||
| 										const ExportVariable& grid ); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the coefficients of the polynomial for the complete grid of the output, corresponding a certain index.
 | ||||
| 		 * | ||||
| 		 *	@param[in] index	The index of the continuous output for which the coefficients are returned. | ||||
| 		 * | ||||
| 		 *	\return Coefficients of the polynomial, corresponding the given continuous output | ||||
| 		 */ | ||||
| 		DMatrix evaluatePolynomial( uint index ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the coefficients of the derived polynomial for the complete grid of the output, corresponding a certain index.
 | ||||
| 		 * | ||||
| 		 *	@param[in] index	The index of the continuous output for which the coefficients are returned. | ||||
| 		 * | ||||
| 		 *	\return Coefficients of the derived polynomial, corresponding the given continuous output | ||||
| 		 */ | ||||
| 		DMatrix evaluateDerivedPolynomial( uint index ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Divide the total number of measurements over the different integration steps.
 | ||||
| 		 * | ||||
| 		 *	@param[in] index	The index of the continuous output for which the division of measurements is returned. | ||||
| 		 * | ||||
| 		 *	\return The division of measurements over the integration steps, corresponding the given continuous output. | ||||
| 		 */ | ||||
| 		DVector divideMeasurements( uint index ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear input system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareInputSystem(	ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear output system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareOutputSystem( ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Forms a constant linear system matrix for the collocation equations, given a constant jacobian and mass matrix.
 | ||||
| 		 * | ||||
| 		 *	@param[in] jacobian			given constant Jacobian matrix | ||||
| 		 *	@param[in] mass				given constant mass matrix | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual DMatrix formMatrix( const DMatrix& mass, const DMatrix& jacobian ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the linear input system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] A1				A constant matrix defining the equations of the linear input system. | ||||
| 		 *	@param[in] B1				A constant matrix defining the equations of the linear input system. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveInputSystem( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& index3, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportVariable& Ah ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& index1, | ||||
| 											const ExportIndex& index2, | ||||
| 											const ExportIndex& index3, | ||||
| 											const ExportIndex& tmp_index, | ||||
| 											const ExportIndex& k_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportVariable& det, | ||||
| 											bool DERIVATIVES = false ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] A3				A constant matrix defining the equations of the linear output system. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveOutputSystem( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& index3, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportVariable& Ah, | ||||
| 										bool DERIVATIVES = false ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the states at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateStatesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& k_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportIndex& stage, | ||||
| 											const ExportIndex& i, | ||||
| 											const ExportIndex& tmp_index ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the states at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue evaluateStatesOutputSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportVariable& Ah, | ||||
| 													const ExportIndex& stage ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the right-hand side of the linear system at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateRhsImplicitSystem( 	ExportStatementBlock* block, | ||||
| 														const ExportIndex& k_index, | ||||
| 														const ExportIndex& stage ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the matrix of the linear system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] index1			The loop index of the outer loop. | ||||
| 		 *	@param[in] index2			The loop index of the inner loop. | ||||
| 		 *	@param[in] tmp_index		A temporary index to be used. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] evaluateB		True if the right-hand side of the linear system should also be evaluated, false otherwise. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateMatrix( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportIndex& k_index, | ||||
| 										const ExportVariable& _rk_A, | ||||
| 										const ExportVariable& Ah, | ||||
| 										const ExportVariable& C, | ||||
| 										bool evaluateB, | ||||
| 										bool DERIVATIVES ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Prepares the structures to evaluate the continuous output and exports the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue prepareOutputEvaluation( 	ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the necessary code for the computation of the continuous output.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] tmp_meas			The number of measurements in the current integration step (in case of an online grid). | ||||
| 		 *	@param[in] rk_tPrev			The time point, defining the beginning of the current integration step (in case of an online grid). | ||||
| 		 *	@param[in] time_tmp			A variable used for time transformations (in case of an online grid). | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue generateOutput( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index0, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& tmp_index1, | ||||
| 										const ExportIndex& tmp_index2, | ||||
| 										const ExportVariable& tmp_meas, | ||||
| 										const ExportVariable& time_tmp, | ||||
| 										const uint directions ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Copies all class members from given object.
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue copy(	const ImplicitRungeKuttaExport& arg | ||||
| 							); | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the performed number of Newton iterations.
 | ||||
| 		 * 
 | ||||
| 		 * 	\return The performed number of Newton iterations. | ||||
| 		 */ | ||||
| 		uint getNumIts() const; | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the performed number of Newton iterations for the initialization of the first step.
 | ||||
| 		 * 
 | ||||
| 		 * 	\return The performed number of Newton iterations for the initialization of the first step. | ||||
| 		 */ | ||||
|         uint getNumItsInit() const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
|         virtual ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
|     
 | ||||
| 		bool REUSE;						/**< This boolean is true when the IFTR method is used instead of the IFT method. */ | ||||
| 		bool CONTINUOUS_OUTPUT;			/**< This boolean is true when continuous output needs to be provided. */ | ||||
| 
 | ||||
| 		uint numIts;							/**< This is the performed number of Newton iterations. */ | ||||
| 		uint numItsInit;						/**< This is the performed number of Newton iterations for the initialization of the first step. */ | ||||
| 
 | ||||
| 		uint NDX2; | ||||
| 		uint NVARS2; | ||||
| 
 | ||||
| 		uint NVARS3; | ||||
| 
 | ||||
| 		ExportLinearSolver* solver;				/**< This is the exported linear solver that is used by the implicit Runge-Kutta method. */ | ||||
| 
 | ||||
| 		DMatrix DD;								/**< This matrix is used for the initialization of the variables for the next integration step. */ | ||||
| 		DMatrix coeffs;							/**< This matrix contains coefficients of polynomials that are used to evaluate the continuous output (see evaluatePolynomial). */ | ||||
| 
 | ||||
| 		DVector numDX_output; | ||||
| 		DVector numXA_output; | ||||
| 		DVector numVARS_output; | ||||
| 
 | ||||
|         
 | ||||
|         // DEFINITION OF THE EXPORTVARIABLES
 | ||||
| 		ExportVariable 	rk_rhsOutputTemp;		/**< Variable containing intermediate results of evaluations of the right-hand side expression of an output function. */ | ||||
| 		ExportVariable  rk_diffsOutputTemp;		/**< Variable containing intermediate results of evaluations of the derivatives of an output function. */ | ||||
| 		ExportVariable 	rk_outH;				/**< Variable that is used for the evaluations of the continuous output. */ | ||||
| 		ExportVariable 	rk_out;					/**< Variable that is used for the evaluations of the continuous output. */ | ||||
| 		ExportVariable 	polynEvalVar;			/**< Local variable that is used for the evaluations of the continuous output. */ | ||||
| 		
 | ||||
| 		ExportVariable stepsH;					/**< Variable defining the different integration step sizes in case of a non equidistant grid. */ | ||||
| 
 | ||||
| 		std::vector<ExportVariable> gridVariables;	/**< This vector contains an ExportVariable for the grid of each continuous output. */ | ||||
| 		std::vector<uint> totalMeas;				/**< This vector contains the total number of measurements per output (per shooting or integration interval, depending on grid type). */ | ||||
| 
 | ||||
| 		std::vector<ExportVariable> rk_outputs;			/**< Variables containing the evaluations of the continuous output from the integrator. */ | ||||
| 		std::vector<ExportVariable> polynVariables;		/**< Variables containing the coefficients for the polynomial. */ | ||||
| 		std::vector<ExportVariable> polynDerVariables;	/**< Variables containing the coefficients for the derived polynomial. */ | ||||
| 		std::vector<ExportVariable> numMeasVariables;	/**< Variables containing the number of measurements per integration interval. */ | ||||
| 		std::vector<ExportIndex> numMeas;				/**< Indices containing the number of measurements that are already computed. */ | ||||
| 
 | ||||
| 		ExportVariable	rk_mat1; | ||||
| 		ExportVariable 	rk_dk1; | ||||
| 
 | ||||
| 		ExportVariable	rk_A;					/**< Variable containing the matrix of the linear system. */ | ||||
| 		ExportVariable	rk_b;					/**< Variable containing the right-hand side of the linear system. */ | ||||
| 		ExportVariable  rk_auxSolver;			/**< Variable containing auxiliary values for the exported linear solver. */ | ||||
| 		ExportVariable 	rk_rhsTemp;				/**< Variable containing intermediate results of evaluations of the right-hand side expression. */ | ||||
| 
 | ||||
| 		ExportAcadoFunction lin_output; | ||||
| 		ExportVariable	rk_mat3; | ||||
| 		ExportVariable 	rk_dk3; | ||||
| 		ExportVariable  rk_diffsTemp3; | ||||
| 
 | ||||
| 		ExportVariable 	rk_diffK; | ||||
| 		ExportVariable	debug_mat; | ||||
| 
 | ||||
| 		DMatrix eig; | ||||
| 		DMatrix simplified_transf1; | ||||
| 		DMatrix simplified_transf2; | ||||
| 		DMatrix simplified_transf1_T; | ||||
| 		DMatrix simplified_transf2_T; | ||||
| 
 | ||||
| 		double tau; | ||||
| 		DVector low_tria; | ||||
| 		DMatrix single_transf1; | ||||
| 		DMatrix single_transf2; | ||||
| 
 | ||||
| 		DMatrix single_transf1_T; | ||||
| 		DMatrix single_transf2_T; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_lifted_adjoint_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_lifted_symmetric_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_lifted_fob_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_lifted_forward_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_lifted_feedback_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_symmetric_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_forward_export.hpp> | ||||
| #include <acado/code_generation/integrators/irk_export.ipp> | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_IRK_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,83 +0,0 @@ | ||||
| /* | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  *    \file include/acado/code_generation/integrators/irk_export.ipp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| // | ||||
| // Create the correct integrator | ||||
| // | ||||
| inline ImplicitRungeKuttaExport* createImplicitRungeKuttaExport(	UserInteraction* _userInteraction, | ||||
| 																	const std::string &_commonHeaderName	) | ||||
| { | ||||
| 	int sensGen; | ||||
| 	_userInteraction->get( DYNAMIC_SENSITIVITY, sensGen ); | ||||
| 	int liftedGen; | ||||
| 	_userInteraction->get( IMPLICIT_INTEGRATOR_MODE, liftedGen ); | ||||
| 	 | ||||
| 	if ( (ImplicitIntegratorMode)liftedGen == LIFTED && ((ExportSensitivityType)sensGen == FORWARD || (ExportSensitivityType)sensGen == INEXACT) ) { | ||||
| 		return new ForwardLiftedIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ImplicitIntegratorMode)liftedGen == LIFTED && (ExportSensitivityType)sensGen == BACKWARD ) { | ||||
| 		return new AdjointLiftedIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ImplicitIntegratorMode)liftedGen == LIFTED && (ExportSensitivityType)sensGen == SYMMETRIC ) { | ||||
| 		return new SymmetricLiftedIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ImplicitIntegratorMode)liftedGen == LIFTED && (ExportSensitivityType)sensGen == FORWARD_OVER_BACKWARD ) { | ||||
| 		return new ForwardBackwardLiftedIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ImplicitIntegratorMode)liftedGen == LIFTED_FEEDBACK && ((ExportSensitivityType)sensGen == FORWARD || (ExportSensitivityType)sensGen == INEXACT) ) { | ||||
| 		return new FeedbackLiftedIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ExportSensitivityType)sensGen == SYMMETRIC || (ExportSensitivityType)sensGen == FORWARD_OVER_BACKWARD ) { | ||||
| 		return new SymmetricIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if ( (ExportSensitivityType)sensGen == FORWARD ) { | ||||
| 		return new ForwardIRKExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else if( (ExportSensitivityType)sensGen == NO_SENSITIVITY ) { | ||||
| 		return new ImplicitRungeKuttaExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| 	else { | ||||
| 		ACADOERROR( RET_INVALID_OPTION ); | ||||
| 		return new ImplicitRungeKuttaExport(_userInteraction, _commonHeaderName); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| // end of file. | ||||
| @ -1,287 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/irk_forward_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2013 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_IRK_FORWARD_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_IRK_FORWARD_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_export.hpp> | ||||
| #include <acado/code_generation/integrators/rk_sensitivities_export.hpp> | ||||
| #include <acado/code_generation/linear_solvers/linear_solver_generation.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored implicit Runge-Kutta integrator with forward sensitivity generation for fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ForwardIRKExport allows to export a tailored implicit Runge-Kutta integrator | ||||
|  *	with forward sensitivity generation for fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ForwardIRKExport : public ImplicitRungeKuttaExport, public RKSensitivitiesExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ForwardIRKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ForwardIRKExport(	const ForwardIRKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ForwardIRKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ForwardIRKExport& operator=(	const ForwardIRKExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
|         
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 		
 | ||||
| 		
 | ||||
| 		/** Returns the index corresponding Compressed Row Storage (CRS) for the dependency matrix of a specific output function.
 | ||||
| 		 * | ||||
| 		 * @param[in] output	The number of the output function. | ||||
| 		 * @param[in] row		The number of the row, corresponding the element of interest. | ||||
| 		 * @param[in] col		The number of the column, corresponding the element of interest. | ||||
| 		 * | ||||
| 		 *	\return The CRS index. | ||||
| 		 */ | ||||
| 		returnValue getCRSIndex( uint output, ExportIndex row, ExportIndex col ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear input system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareInputSystem(	ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear output system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareOutputSystem( ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states, defined by the linear input system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesInputSystem( 	ExportStatementBlock* block, | ||||
| 														const ExportIndex& index1, | ||||
| 														const ExportIndex& index2, | ||||
| 														const ExportVariable& Bh, | ||||
| 														bool STATES  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2, | ||||
| 													const ExportVariable& Ah, | ||||
| 													const ExportVariable& Bh, | ||||
| 													const ExportVariable& det, | ||||
| 													bool STATES, | ||||
| 													uint number 		); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states, defined by the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesOutputSystem( 	ExportStatementBlock* block, | ||||
| 												const ExportIndex& index1, | ||||
| 												const ExportIndex& index2, | ||||
| 												const ExportIndex& index3, | ||||
| 												const ExportIndex& index4, | ||||
| 												const ExportIndex& tmp_index1, | ||||
| 												const ExportIndex& tmp_index2, | ||||
| 												const ExportVariable& Ah, | ||||
| 												const ExportVariable& Bh, | ||||
| 												bool STATES, | ||||
| 												uint number 		); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the computation of the sensitivities for the continuous output.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] tmp_meas			The number of measurements in the current integration step (in case of an online grid). | ||||
| 		 *	@param[in] rk_tPrev			The time point, defining the beginning of the current integration step (in case of an online grid). | ||||
| 		 *	@param[in] time_tmp			A variable used for time transformations (in case of an online grid). | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] base				The number of states in stages with respect to which the sensitivities have already been computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue sensitivitiesOutputs( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& index0, | ||||
| 											const ExportIndex& index1, | ||||
| 											const ExportIndex& index2, | ||||
| 											const ExportIndex& tmp_index1, | ||||
| 											const ExportIndex& tmp_index2, | ||||
| 											const ExportIndex& tmp_index3, | ||||
| 											const ExportVariable& tmp_meas, | ||||
| 											const ExportVariable& time_tmp, | ||||
| 											bool STATES, | ||||
| 											uint base			); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the propagation of the sensitivities for the continuous output.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] tmp_meas			The number of measurements in the current integration step (in case of an online grid). | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue propagateOutputs(	ExportStatementBlock* block, | ||||
| 												const ExportIndex& index, | ||||
| 												const ExportIndex& index0, | ||||
| 												const ExportIndex& index1, | ||||
| 												const ExportIndex& index2, | ||||
| 												const ExportIndex& index3, | ||||
| 												const ExportIndex& tmp_index1, | ||||
| 												const ExportIndex& tmp_index2, | ||||
| 												const ExportIndex& tmp_index3, | ||||
| 												const ExportIndex& tmp_index4, | ||||
| 												const ExportVariable& tmp_meas ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 		
 | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_IRK_FORWARD_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,184 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/irk_lifted_adjoint_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2015 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_LIFTED_IRK_ADJOINT_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_LIFTED_IRK_ADJOINT_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_lifted_forward_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored lifted implicit Runge-Kutta integrator with adjoint sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class AdjointLiftedIRKExport allows to export a tailored lifted implicit Runge-Kutta integrator | ||||
|  *	with adjoint sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class AdjointLiftedIRKExport : public ForwardLiftedIRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         AdjointLiftedIRKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         AdjointLiftedIRKExport(	const AdjointLiftedIRKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~AdjointLiftedIRKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		AdjointLiftedIRKExport& operator=(	const AdjointLiftedIRKExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
|         
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		Expression returnLowerTriangular( const Expression& expr ); | ||||
| 
 | ||||
| 
 | ||||
| 		virtual returnValue evaluateRhsSensitivities( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2 ); | ||||
| 
 | ||||
| 
 | ||||
| 		virtual returnValue updateImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
| 		ExportAcadoFunction diffs_sweep;		/**< Module to export the evaluation of a forward sweep of the derivatives of the ordinary differential equations. */ | ||||
| 
 | ||||
| 		ExportVariable  rk_diffsTemp2_full; | ||||
| 
 | ||||
| 		ExportVariable	rk_S_traj;				/**< Variable containing the forward trajectory of the first order sensitivities. */ | ||||
| //		ExportVariable	rk_A_traj;				/**< Variable containing the factorized matrix of the linear system over the forward trajectory. */
 | ||||
| //		ExportVariable	rk_aux_traj;			/**< Variable containing the factorized matrix of the linear system over the forward trajectory. */
 | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_LIFTED_IRK_ADJOINT_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,229 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/irk_lifted_feedback_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2016 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_LIFTED_IRK_FEEDBACK_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_LIFTED_IRK_FEEDBACK_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_forward_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *  \brief Allows to export a tailored lifted implicit Runge-Kutta integrator with forward sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *  \ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *  The class FeedbackLiftedIRKExport allows to export a tailored lifted implicit Runge-Kutta integrator | ||||
|  *  with forward sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *  \author Rien Quirynen | ||||
|  */ | ||||
| class FeedbackLiftedIRKExport : public ForwardIRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
|         /** Default constructor.
 | ||||
|          * | ||||
|          *  @param[in] _userInteraction     Pointer to corresponding user interface. | ||||
|          *  @param[in] _commonHeaderName    Name of common header file to be included. | ||||
|          */ | ||||
|         FeedbackLiftedIRKExport(    UserInteraction* _userInteraction = 0, | ||||
|                             const std::string& _commonHeaderName = "" | ||||
|                             ); | ||||
| 
 | ||||
|         /** Copy constructor (deep copy).
 | ||||
|          * | ||||
|          *  @param[in] arg      Right-hand side object. | ||||
|          */ | ||||
|         FeedbackLiftedIRKExport(    const FeedbackLiftedIRKExport& arg | ||||
|                             ); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
|          */ | ||||
|         virtual ~FeedbackLiftedIRKExport( ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Assignment operator (deep copy).
 | ||||
|          * | ||||
|          *  @param[in] arg      Right-hand side object. | ||||
|          */ | ||||
|         FeedbackLiftedIRKExport& operator=( const FeedbackLiftedIRKExport& arg | ||||
|                                         ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Initializes export of a tailored integrator.
 | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
|         /** .
 | ||||
|          * | ||||
|          *  @param[in]      . | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue setNonlinearFeedback( const DMatrix& C, const Expression& feedb ); | ||||
|         
 | ||||
| 
 | ||||
|         /** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
|          * | ||||
|          *  @param[in] declarations     List of declarations. | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue getDataDeclarations(    ExportStatementBlock& declarations, | ||||
|                                                     ExportStruct dataStruct = ACADO_ANY | ||||
|                                                     ) const; | ||||
| 
 | ||||
| 
 | ||||
|         /** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
|          * | ||||
|          *  @param[in] declarations     List of declarations. | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue getFunctionDeclarations(    ExportStatementBlock& declarations | ||||
|                                                         ) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         /** Exports source code of the auto-generated integrator into the given directory.
 | ||||
|          * | ||||
|          *  @param[in] code             Code block containing the auto-generated integrator. | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue getCode(    ExportStatementBlock& code | ||||
|                                         ); | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
|         /** Precompute as much as possible for the linear input system and export the resulting definitions.
 | ||||
|          * | ||||
|          *  @param[in] code         The block to which the code will be exported. | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         returnValue setInputSystem( ); | ||||
|         returnValue prepareInputSystem( ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Exports the code needed to solve the system of collocation equations for the linear input system.
 | ||||
|          * | ||||
|          *  @param[in] block            The block to which the code will be exported. | ||||
|          *  @param[in] A1               A constant matrix defining the equations of the linear input system. | ||||
|          *  @param[in] B1               A constant matrix defining the equations of the linear input system. | ||||
|          *  @param[in] Ah               The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue solveInputSystem(   ExportStatementBlock* block, | ||||
|                                         const ExportIndex& index1, | ||||
|                                         const ExportIndex& index2, | ||||
|                                         const ExportIndex& index3, | ||||
|                                         const ExportIndex& k_index, | ||||
|                                         const ExportVariable& Ah ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Exports the evaluation of the states at all stages.
 | ||||
|          * | ||||
|          *  @param[in] block            The block to which the code will be exported. | ||||
|          *  @param[in] Ah               The matrix A of the IRK method, multiplied by the step size h. | ||||
|          *  @param[in] index            The loop index, defining the stage. | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual returnValue evaluateAllStatesImplicitSystem(    ExportStatementBlock* block, | ||||
|                                             const ExportIndex& k_index, | ||||
|                                             const ExportVariable& Ah, | ||||
|                                             const ExportVariable& C, | ||||
|                                             const ExportIndex& stage, | ||||
|                                             const ExportIndex& i, | ||||
|                                             const ExportIndex& tmp_index ); | ||||
| 
 | ||||
| 
 | ||||
|         /** Returns the largest global export variable.
 | ||||
|          * | ||||
|          *  \return SUCCESSFUL_RETURN | ||||
|          */ | ||||
|         virtual ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
|         ExportVariable  rk_seed;                /**< Variable containing the forward seed. */ | ||||
|         ExportVariable  rk_stageValues;         /**< Variable containing the evaluated stage values. */ | ||||
| 
 | ||||
|         ExportVariable  rk_Xprev;               /**< Variable containing the full previous state trajectory. */ | ||||
|         ExportVariable  rk_Uprev;               /**< Variable containing the previous control trajectory. */ | ||||
| 
 | ||||
|         ExportVariable  rk_delta;               /**< Variable containing the update on the optimization variables. */ | ||||
| 
 | ||||
|         ExportVariable  rk_xxx_lin; | ||||
|         ExportVariable  rk_Khat_traj; | ||||
|         ExportVariable  rk_Xhat_traj; | ||||
| 
 | ||||
|         // Static feedback function:
 | ||||
|         ExportAcadoFunction feedb; | ||||
|         DMatrix C11; | ||||
|         uint NF; | ||||
| 
 | ||||
|         DMatrix mat1, sensMat; | ||||
| 
 | ||||
|         ExportVariable  rk_kTemp; | ||||
|         ExportVariable  rk_dk1_tmp; | ||||
|         ExportVariable  rk_dk2_tmp; | ||||
| 
 | ||||
|         ExportAcadoFunction sens_input; | ||||
|         ExportAcadoFunction sens_fdb; | ||||
|         ExportVariable  rk_sensF; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_LIFTED_IRK_FEEDBACK_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,240 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/irk_lifted_fob_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2015 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_LIFTED_IRK_FORWARD_BACKWARD_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_LIFTED_IRK_FORWARD_BACKWARD_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_lifted_forward_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored lifted implicit Runge-Kutta integrator with forward-over-adjoint second order sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ForwardBackwardLiftedIRKExport allows to export a tailored lifted implicit Runge-Kutta integrator | ||||
|  *	with forward-over-adjoint second order sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ForwardBackwardLiftedIRKExport : public ForwardLiftedIRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ForwardBackwardLiftedIRKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ForwardBackwardLiftedIRKExport(	const ForwardBackwardLiftedIRKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ForwardBackwardLiftedIRKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ForwardBackwardLiftedIRKExport& operator=(	const ForwardBackwardLiftedIRKExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
|         
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the states at all stages.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateAllStatesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& k_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportIndex& stage, | ||||
| 											const ExportIndex& i, | ||||
| 											const ExportIndex& tmp_index ); | ||||
| 
 | ||||
| 
 | ||||
| 		virtual returnValue updateImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		Expression returnLowerTriangular( const Expression& expr ); | ||||
| 
 | ||||
| 
 | ||||
| 		returnValue updateHessianTerm( ExportStatementBlock* block, const ExportIndex& index1, const ExportIndex& index2 ); | ||||
| 
 | ||||
| 
 | ||||
| 		virtual returnValue allSensitivitiesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2, | ||||
| 													const ExportIndex& tmp_index3, | ||||
| 													const ExportIndex& k_index, | ||||
| 													const ExportVariable& Bh, | ||||
| 													bool update ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateRhsInexactSensitivities( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2, | ||||
| 													const ExportIndex& tmp_index3, | ||||
| 													const ExportIndex& k_index, | ||||
| 													const ExportVariable& Ah ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 
 | ||||
| 		ExportAcadoFunction diffs_sweep;		/**< Module to export the evaluation of a forward sweep of the derivatives of the ordinary differential equations. */ | ||||
| 		ExportAcadoFunction adjoint_sweep;		/**< Module to export the evaluation of a forward sweep of the derivatives of the ordinary differential equations. */ | ||||
| 
 | ||||
| 		ExportVariable  rk_b_trans; | ||||
| 
 | ||||
| 		ExportVariable  rk_adj_diffs_tmp; | ||||
| 
 | ||||
| 		ExportVariable  rk_Khat_traj; | ||||
| 		ExportVariable  rk_Xhat_traj; | ||||
| 
 | ||||
| 		ExportVariable	rk_xxx_traj;			/**< Variable containing the forward trajectory of the state values. */ | ||||
| 		ExportVariable	rk_adj_traj;			/**< Variable containing the adjoint trajectory of the lambda_hat values. */ | ||||
| 		ExportVariable	rk_S_traj;				/**< Variable containing the forward trajectory of the first order sensitivities. */ | ||||
| 		ExportVariable	rk_A_traj;				/**< Variable containing the factorized matrix of the linear system over the forward trajectory. */ | ||||
| 
 | ||||
| 		ExportVariable  rk_hess_tmp1; | ||||
| 		ExportVariable  rk_hess_tmp2; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_LIFTED_IRK_FORWARD_BACKWARD_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
| @ -1,426 +0,0 @@ | ||||
| /*
 | ||||
|  *    This file is part of ACADO Toolkit. | ||||
|  * | ||||
|  *    ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization. | ||||
|  *    Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau, | ||||
|  *    Milan Vukov, Rien Quirynen, KU Leuven. | ||||
|  *    Developed within the Optimization in Engineering Center (OPTEC) | ||||
|  *    under supervision of Moritz Diehl. All rights reserved. | ||||
|  * | ||||
|  *    ACADO Toolkit is free software; you can redistribute it and/or | ||||
|  *    modify it under the terms of the GNU Lesser General Public | ||||
|  *    License as published by the Free Software Foundation; either | ||||
|  *    version 3 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *    ACADO Toolkit is distributed in the hope that it will be useful, | ||||
|  *    but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *    Lesser General Public License for more details. | ||||
|  * | ||||
|  *    You should have received a copy of the GNU Lesser General Public | ||||
|  *    License along with ACADO Toolkit; if not, write to the Free Software | ||||
|  *    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
|  *    \file include/acado/code_generation/integrators/irk_lifted_forward_export.hpp | ||||
|  *    \author Rien Quirynen | ||||
|  *    \date 2014 | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef ACADO_TOOLKIT_LIFTED_IRK_FORWARD_EXPORT_HPP | ||||
| #define ACADO_TOOLKIT_LIFTED_IRK_FORWARD_EXPORT_HPP | ||||
| 
 | ||||
| #include <acado/code_generation/integrators/irk_forward_export.hpp> | ||||
| 
 | ||||
| 
 | ||||
| BEGIN_NAMESPACE_ACADO | ||||
| 
 | ||||
| /** 
 | ||||
|  *	\brief Allows to export a tailored lifted implicit Runge-Kutta integrator with forward sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *	\ingroup NumericalAlgorithms | ||||
|  * | ||||
|  *	The class ForwardLiftedIRKExport allows to export a tailored lifted implicit Runge-Kutta integrator | ||||
|  *	with forward sensitivity generation for extra fast model predictive control. | ||||
|  * | ||||
|  *	\author Rien Quirynen | ||||
|  */ | ||||
| class ForwardLiftedIRKExport : public ForwardIRKExport | ||||
| { | ||||
|     //
 | ||||
|     // PUBLIC MEMBER FUNCTIONS:
 | ||||
|     //
 | ||||
| 
 | ||||
|     public: | ||||
| 
 | ||||
| 		/** Default constructor. 
 | ||||
| 		 * | ||||
| 		 *	@param[in] _userInteraction		Pointer to corresponding user interface. | ||||
| 		 *	@param[in] _commonHeaderName	Name of common header file to be included. | ||||
| 		 */ | ||||
|         ForwardLiftedIRKExport(	UserInteraction* _userInteraction = 0, | ||||
| 							const std::string& _commonHeaderName = "" | ||||
| 							); | ||||
| 
 | ||||
| 		/** Copy constructor (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
|         ForwardLiftedIRKExport(	const ForwardLiftedIRKExport& arg | ||||
| 							); | ||||
| 
 | ||||
|         /** Destructor. 
 | ||||
| 		 */ | ||||
|         virtual ~ForwardLiftedIRKExport( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assignment operator (deep copy).
 | ||||
| 		 * | ||||
| 		 *	@param[in] arg		Right-hand side object. | ||||
| 		 */ | ||||
| 		ForwardLiftedIRKExport& operator=(	const ForwardLiftedIRKExport& arg | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Initializes export of a tailored integrator.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setup( ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Assigns Differential Equation to be used by the integrator.
 | ||||
| 		 * | ||||
| 		 *	@param[in] rhs		Right-hand side expression. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue setDifferentialEquation( const Expression& rhs ); | ||||
|         
 | ||||
| 
 | ||||
| 		/** Adds all data declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getDataDeclarations(	ExportStatementBlock& declarations, | ||||
| 													ExportStruct dataStruct = ACADO_ANY | ||||
| 													) const; | ||||
| 
 | ||||
| 
 | ||||
| 		/** Adds all function (forward) declarations of the auto-generated integrator to given list of declarations.
 | ||||
| 		 * | ||||
| 		 *	@param[in] declarations		List of declarations. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getFunctionDeclarations(	ExportStatementBlock& declarations | ||||
| 														) const; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports source code of the auto-generated integrator into the given directory.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code				Code block containing the auto-generated integrator. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue getCode(	ExportStatementBlock& code | ||||
| 										); | ||||
| 
 | ||||
| 
 | ||||
| 	protected: | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear input system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareInputSystem(	ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Precompute as much as possible for the linear output system and export the resulting definitions.
 | ||||
| 		 * | ||||
| 		 *	@param[in] code			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue prepareOutputSystem( ExportStatementBlock& code ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to solve the system of collocation equations for the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue solveImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& index1, | ||||
| 											const ExportIndex& index2, | ||||
| 											const ExportIndex& index3, | ||||
| 											const ExportIndex& tmp_index, | ||||
| 											const ExportIndex& k_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportVariable& det, | ||||
| 											bool DERIVATIVES = false ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the inexact matrix for the linear system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] index1			The loop index of the outer loop. | ||||
| 		 *	@param[in] index2			The loop index of the inner loop. | ||||
| 		 *	@param[in] tmp_index		A temporary index to be used. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] evaluateB		True if the right-hand side of the linear system should also be evaluated, false otherwise. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateInexactMatrix( 	ExportStatementBlock* block, | ||||
| 										const ExportIndex& index1, | ||||
| 										const ExportIndex& index2, | ||||
| 										const ExportIndex& tmp_index, | ||||
| 										const ExportIndex& k_index, | ||||
| 										const ExportVariable& _rk_A, | ||||
| 										const ExportVariable& Ah, | ||||
| 										const ExportVariable& C, | ||||
| 										bool evaluateB, | ||||
| 										bool DERIVATIVES ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states, defined by the linear input system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesInputSystem( 	ExportStatementBlock* block, | ||||
| 														const ExportIndex& index1, | ||||
| 														const ExportIndex& index2, | ||||
| 														const ExportVariable& Bh, | ||||
| 														bool STATES  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] det				The variable that holds the determinant of the matrix in the linear system. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateRhsInexactSensitivities( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2, | ||||
| 													const ExportIndex& tmp_index3, | ||||
| 													const ExportIndex& k_index, | ||||
| 													const ExportVariable& Ah ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the states at all stages.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateAllStatesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& k_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportIndex& stage, | ||||
| 											const ExportIndex& i, | ||||
| 											const ExportIndex& tmp_index ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the states at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The matrix A of the IRK method, multiplied by the step size h. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateStatesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& k_index, | ||||
| 											const ExportVariable& Ah, | ||||
| 											const ExportVariable& C, | ||||
| 											const ExportIndex& stage, | ||||
| 											const ExportIndex& i, | ||||
| 											const ExportIndex& tmp_index ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the evaluation of the right-hand side of the linear system at a specific stage.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] index			The loop index, defining the stage. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue evaluateRhsImplicitSystem( 	ExportStatementBlock* block, | ||||
| 														const ExportIndex& k_index, | ||||
| 														const ExportIndex& stage ); | ||||
| 
 | ||||
| 
 | ||||
| 		virtual returnValue allSensitivitiesImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2, | ||||
| 													const ExportIndex& tmp_index3, | ||||
| 													const ExportIndex& k_index, | ||||
| 													const ExportVariable& Bh, | ||||
| 													bool update ); | ||||
| 
 | ||||
| 
 | ||||
| 		virtual returnValue evaluateRhsSensitivities( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& index3, | ||||
| 													const ExportIndex& tmp_index1, | ||||
| 													const ExportIndex& tmp_index2 ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to update the sensitivities of the states defined by the nonlinear, fully implicit system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue updateImplicitSystem( 	ExportStatementBlock* block, | ||||
| 													const ExportIndex& index1, | ||||
| 													const ExportIndex& index2, | ||||
| 													const ExportIndex& tmp_index  	); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the code needed to compute the sensitivities of the states, defined by the linear output system.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] Ah				The variable containing the internal coefficients of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] Bh				The variable containing the weights of the RK method, multiplied with the step size. | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] number			This number defines the stage of the state with respect to which the sensitivities are computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue sensitivitiesOutputSystem( 	ExportStatementBlock* block, | ||||
| 												const ExportIndex& index1, | ||||
| 												const ExportIndex& index2, | ||||
| 												const ExportIndex& index3, | ||||
| 												const ExportIndex& index4, | ||||
| 												const ExportIndex& tmp_index1, | ||||
| 												const ExportIndex& tmp_index2, | ||||
| 												const ExportVariable& Ah, | ||||
| 												const ExportVariable& Bh, | ||||
| 												bool STATES, | ||||
| 												uint number 		); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the computation of the sensitivities for the continuous output.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] tmp_meas			The number of measurements in the current integration step (in case of an online grid). | ||||
| 		 *	@param[in] rk_tPrev			The time point, defining the beginning of the current integration step (in case of an online grid). | ||||
| 		 *	@param[in] time_tmp			A variable used for time transformations (in case of an online grid). | ||||
| 		 *	@param[in] STATES			True if the sensitivities with respect to a state are needed, false otherwise. | ||||
| 		 *	@param[in] base				The number of states in stages with respect to which the sensitivities have already been computed. | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		returnValue sensitivitiesOutputs( 	ExportStatementBlock* block, | ||||
| 											const ExportIndex& index0, | ||||
| 											const ExportIndex& index1, | ||||
| 											const ExportIndex& index2, | ||||
| 											const ExportIndex& tmp_index1, | ||||
| 											const ExportIndex& tmp_index2, | ||||
| 											const ExportIndex& tmp_index3, | ||||
| 											const ExportVariable& tmp_meas, | ||||
| 											const ExportVariable& time_tmp, | ||||
| 											bool STATES, | ||||
| 											uint base			); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Exports the propagation of the sensitivities for the continuous output.
 | ||||
| 		 * | ||||
| 		 *	@param[in] block			The block to which the code will be exported. | ||||
| 		 *	@param[in] tmp_meas			The number of measurements in the current integration step (in case of an online grid). | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		virtual returnValue propagateOutputs(	ExportStatementBlock* block, | ||||
| 												const ExportIndex& index, | ||||
| 												const ExportIndex& index0, | ||||
| 												const ExportIndex& index1, | ||||
| 												const ExportIndex& index2, | ||||
| 												const ExportIndex& index3, | ||||
| 												const ExportIndex& tmp_index1, | ||||
| 												const ExportIndex& tmp_index2, | ||||
| 												const ExportIndex& tmp_index3, | ||||
| 												const ExportIndex& tmp_index4, | ||||
| 												const ExportVariable& tmp_meas ); | ||||
| 
 | ||||
| 
 | ||||
| 		/** Returns the largest global export variable.
 | ||||
| 		 * | ||||
| 		 *	\return SUCCESSFUL_RETURN | ||||
| 		 */ | ||||
| 		ExportVariable getAuxVariable() const; | ||||
| 
 | ||||
| 
 | ||||
|     protected: | ||||
| 
 | ||||
| 		ExportAcadoFunction forward_sweep;		/**< Module to export the evaluation of a forward sweep of the derivatives of the ordinary differential equations. */ | ||||
| 		ExportAcadoFunction adjoint_sweep;		/**< Module to export the evaluation of an adjoint sweep of the derivatives of the ordinary differential equations. */ | ||||
| 		ExportVariable  rk_b_trans; | ||||
| 		ExportVariable	rk_adj_traj;			/**< Variable containing the adjoint trajectory of the lambda_hat values. */ | ||||
| 		ExportVariable  rk_adj_diffs_tmp; | ||||
| 		ExportVariable 	rk_seed2; | ||||
| 		ExportVariable	rk_xxx_traj;			/**< Variable containing the forward trajectory of the state values. */ | ||||
| 
 | ||||
| 		ExportVariable 	rk_diffSweep; | ||||
| 		ExportVariable 	rk_I; | ||||
| 
 | ||||
| 		ExportVariable 	rk_seed;				/**< Variable containing the forward seed. */ | ||||
| 		ExportVariable 	rk_stageValues;			/**< Variable containing the evaluated stage values. */ | ||||
| 
 | ||||
| 		ExportVariable 	rk_Xprev;				/**< Variable containing the full previous state trajectory. */ | ||||
| 		ExportVariable 	rk_Uprev;				/**< Variable containing the previous control trajectory. */ | ||||
| 
 | ||||
| 		ExportVariable 	rk_delta;				/**< Variable containing the update on the optimization variables. */ | ||||
| 
 | ||||
| 		ExportVariable  rk_xxx_lin; | ||||
| 		ExportVariable  rk_Khat_traj; | ||||
| 		ExportVariable  rk_Xhat_traj; | ||||
| 
 | ||||
| 		ExportVariable 	rk_diffK_local; | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| CLOSE_NAMESPACE_ACADO | ||||
| 
 | ||||
| 
 | ||||
| #endif  // ACADO_TOOLKIT_LIFTED_IRK_FORWARD_EXPORT_HPP
 | ||||
| 
 | ||||
| // end of file.
 | ||||
Some files were not shown because too many files have changed in this diff Show More
					Loading…
					
					
				
		Reference in new issue