A sparse MPC solver for walking motion generation (old version).
solver/matrix_ecL_ip.h
Go to the documentation of this file.
00001 
00008 #ifndef MATRIX_ECL_IP_H
00009 #define MATRIX_ECL_IP_H
00010 
00011 
00012 /****************************************
00013  * INCLUDES 
00014  ****************************************/
00015 
00016 #include "smpc_common.h"
00017 #include "problem_param.h"
00018 
00021 
00022 /****************************************
00023  * DEFINES
00024  ****************************************/
00025 
00027 #define MATRIX_SIZE_6x6 36
00028 #define MATRIX_SIDE_6x6 6
00029 
00030 
00031 /****************************************
00032  * TYPEDEFS 
00033  ****************************************/
00034 
00035 using namespace std;
00036 
00037 
00042 class matrix_ecL_ip
00043 {
00044     public:
00045         /*********** Constructors / Destructors ************/
00046         matrix_ecL_ip(const int);
00047         ~matrix_ecL_ip();
00048 
00049         void form (const problem_parameters&, const double *);
00050 
00051         void solve_backward (const int, double *);
00052         void solve_forward (const int, double *);
00053 
00054         double *ecL;
00055 
00056 
00057 
00058     private:
00059         void chol_dec (double *);
00060         void form_M (const double, const double, const double*, const double*);
00061         void form_MBiPB (const double *, const double, double *);
00062         void form_MAT (const double, const double);
00063         void form_AMATMBiPB(const double, const double, double *);
00064 
00065         void form_L_non_diag(const double *, double *);
00066         void form_L_diag(double *);
00067         void form_L_diag(const double *, double *);
00068 
00069 
00070         // intermediate results used in computation of L
00071         double *M;         
00072         double *MAT;       
00073 };
00075 
00076 #endif /*MATRIX_ECL_IP_H*/