lagrange_term.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 
36 
37 
39 
40 
41 
42 
44 
45  nLagrangeTerms = 0;
46  lagrangeFcn = 0;
47 }
48 
49 
51 
52  grid = grid_;
53  return SUCCESSFUL_RETURN;
54 }
55 
56 
58 
59  int run1;
60  grid = rhs.grid ;
62 
63  if( rhs.lagrangeFcn != 0 ){
64  lagrangeFcn = (Expression**)calloc(nLagrangeTerms,sizeof(Expression*));
65  for( run1 = 0; run1 < nLagrangeTerms; run1++ )
66  lagrangeFcn[run1] = new Expression(*rhs.lagrangeFcn[run1]);
67  }
68  else lagrangeFcn = 0;
69 }
70 
71 
73 
74  int run1;
75 
76  if( lagrangeFcn != 0 ){
77  for( run1 = 0; run1 < nLagrangeTerms; run1++ )
78  if( lagrangeFcn[run1] != 0 ) delete lagrangeFcn[run1];
79  free(lagrangeFcn);
80  }
81 }
82 
83 
85 
86  int run1;
87 
88  if( this != &rhs ){
89 
90  if( lagrangeFcn != 0 ){
91  for( run1 = 0; run1 < nLagrangeTerms; run1++ )
92  if( lagrangeFcn[run1] != 0 ) delete lagrangeFcn[run1];
93  free(lagrangeFcn);
94  }
95 
96  grid = rhs.grid ;
98 
99  if( rhs.lagrangeFcn != 0 ){
100  lagrangeFcn = (Expression**)calloc(nLagrangeTerms,sizeof(Expression*));
101  for( run1 = 0; run1 < nLagrangeTerms; run1++ )
102  lagrangeFcn[run1] = new Expression(*rhs.lagrangeFcn[run1]);
103  }
104  else lagrangeFcn = 0;
105  }
106  return *this;
107 }
108 
109 
110 
112 
113 // end of file.
Allows to pass back messages to the calling function.
Allows to conveniently handle (one-dimensional) grids consisting of time points.
Definition: grid.hpp:58
#define CLOSE_NAMESPACE_ACADO
Base class for all variables within the symbolic expressions family.
Definition: expression.hpp:56
Expression ** lagrangeFcn
void rhs(const real_t *x, real_t *f)
virtual ~LagrangeTerm()
Stores and evaluates Lagrange terms within optimal control problems.
#define BEGIN_NAMESPACE_ACADO
returnValue init(const Grid &grid_)
LagrangeTerm & operator=(const LagrangeTerm &rhs)


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