Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00034 #ifndef ACADO_TOOLKIT_TREE_PROJECTION_HPP
00035 #define ACADO_TOOLKIT_TREE_PROJECTION_HPP
00036
00037
00038 #include <acado/symbolic_operator/symbolic_operator_fwd.hpp>
00039
00040
00041 BEGIN_NAMESPACE_ACADO
00042
00043
00044 class Expression;
00045 class ConstraintComponent;
00046
00047
00058 class TreeProjection : public Projection{
00059
00060 public:
00061
00063 TreeProjection();
00064
00066 TreeProjection( const std::string& name_ );
00067
00069 TreeProjection( const TreeProjection &arg );
00070
00072 virtual ~TreeProjection();
00073
00075 Operator& operator=( const Operator &arg );
00076
00077
00079 virtual Operator& operator=( const Expression& arg );
00080 virtual Operator& operator=( const double& arg );
00081
00082
00083
00087 virtual TreeProjection* clone() const;
00088
00089
00093 virtual TreeProjection* cloneTreeProjection() const;
00094
00095
00096
00115 virtual returnValue loadIndices( SymbolicIndexList *indexList );
00118
00119
00125 virtual BooleanType isDependingOn( int dim ,
00126 VariableType *varType ,
00127 int *component,
00128 BooleanType *implicit_dep );
00129
00130
00131
00132
00140 virtual BooleanType isLinearIn( int dim ,
00141 VariableType *varType ,
00142 int *component,
00143 BooleanType *implicit_dep );
00144
00145
00146
00153 virtual BooleanType isPolynomialIn( int dim ,
00154 VariableType *varType ,
00155 int *component,
00156 BooleanType *implicit_dep );
00157
00158
00159
00166 virtual BooleanType isRationalIn( int dim ,
00167 VariableType *varType ,
00168 int *component,
00169 BooleanType *implicit_dep );
00170
00171
00179 returnValue clearStaticCounters();
00180
00181
00182
00184 Operator *getArgument() const;
00185
00186
00187
00194 virtual NeutralElement isOneOrZero() const;
00195
00196
00197
00199 virtual Operator* passArgument() const;
00200
00201
00202 virtual BooleanType isTrivial() const;
00203
00204 virtual returnValue initDerivative();
00205
00206
00207
00208
00209
00210 protected:
00211
00212
00213
00219 virtual Operator* ADforwardProtected( int dim ,
00220 VariableType *varType ,
00221 int *component,
00222 Operator **seed ,
00223 int &nNewIS ,
00224 TreeProjection ***newIS );
00225
00226
00227
00233 virtual returnValue ADbackwardProtected( int dim ,
00234 VariableType *varType ,
00235 int *component,
00236 Operator *seed ,
00237 Operator **df ,
00238 int &nNewIS ,
00239 TreeProjection ***newIS );
00240
00241
00247 virtual returnValue ADsymmetricProtected( int dim ,
00248 VariableType *varType ,
00249 int *component ,
00250 Operator *l ,
00251 Operator **S ,
00252 int dimS ,
00253 Operator **dfS ,
00254 Operator **ldf ,
00255 Operator **H ,
00256 int &nNewLIS ,
00257 TreeProjection ***newLIS ,
00258 int &nNewSIS ,
00259 TreeProjection ***newSIS ,
00260 int &nNewHIS ,
00261 TreeProjection ***newHIS );
00262
00263
00264
00266 virtual void copy( const Projection &arg );
00267
00268
00272 virtual returnValue setVariableExportName( const VariableType &_type,
00273 const std::vector< std::string >& _name
00274 );
00275
00276
00277
00278
00279 protected:
00280
00281 Operator *argument;
00282 static int count ;
00283 NeutralElement ne;
00284 };
00285
00286
00287 static TreeProjection emptyTreeProjection;
00288
00289
00290 CLOSE_NAMESPACE_ACADO
00291
00292
00293
00294 #endif