dirk5_export.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ACADO Toolkit.
3  *
4  * ACADO Toolkit -- A Toolkit for Automatic Control and Dynamic Optimization.
5  * Copyright (C) 2008-2014 by Boris Houska, Hans Joachim Ferreau,
6  * Milan Vukov, Rien Quirynen, KU Leuven.
7  * Developed within the Optimization in Engineering Center (OPTEC)
8  * under supervision of Moritz Diehl. All rights reserved.
9  *
10  * ACADO Toolkit is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 3 of the License, or (at your option) any later version.
14  *
15  * ACADO Toolkit is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with ACADO Toolkit; if not, write to the Free Software
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23  *
24  */
25 
26 
27 
35 
37 
39 
40 
41 //
42 // PUBLIC MEMBER FUNCTIONS:
43 //
44 
46  const std::string& _commonHeaderName
47  ) : DiagonallyImplicitRKExport( _userInteraction,_commonHeaderName )
48 {
49  numStages = 5;
50 }
51 
52 
55 {
56  numStages = 5;
57  copy( arg );
58 }
59 
60 
62 {
63  clear( );
64 }
65 
66 
67 // PROTECTED:
68 
69 //
70 // Register the integrator
71 //
72 
74  const std::string &_commonHeaderName)
75 {
76  DMatrix AA(5,5);
77  DVector bb(5);
78  DVector cc(5);
79 
80  AA(0,0) = (6.0-sqrt(6.0))/10.0; AA(0,1) = 0.0; AA(0,2) = 0.0; AA(0,3) = 0.0; AA(0,4) = 0.0;
81  AA(1,0) = (5.0*sqrt(6.0)-6.0)/14.0; AA(1,1) = (6.0-sqrt(6.0))/10.0; AA(1,2) = 0.0; AA(1,3) = 0.0; AA(1,4) = 0.0;
82  AA(2,0) = (607.0*sqrt(6.0)+888.0)/2850.0; AA(2,1) = (126.0-161.0*sqrt(6.0))/1425.0; AA(2,2) = (6.0-sqrt(6.0))/10.0; AA(2,3) = 0.0; AA(2,4) = 0.0;
83  AA(3,0) = (3153.0-3082.0*sqrt(6.0))/14250.0; AA(3,1) = (3213.0+1148.0*sqrt(6.0))/28500.0; AA(3,2) = (88.0*sqrt(6.0)-267.0)/500.0; AA(3,3) = (6.0-sqrt(6.0))/10.0; AA(3,4) = 0.0;
84  AA(4,0) = (14638.0*sqrt(6.0)-32583.0)/71250.0; AA(4,1) = (364.0*sqrt(6.0)-17199.0)/142500.0; AA(4,2) = (1329.0-544.0*sqrt(6.0))/2500.0; AA(4,3) = (131.0*sqrt(6.0)-96.0)/625.0; AA(4,4) = (6.0-sqrt(6.0))/10.0;
85 
86  bb(0) = 0.0;
87  bb(1) = 0.0;
88  bb(2) = 1.0/9.0;
89  bb(3) = (16.0-sqrt(6.0))/36.0;
90  bb(4) = (16.0+sqrt(6.0))/36.0;
91 
92  cc(0) = (6.0-sqrt(6.0))/10.0;
93  cc(1) = (6.0+9.0*sqrt(6.0))/35.0;
94  cc(2) = 1.0;
95  cc(3) = (4.0-sqrt(6.0))/10.0;
96  cc(4) = (4.0+sqrt(6.0))/10.0;
97 
98  DiagonallyImplicitRKExport* integrator = createDiagonallyImplicitRKExport(_userInteraction, _commonHeaderName);
99  integrator->initializeButcherTableau(AA, bb, cc);
100 
101  return integrator;
102 }
103 
105 
106 // end of file.
DiagonallyImplicitRKExport * createDiagonallyImplicitRKExport(UserInteraction *_userInteraction, const std::string &_commonHeaderName)
IntermediateState sqrt(const Expression &arg)
DiagonallyIRK5Export(UserInteraction *_userInteraction=0, const std::string &_commonHeaderName="")
IntegratorExport * createDiagonallyIRK5Export(UserInteraction *_userInteraction, const std::string &_commonHeaderName)
#define CLOSE_NAMESPACE_ACADO
virtual returnValue copy(const ImplicitRungeKuttaExport &arg)
Allows to export a tailored diagonally implicit 5-stage Runge-Kutta method of order 5 for fast model ...
Encapsulates all user interaction for setting options, logging data and plotting results.
returnValue initializeButcherTableau(const DMatrix &_AA, const DVector &_bb, const DVector &_cc)
Definition: rk_export.cpp:78
Allows to export a tailored integrator for fast model predictive control.
#define BEGIN_NAMESPACE_ACADO
virtual ~DiagonallyIRK5Export()
virtual returnValue clear()
Allows to export a tailored diagonally implicit Runge-Kutta integrator for fast model predictive cont...
Definition: dirk_export.hpp:54


acado
Author(s): Milan Vukov, Rien Quirynen
autogenerated on Mon Jun 10 2019 12:34:32