00001 00006 #ifndef ENERGY_MIN_CM 00007 #define ENERGY_MIN_CM 00008 #ifdef _WIN32 00009 #ifndef MSKDLL 00010 #define MSKDLL 00011 #endif 00012 #endif 00013 #include "mosek.h" 00014 #include "Mesh.h" 00015 00023 class EnergyMinimization 00024 { 00025 private: 00026 Mesh * mesh; 00027 00028 MSKtask_t task; 00029 00036 void setDataStructres(); 00037 00039 void minimize(); 00040 00042 void allocateMosekArrays(); 00043 00045 void clearMosekArrays(); 00046 00048 int NUMCON; 00049 00051 int NUMVAR; 00052 00054 int NUMANZ; 00055 00059 int * bkc; 00060 00064 double * blc; 00065 00069 double * buc; 00070 00074 int *ptrb; 00075 00079 int *ptre; 00080 00084 int *sub; 00085 00089 double * val; 00090 00094 int * bkx; 00095 00099 double * blx; 00100 00105 double * bux; 00106 00110 double * c; 00111 00115 double * xx; 00116 00117 00118 public: 00119 00126 EnergyMinimization(Mesh * _mesh, const MSKenv_t & env); 00127 00129 void doSolve(); 00130 00132 ~EnergyMinimization(void) { clearMosekArrays(); } 00133 00134 }; 00135 00136 #endif 00137