00001 00006 #ifndef ANGLE_OPT_CM 00007 #define ANGLE_OPT_CM 00008 #ifdef _WIN32 00009 #ifndef MSKDLL 00010 #define MSKDLL 00011 #endif 00012 #endif 00013 #include "mosek.h" 00014 #include "Mesh.h" 00015 00099 class AnglesOptimization 00100 { 00101 private: 00102 00103 Mesh * mesh; 00104 00105 MSKtask_t task; 00106 00108 int NUMCON; 00110 int NUMVAR; 00112 int NUMANZ; 00114 int NUMQNZ; 00115 00120 int *bkc; 00121 00126 double * blc; 00127 00132 double * buc; 00133 00138 int *ptrb; 00139 00144 int *ptre; 00145 00150 int *sub; 00151 00156 double * val; 00157 00158 00163 int *bkx; 00164 00169 double * blx; 00170 00175 double * bux; 00176 00177 00182 double * c; 00183 00188 int *qsubi; 00189 00194 int *qsubj; 00195 00201 double * qval; 00202 00203 00208 double * xx; 00209 00210 public: 00211 00213 static const double epsRange; 00214 00220 AnglesOptimization(Mesh * _mesh, const MSKenv_t & env); 00221 00222 void doSolve(); 00223 00225 void setDataStructres(); 00226 00228 void optimize(); 00229 00231 void allocateMosekArrays(); 00232 00234 void clearMosekArrays(); 00235 00237 ~AnglesOptimization(void) { clearMosekArrays(); } 00238 00239 }; 00240 #endif 00241