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 
00033 #ifndef ACADO_TOOLKIT_MODELCONTAINER_HPP
00034 #define ACADO_TOOLKIT_MODELCONTAINER_HPP
00035 
00036 #include <acado/ocp/model_data.hpp>
00037 
00038 
00039 BEGIN_NAMESPACE_ACADO
00040 
00041 
00052 class ModelContainer {
00053 
00054 
00055 
00056 
00057 
00058 public:
00059 
00060 
00064     ModelContainer( );
00065 
00066 
00082     returnValue setDimensions( uint _NX1, uint _NX2, uint _NX3, uint _NDX, uint _NDX3, uint _NXA, uint _NXA3, uint _NU, uint _NOD, uint _NP );
00083 
00084 
00098     returnValue setDimensions( uint _NX1, uint _NX2, uint _NX3, uint _NDX, uint _NXA, uint _NU, uint _NOD, uint _NP );
00099 
00100 
00112     returnValue setDimensions( uint _NX, uint _NDX, uint _NXA, uint _NU, uint _NOD, uint _NP );
00113 
00114 
00124     returnValue setDimensions( uint _NX, uint _NU, uint _NOD, uint _NP );
00125 
00133     returnValue setModel( const DifferentialEquation& _f );
00134 
00135 
00143         returnValue setNARXmodel( const uint _delay, const DMatrix& _parms );
00144 
00145 
00152     returnValue setLinearInput( const DMatrix& A1_, const DMatrix& B1_ );
00153 
00154 
00161     returnValue setLinearInput( const DMatrix& M1_, const DMatrix& A1_, const DMatrix& B1_ );
00162 
00163 
00170     returnValue setLinearOutput( const DMatrix& A3_, const OutputFcn& rhs_ );
00171 
00172 
00179     returnValue setLinearOutput( const DMatrix& M3_, const DMatrix& A3_, const OutputFcn& rhs_ );
00180 
00181 
00188     returnValue setLinearOutput( const DMatrix& A3_, const std::string& _rhs3, const std::string& _diffs_rhs3 );
00189 
00190 
00197     returnValue setLinearOutput( const DMatrix& M3_, const DMatrix& A3_, const std::string& _rhs3, const std::string& _diffs_rhs3 );
00198 
00199 
00208     returnValue setModel(       const std::string& fileName,
00209                                                         const std::string& _rhs_ODE,
00210                                                         const std::string& _diffs_rhs_ODE );
00211 
00212 
00220         uint addOutput( const OutputFcn& outputEquation_, const DVector& measurements );
00221 
00222 
00230         uint addOutput( const OutputFcn& outputEquation_, const uint numberMeasurements );
00231 
00232 
00242         uint addOutput( const std::string& output, const std::string& diffs_output, const uint dim, const DVector& measurements );
00243 
00244 
00254         uint addOutput( const std::string& output, const std::string& diffs_output, const uint dim, const uint numberMeasurements );
00255 
00256 
00268         uint addOutput(         const std::string& output, const std::string& diffs_output, const uint dim,
00269                                                 const DVector& measurements, const std::string& colInd, const std::string& rowPtr       );
00270 
00271 
00283         uint addOutput(         const std::string& output, const std::string& diffs_output, const uint dim,
00284                                                 const uint numberMeasurements, const std::string& colInd, const std::string& rowPtr     );
00285 
00286 
00294     returnValue setIntegrationGrid(     const Grid& _ocpGrid,
00295                                                                         const uint _numSteps    );
00296 
00297 
00304     returnValue setupOutput( const DVector& numberMeasurements );
00305 
00306 
00311     returnValue getModel( DifferentialEquation& _f ) const;
00312 
00313 
00314     BooleanType hasOutputs() const;
00315     BooleanType hasDifferentialEquation() const;
00316     BooleanType modelDimensionsSet() const;
00317     BooleanType hasEquidistantControlGrid               () const;
00318     BooleanType exportRhs() const;
00319 
00320 
00325     uint getNX( ) const;
00326 
00327 
00332     uint getNDX( ) const;
00333 
00334 
00339     uint getNXA( ) const;
00340 
00345     uint getNU( ) const;
00346 
00351     uint getNP( ) const;
00352 
00354     uint getNOD( ) const;
00355 
00360     uint getN( ) const;
00361 
00368     returnValue setN( const uint N_ );
00369 
00370 
00375     DVector getDimOutputs( ) const;
00376 
00377 
00382     DVector getNumMeas( ) const;
00383 
00384 
00389     ModelData& getModelData( );
00390 
00391 
00398     returnValue setModelData( const ModelData& data );
00399 
00400 
00401     const std::string getFileNameModel() const;
00402 
00403 
00404     
00405     
00406     
00407     protected:
00408 
00409 
00410     
00411     
00412     
00413     protected:
00414 
00415          ModelData modelData;                   
00416 };
00417 
00418 
00419 CLOSE_NAMESPACE_ACADO
00420 
00421 
00422 
00423 #endif  // ACADO_TOOLKIT_MODELCONTAINER_HPP
00424 
00425 
00426 
00427