casadi 3.6.4__cp311-none-manylinux2014_i686.whl → 3.6.6__cp311-none-manylinux2014_i686.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. casadi/_casadi.so +0 -0
  2. casadi/casadi.py +984 -500
  3. casadi/cbc +0 -0
  4. casadi/clp +0 -0
  5. casadi/cmake/casadi-config-version.cmake +1 -1
  6. casadi/cmake/highs/highs-config.cmake +6 -13
  7. casadi/cmake/highs/highs-targets-release.cmake +13 -13
  8. casadi/cmake/highs/highs-targets.cmake +13 -10
  9. casadi/highs +0 -0
  10. casadi/include/casadi/casadi.i +33 -15
  11. casadi/include/casadi/casadi_c.h +2 -0
  12. casadi/include/casadi/config.h +8 -8
  13. casadi/include/casadi/core/casadi_common.hpp +1 -0
  14. casadi/include/casadi/core/casadi_misc.hpp +13 -0
  15. casadi/include/casadi/core/casadi_types.hpp +3 -2
  16. casadi/include/casadi/core/code_generator.hpp +59 -2
  17. casadi/include/casadi/core/core.hpp +1 -0
  18. casadi/include/casadi/core/generic_expression.hpp +1 -1
  19. casadi/include/casadi/core/generic_type.hpp +25 -1
  20. casadi/include/casadi/core/global_options.hpp +2 -0
  21. casadi/include/casadi/core/matrix_decl.hpp +15 -0
  22. casadi/include/casadi/core/mx.hpp +13 -3
  23. casadi/include/casadi/core/optistack.hpp +23 -0
  24. casadi/include/casadi/core/runtime/casadi_nlp.hpp +133 -6
  25. casadi/include/casadi/core/runtime/casadi_ocp_block.hpp +55 -0
  26. casadi/include/casadi/core/runtime/casadi_oracle.hpp +44 -0
  27. casadi/include/casadi/core/runtime/casadi_oracle_callback.hpp +39 -0
  28. casadi/include/casadi/core/runtime/casadi_runtime.hpp +4 -1
  29. casadi/include/casadi/core/runtime/casadi_scaled_copy.hpp +31 -0
  30. casadi/include/casadi/core/runtime/casadi_sqpmethod.hpp +11 -1
  31. casadi/include/casadi/core/serializing_stream.hpp +2 -2
  32. casadi/include/casadi/core/sparsity.hpp +12 -3
  33. casadi/include/casadi/core/tools.hpp +67 -0
  34. casadi/include/casadi/doc.i +2283 -1491
  35. casadi/include/casadi/doc_merged.i +1522 -1065
  36. casadi/include/casadi/mem.h +1 -0
  37. casadi/include/coin-or/IpAlgBuilder.hpp +417 -0
  38. casadi/include/coin-or/IpAlgStrategy.hpp +201 -0
  39. casadi/include/coin-or/IpAlgTypes.hpp +64 -0
  40. casadi/include/coin-or/IpAugSystemSolver.hpp +212 -0
  41. casadi/include/coin-or/IpBlas.hpp +426 -0
  42. casadi/include/coin-or/IpCachedResults.hpp +897 -0
  43. casadi/include/coin-or/IpCompoundMatrix.hpp +423 -0
  44. casadi/include/coin-or/IpCompoundSymMatrix.hpp +348 -0
  45. casadi/include/coin-or/IpCompoundVector.hpp +395 -0
  46. casadi/include/coin-or/IpConvCheck.hpp +97 -0
  47. casadi/include/coin-or/IpDebug.hpp +167 -0
  48. casadi/include/coin-or/IpDenseVector.hpp +626 -0
  49. casadi/include/coin-or/IpDiagMatrix.hpp +158 -0
  50. casadi/include/coin-or/IpEqMultCalculator.hpp +76 -0
  51. casadi/include/coin-or/IpException.hpp +156 -0
  52. casadi/include/coin-or/IpExpansionMatrix.hpp +245 -0
  53. casadi/include/coin-or/IpGenTMatrix.hpp +290 -0
  54. casadi/include/coin-or/IpHessianUpdater.hpp +73 -0
  55. casadi/include/coin-or/IpIdentityMatrix.hpp +167 -0
  56. casadi/include/coin-or/IpIpoptAlg.hpp +257 -0
  57. casadi/include/coin-or/IpIpoptApplication.hpp +367 -0
  58. casadi/include/coin-or/IpIpoptCalculatedQuantities.hpp +1009 -0
  59. casadi/include/coin-or/IpIpoptData.hpp +966 -0
  60. casadi/include/coin-or/IpIpoptNLP.hpp +328 -0
  61. casadi/include/coin-or/IpIterateInitializer.hpp +68 -0
  62. casadi/include/coin-or/IpIteratesVector.hpp +840 -0
  63. casadi/include/coin-or/IpIterationOutput.hpp +78 -0
  64. casadi/include/coin-or/IpJournalist.hpp +573 -0
  65. casadi/include/coin-or/IpLapack.hpp +227 -0
  66. casadi/include/coin-or/IpLibraryLoader.hpp +76 -0
  67. casadi/include/coin-or/IpLineSearch.hpp +106 -0
  68. casadi/include/coin-or/IpLinearSolvers.h +46 -0
  69. casadi/include/coin-or/IpMatrix.hpp +434 -0
  70. casadi/include/coin-or/IpMuUpdate.hpp +77 -0
  71. casadi/include/coin-or/IpNLP.hpp +306 -0
  72. casadi/include/coin-or/IpNLPScaling.hpp +582 -0
  73. casadi/include/coin-or/IpObserver.hpp +422 -0
  74. casadi/include/coin-or/IpOptionsList.hpp +412 -0
  75. casadi/include/coin-or/IpOrigIpoptNLP.hpp +603 -0
  76. casadi/include/coin-or/IpPDSystemSolver.hpp +137 -0
  77. casadi/include/coin-or/IpReferenced.hpp +262 -0
  78. casadi/include/coin-or/IpRegOptions.hpp +1152 -0
  79. casadi/include/coin-or/IpReturnCodes.h +23 -0
  80. casadi/include/coin-or/IpReturnCodes.hpp +18 -0
  81. casadi/include/coin-or/IpReturnCodes.inc +71 -0
  82. casadi/include/coin-or/IpReturnCodes_inc.h +45 -0
  83. casadi/include/coin-or/IpScaledMatrix.hpp +291 -0
  84. casadi/include/coin-or/IpSearchDirCalculator.hpp +72 -0
  85. casadi/include/coin-or/IpSmartPtr.hpp +865 -0
  86. casadi/include/coin-or/IpSolveStatistics.hpp +210 -0
  87. casadi/include/coin-or/IpSparseSymLinearSolverInterface.hpp +260 -0
  88. casadi/include/coin-or/IpStdAugSystemSolver.cpp +555 -0
  89. casadi/include/coin-or/IpStdCInterface.h +428 -0
  90. casadi/include/coin-or/IpSumSymMatrix.hpp +186 -0
  91. casadi/include/coin-or/IpSymLinearSolver.hpp +141 -0
  92. casadi/include/coin-or/IpSymMatrix.hpp +167 -0
  93. casadi/include/coin-or/IpSymScaledMatrix.hpp +255 -0
  94. casadi/include/coin-or/IpSymTMatrix.hpp +275 -0
  95. casadi/include/coin-or/IpTNLP.hpp +820 -0
  96. casadi/include/coin-or/IpTNLPAdapter.hpp +648 -0
  97. casadi/include/coin-or/IpTNLPReducer.hpp +274 -0
  98. casadi/include/coin-or/IpTaggedObject.hpp +128 -0
  99. casadi/include/coin-or/IpTimedTask.hpp +218 -0
  100. casadi/include/coin-or/IpTimingStatistics.hpp +323 -0
  101. casadi/include/coin-or/IpTripletHelper.hpp +308 -0
  102. casadi/include/coin-or/IpTypes.h +81 -0
  103. casadi/include/coin-or/IpTypes.hpp +30 -0
  104. casadi/include/coin-or/IpUtils.hpp +166 -0
  105. casadi/include/coin-or/IpVector.hpp +892 -0
  106. casadi/include/coin-or/IpZeroSymMatrix.hpp +155 -0
  107. casadi/include/coin-or/IpoptConfig.h +45 -0
  108. casadi/include/coin-or/SensAlgorithm.hpp +114 -0
  109. casadi/include/coin-or/SensApplication.hpp +188 -0
  110. casadi/include/coin-or/SensBacksolver.hpp +36 -0
  111. casadi/include/coin-or/SensMeasurement.hpp +56 -0
  112. casadi/include/coin-or/SensPCalculator.hpp +137 -0
  113. casadi/include/coin-or/SensRegOp.hpp +21 -0
  114. casadi/include/coin-or/SensSchurData.hpp +182 -0
  115. casadi/include/coin-or/SensSchurDriver.hpp +118 -0
  116. casadi/include/coin-or/SensSimpleBacksolver.hpp +49 -0
  117. casadi/include/coin-or/SensStepCalc.hpp +85 -0
  118. casadi/include/coin-or/SensUtils.hpp +63 -0
  119. casadi/include/coin-or/metis/defs.h +161 -0
  120. casadi/include/coin-or/metis/macros.h +143 -0
  121. casadi/include/coin-or/metis/metis.h +37 -0
  122. casadi/include/coin-or/metis/proto.h +505 -0
  123. casadi/include/coin-or/metis/rename.h +418 -0
  124. casadi/include/coin-or/metis/struct.h +251 -0
  125. casadi/include/coin-or/mumps/dmumps_c.h +142 -0
  126. casadi/include/coin-or/mumps/mumps_c_types.h +72 -0
  127. casadi/include/coin-or/mumps/mumps_compat.h +27 -0
  128. casadi/include/coin-or/mumps/mumps_int_def.h +11 -0
  129. casadi/include/coin-or/mumps/mumps_mpi.h +67 -0
  130. casadi/include/daqp/api.h +46 -0
  131. casadi/include/daqp/auxiliary.h +29 -0
  132. casadi/include/daqp/bnb.h +32 -0
  133. casadi/include/daqp/codegen.h +18 -0
  134. casadi/include/daqp/constants.h +92 -0
  135. casadi/include/daqp/daqp.h +22 -0
  136. casadi/include/daqp/daqp_prox.h +18 -0
  137. casadi/include/daqp/factorization.h +18 -0
  138. casadi/include/daqp/types.h +161 -0
  139. casadi/include/daqp/utils.h +44 -0
  140. casadi/include/highs/HConfig.h +6 -5
  141. casadi/include/highs/Highs.h +93 -23
  142. casadi/include/highs/filereaderlp/def.hpp +19 -0
  143. casadi/include/highs/interfaces/highs_c_api.h +200 -24
  144. casadi/include/highs/io/Filereader.h +1 -1
  145. casadi/include/highs/io/FilereaderEms.h +1 -1
  146. casadi/include/highs/io/FilereaderLp.h +1 -1
  147. casadi/include/highs/io/FilereaderMps.h +1 -1
  148. casadi/include/highs/io/HMPSIO.h +1 -1
  149. casadi/include/highs/io/HMpsFF.h +5 -3
  150. casadi/include/highs/io/HighsIO.h +18 -8
  151. casadi/include/highs/io/LoadOptions.h +1 -1
  152. casadi/include/highs/ipm/IpxSolution.h +35 -0
  153. casadi/include/highs/ipm/IpxWrapper.h +1 -1
  154. casadi/include/highs/ipm/basiclu/basiclu.h +161 -0
  155. casadi/include/highs/ipm/basiclu/basiclu_factorize.h +247 -0
  156. casadi/include/highs/ipm/basiclu/basiclu_get_factors.h +108 -0
  157. casadi/include/highs/ipm/basiclu/basiclu_initialize.h +119 -0
  158. casadi/include/highs/ipm/basiclu/basiclu_obj_factorize.h +34 -0
  159. casadi/include/highs/ipm/basiclu/basiclu_obj_free.h +19 -0
  160. casadi/include/highs/ipm/basiclu/basiclu_obj_get_factors.h +34 -0
  161. casadi/include/highs/ipm/basiclu/basiclu_obj_initialize.h +46 -0
  162. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_dense.h +29 -0
  163. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_for_update.h +42 -0
  164. casadi/include/highs/ipm/basiclu/basiclu_obj_solve_sparse.h +32 -0
  165. casadi/include/highs/ipm/basiclu/basiclu_obj_update.h +31 -0
  166. casadi/include/highs/ipm/basiclu/basiclu_object.h +30 -0
  167. casadi/include/highs/ipm/basiclu/basiclu_solve_dense.h +75 -0
  168. casadi/include/highs/ipm/basiclu/basiclu_solve_for_update.h +169 -0
  169. casadi/include/highs/ipm/basiclu/basiclu_solve_sparse.h +112 -0
  170. casadi/include/highs/ipm/basiclu/basiclu_update.h +125 -0
  171. casadi/include/highs/ipm/basiclu/lu_def.h +39 -0
  172. casadi/include/highs/ipm/basiclu/lu_file.h +21 -0
  173. casadi/include/highs/ipm/basiclu/lu_internal.h +220 -0
  174. casadi/include/highs/ipm/basiclu/lu_list.h +168 -0
  175. casadi/include/highs/ipm/ipx/basiclu_kernel.h +20 -0
  176. casadi/include/highs/ipm/ipx/basiclu_wrapper.h +47 -0
  177. casadi/include/highs/ipm/ipx/basis.h +351 -0
  178. casadi/include/highs/ipm/ipx/conjugate_residuals.h +74 -0
  179. casadi/include/highs/ipm/ipx/control.h +163 -0
  180. casadi/include/highs/ipm/ipx/crossover.h +157 -0
  181. casadi/include/highs/ipm/ipx/diagonal_precond.h +45 -0
  182. casadi/include/highs/ipm/ipx/forrest_tomlin.h +102 -0
  183. casadi/include/highs/ipm/ipx/guess_basis.h +21 -0
  184. casadi/include/highs/ipm/ipx/indexed_vector.h +113 -0
  185. casadi/include/highs/ipm/ipx/info.h +27 -0
  186. casadi/include/highs/ipm/ipx/ipm.h +94 -0
  187. casadi/include/highs/ipm/ipx/ipx_c.h +47 -0
  188. casadi/include/highs/ipm/ipx/ipx_config.h +9 -0
  189. casadi/include/highs/ipm/ipx/ipx_info.h +111 -0
  190. casadi/include/highs/ipm/ipx/ipx_internal.h +88 -0
  191. casadi/include/highs/ipm/ipx/ipx_parameters.h +75 -0
  192. casadi/include/highs/ipm/ipx/ipx_status.h +57 -0
  193. casadi/include/highs/ipm/ipx/iterate.h +328 -0
  194. casadi/include/highs/ipm/ipx/kkt_solver.h +70 -0
  195. casadi/include/highs/ipm/ipx/kkt_solver_basis.h +66 -0
  196. casadi/include/highs/ipm/ipx/kkt_solver_diag.h +48 -0
  197. casadi/include/highs/ipm/ipx/linear_operator.h +26 -0
  198. casadi/include/highs/ipm/ipx/lp_solver.h +201 -0
  199. casadi/include/highs/ipm/ipx/lu_factorization.h +79 -0
  200. casadi/include/highs/ipm/ipx/lu_update.h +129 -0
  201. casadi/include/highs/ipm/ipx/maxvolume.h +54 -0
  202. casadi/include/highs/ipm/ipx/model.h +409 -0
  203. casadi/include/highs/ipm/ipx/multistream.h +52 -0
  204. casadi/include/highs/ipm/ipx/normal_matrix.h +44 -0
  205. casadi/include/highs/ipm/ipx/power_method.h +44 -0
  206. casadi/include/highs/ipm/ipx/sparse_matrix.h +195 -0
  207. casadi/include/highs/ipm/ipx/sparse_utils.h +58 -0
  208. casadi/include/highs/ipm/ipx/splitted_normal_matrix.h +63 -0
  209. casadi/include/highs/ipm/ipx/starting_basis.h +39 -0
  210. casadi/include/highs/ipm/ipx/symbolic_invert.h +29 -0
  211. casadi/include/highs/ipm/ipx/timer.h +24 -0
  212. casadi/include/highs/ipm/ipx/utils.h +39 -0
  213. casadi/include/highs/lp_data/HConst.h +20 -10
  214. casadi/include/highs/lp_data/HStruct.h +23 -1
  215. casadi/include/highs/lp_data/HighsAnalysis.h +1 -1
  216. casadi/include/highs/lp_data/HighsCallback.h +10 -3
  217. casadi/include/highs/lp_data/HighsCallbackStruct.h +31 -5
  218. casadi/include/highs/lp_data/HighsDebug.h +1 -1
  219. casadi/include/highs/lp_data/HighsInfo.h +20 -2
  220. casadi/include/highs/lp_data/HighsInfoDebug.h +1 -1
  221. casadi/include/highs/lp_data/HighsLp.h +17 -1
  222. casadi/include/highs/lp_data/HighsLpSolverObject.h +1 -1
  223. casadi/include/highs/lp_data/HighsLpUtils.h +19 -19
  224. casadi/include/highs/lp_data/HighsModelUtils.h +1 -1
  225. casadi/include/highs/lp_data/HighsOptions.h +237 -10
  226. casadi/include/highs/lp_data/HighsRanging.h +1 -1
  227. casadi/include/highs/lp_data/HighsRuntimeOptions.h +2 -2
  228. casadi/include/highs/lp_data/HighsSolution.h +2 -2
  229. casadi/include/highs/lp_data/HighsSolutionDebug.h +1 -1
  230. casadi/include/highs/lp_data/HighsSolve.h +3 -1
  231. casadi/include/highs/lp_data/HighsStatus.h +1 -1
  232. casadi/include/highs/mip/HighsCliqueTable.h +4 -4
  233. casadi/include/highs/mip/HighsConflictPool.h +1 -1
  234. casadi/include/highs/mip/HighsCutGeneration.h +1 -1
  235. casadi/include/highs/mip/HighsCutPool.h +2 -2
  236. casadi/include/highs/mip/HighsDebugSol.h +22 -29
  237. casadi/include/highs/mip/HighsDomain.h +10 -2
  238. casadi/include/highs/mip/HighsDomainChange.h +1 -1
  239. casadi/include/highs/mip/HighsDynamicRowMatrix.h +5 -3
  240. casadi/include/highs/mip/HighsGFkSolve.h +3 -3
  241. casadi/include/highs/mip/HighsImplications.h +3 -3
  242. casadi/include/highs/mip/HighsLpAggregator.h +1 -1
  243. casadi/include/highs/mip/HighsLpRelaxation.h +6 -1
  244. casadi/include/highs/mip/HighsMipSolver.h +4 -2
  245. casadi/include/highs/mip/HighsMipSolverData.h +47 -4
  246. casadi/include/highs/mip/HighsModkSeparator.h +2 -2
  247. casadi/include/highs/mip/HighsNodeQueue.h +5 -3
  248. casadi/include/highs/mip/HighsObjectiveFunction.h +1 -1
  249. casadi/include/highs/mip/HighsPathSeparator.h +2 -2
  250. casadi/include/highs/mip/HighsPrimalHeuristics.h +1 -1
  251. casadi/include/highs/mip/HighsPseudocost.h +35 -23
  252. casadi/include/highs/mip/HighsRedcostFixing.h +1 -1
  253. casadi/include/highs/mip/HighsSearch.h +2 -1
  254. casadi/include/highs/mip/HighsSeparation.h +1 -1
  255. casadi/include/highs/mip/HighsSeparator.h +1 -1
  256. casadi/include/highs/mip/HighsTableauSeparator.h +1 -1
  257. casadi/include/highs/mip/HighsTransformedLp.h +1 -1
  258. casadi/include/highs/model/HighsHessian.h +5 -0
  259. casadi/include/highs/model/HighsHessianUtils.h +2 -0
  260. casadi/include/highs/model/HighsModel.h +10 -1
  261. casadi/include/highs/parallel/HighsMutex.h +2 -1
  262. casadi/include/highs/parallel/HighsParallel.h +7 -2
  263. casadi/include/highs/parallel/HighsTask.h +1 -2
  264. casadi/include/highs/pdlp/CupdlpWrapper.h +93 -0
  265. casadi/include/highs/pdlp/cupdlp/cupdlp_cs.h +41 -0
  266. casadi/include/highs/pdlp/cupdlp/cupdlp_defs.h +423 -0
  267. casadi/include/highs/pdlp/cupdlp/cupdlp_linalg.h +183 -0
  268. casadi/include/highs/pdlp/cupdlp/cupdlp_proj.h +19 -0
  269. casadi/include/highs/pdlp/cupdlp/cupdlp_restart.h +31 -0
  270. casadi/include/highs/pdlp/cupdlp/cupdlp_scaling_cuda.h +28 -0
  271. casadi/include/highs/pdlp/cupdlp/cupdlp_solver.h +98 -0
  272. casadi/include/highs/pdlp/cupdlp/cupdlp_step.h +33 -0
  273. casadi/include/highs/pdlp/cupdlp/cupdlp_utils.c +1726 -0
  274. casadi/include/highs/pdqsort/pdqsort.h +532 -0
  275. casadi/include/highs/presolve/HPresolve.h +27 -14
  276. casadi/include/highs/presolve/HPresolveAnalysis.h +1 -1
  277. casadi/include/highs/presolve/HighsPostsolveStack.h +92 -68
  278. casadi/include/highs/presolve/HighsSymmetry.h +6 -5
  279. casadi/include/highs/presolve/ICrash.h +8 -2
  280. casadi/include/highs/presolve/ICrashUtil.h +1 -1
  281. casadi/include/highs/presolve/ICrashX.h +1 -1
  282. casadi/include/highs/presolve/PresolveComponent.h +1 -1
  283. casadi/include/highs/qpsolver/a_asm.hpp +23 -12
  284. casadi/include/highs/qpsolver/a_quass.hpp +8 -1
  285. casadi/include/highs/qpsolver/basis.hpp +150 -0
  286. casadi/include/highs/qpsolver/crashsolution.hpp +12 -0
  287. casadi/include/highs/qpsolver/dantzigpricing.hpp +72 -0
  288. casadi/include/highs/qpsolver/devexpricing.hpp +99 -0
  289. casadi/include/highs/qpsolver/eventhandler.hpp +23 -0
  290. casadi/include/highs/qpsolver/factor.hpp +400 -0
  291. casadi/include/highs/qpsolver/feasibility_bounded.hpp +105 -0
  292. casadi/include/highs/qpsolver/feasibility_highs.hpp +270 -0
  293. casadi/include/highs/qpsolver/gradient.hpp +39 -0
  294. casadi/include/highs/qpsolver/instance.hpp +63 -0
  295. casadi/include/highs/qpsolver/matrix.hpp +335 -0
  296. casadi/include/highs/qpsolver/pricing.hpp +15 -0
  297. casadi/include/highs/qpsolver/qpconst.hpp +27 -0
  298. casadi/include/highs/qpsolver/{vector.hpp → qpvector.hpp} +25 -25
  299. casadi/include/highs/qpsolver/quass.hpp +1 -1
  300. casadi/include/highs/qpsolver/ratiotest.hpp +19 -0
  301. casadi/include/highs/qpsolver/runtime.hpp +38 -0
  302. casadi/include/highs/qpsolver/settings.hpp +57 -0
  303. casadi/include/highs/qpsolver/snippets.hpp +29 -0
  304. casadi/include/highs/qpsolver/statistics.hpp +23 -0
  305. casadi/include/highs/qpsolver/steepestedgepricing.hpp +167 -0
  306. casadi/include/highs/simplex/HApp.h +1 -1
  307. casadi/include/highs/simplex/HEkk.h +52 -18
  308. casadi/include/highs/simplex/HEkkDual.h +1 -1
  309. casadi/include/highs/simplex/HEkkDualRHS.h +6 -7
  310. casadi/include/highs/simplex/HEkkDualRow.h +2 -2
  311. casadi/include/highs/simplex/HEkkPrimal.h +6 -1
  312. casadi/include/highs/simplex/HSimplex.h +1 -3
  313. casadi/include/highs/simplex/HSimplexDebug.h +1 -1
  314. casadi/include/highs/simplex/HSimplexNla.h +1 -1
  315. casadi/include/highs/simplex/HSimplexReport.h +1 -1
  316. casadi/include/highs/simplex/HighsSimplexAnalysis.h +228 -100
  317. casadi/include/highs/simplex/SimplexConst.h +1 -1
  318. casadi/include/highs/simplex/SimplexStruct.h +2 -2
  319. casadi/include/highs/simplex/SimplexTimer.h +1 -1
  320. casadi/include/highs/test/DevKkt.h +1 -1
  321. casadi/include/highs/test/KktCh2.h +1 -1
  322. casadi/include/highs/util/FactorTimer.h +1 -1
  323. casadi/include/highs/util/HFactor.h +35 -6
  324. casadi/include/highs/util/HFactorConst.h +1 -1
  325. casadi/include/highs/util/HFactorDebug.h +1 -1
  326. casadi/include/highs/util/HSet.h +1 -1
  327. casadi/include/highs/util/HVector.h +1 -1
  328. casadi/include/highs/util/HVectorBase.h +1 -1
  329. casadi/include/highs/util/HighsCDouble.h +3 -3
  330. casadi/include/highs/util/HighsComponent.h +1 -1
  331. casadi/include/highs/util/HighsDataStack.h +4 -4
  332. casadi/include/highs/util/HighsDisjointSets.h +1 -1
  333. casadi/include/highs/util/HighsHash.h +28 -21
  334. casadi/include/highs/util/HighsHashTree.h +63 -63
  335. casadi/include/highs/util/HighsInt.h +1 -1
  336. casadi/include/highs/util/HighsIntegers.h +8 -9
  337. casadi/include/highs/util/HighsLinearSumBounds.h +1 -1
  338. casadi/include/highs/util/HighsMatrixPic.h +1 -1
  339. casadi/include/highs/util/HighsMatrixSlice.h +9 -6
  340. casadi/include/highs/util/HighsMatrixUtils.h +1 -1
  341. casadi/include/highs/util/HighsMemoryAllocation.h +55 -0
  342. casadi/include/highs/util/HighsRandom.h +27 -15
  343. casadi/include/highs/util/HighsRbTree.h +2 -2
  344. casadi/include/highs/util/HighsSort.h +7 -7
  345. casadi/include/highs/util/HighsSparseMatrix.h +5 -2
  346. casadi/include/highs/util/HighsSparseVectorSum.h +2 -2
  347. casadi/include/highs/util/HighsSplay.h +1 -1
  348. casadi/include/highs/util/HighsTimer.h +18 -9
  349. casadi/include/highs/util/HighsUtils.h +15 -8
  350. casadi/include/highs/util/stringutil.h +9 -4
  351. casadi/include/highs/zstr/strict_fstream.hpp +237 -0
  352. casadi/include/highs/zstr/zstr.hpp +472 -0
  353. casadi/include/licenses/daqp-external/LICENSE +21 -0
  354. casadi/include/licenses/highs-external/{LICENSE → LICENSE.txt} +1 -1
  355. casadi/include/osqp/constants.h +2 -3
  356. casadi/include/osqp/version.h +9 -0
  357. casadi/lib/libtinyxml2.a +0 -0
  358. casadi/libCbc.so +0 -0
  359. casadi/libCbc.so.3 +0 -0
  360. casadi/libCbc.so.3.10.11 +0 -0
  361. casadi/libCbcSolver.so +0 -0
  362. casadi/libCbcSolver.so.3 +0 -0
  363. casadi/libCbcSolver.so.3.10.11 +0 -0
  364. casadi/libCgl.so +0 -0
  365. casadi/libCgl.so.1 +0 -0
  366. casadi/libCgl.so.1.10.8 +0 -0
  367. casadi/libClp.so +0 -0
  368. casadi/libClp.so.1 +0 -0
  369. casadi/libClp.so.1.14.9 +0 -0
  370. casadi/libClpSolver.so +0 -0
  371. casadi/libClpSolver.so.1 +0 -0
  372. casadi/libClpSolver.so.1.14.9 +0 -0
  373. casadi/libCoinUtils.so +0 -0
  374. casadi/libCoinUtils.so.3 +0 -0
  375. casadi/libCoinUtils.so.3.11.10 +0 -0
  376. casadi/libOsi.so +0 -0
  377. casadi/libOsi.so.1 +0 -0
  378. casadi/libOsi.so.1.13.9 +0 -0
  379. casadi/libOsiCbc.so +0 -0
  380. casadi/libOsiCbc.so.3 +0 -0
  381. casadi/libOsiCbc.so.3.10.11 +0 -0
  382. casadi/libOsiClp.so +0 -0
  383. casadi/libOsiClp.so.1 +0 -0
  384. casadi/libOsiClp.so.1.14.9 +0 -0
  385. casadi/libOsiCommonTests.so +0 -0
  386. casadi/libOsiCommonTests.so.1 +0 -0
  387. casadi/libOsiCommonTests.so.1.13.9 +0 -0
  388. casadi/libbonmin.so +0 -0
  389. casadi/libbonmin.so.4 +0 -0
  390. casadi/libbonmin.so.4.8.9 +0 -0
  391. casadi/libcasadi.so +0 -0
  392. casadi/libcasadi.so.3.7 +0 -0
  393. casadi/libcasadi_conic_cbc.so +0 -0
  394. casadi/libcasadi_conic_cbc.so.3.7 +0 -0
  395. casadi/libcasadi_conic_clp.so +0 -0
  396. casadi/libcasadi_conic_clp.so.3.7 +0 -0
  397. casadi/libcasadi_conic_daqp.so +0 -0
  398. casadi/libcasadi_conic_daqp.so.3.7 +0 -0
  399. casadi/libcasadi_conic_gurobi.so +0 -0
  400. casadi/libcasadi_conic_gurobi.so.3.7 +0 -0
  401. casadi/libcasadi_conic_highs.so +0 -0
  402. casadi/libcasadi_conic_highs.so.3.7 +0 -0
  403. casadi/libcasadi_conic_ipqp.so +0 -0
  404. casadi/libcasadi_conic_ipqp.so.3.7 +0 -0
  405. casadi/libcasadi_conic_nlpsol.so +0 -0
  406. casadi/libcasadi_conic_nlpsol.so.3.7 +0 -0
  407. casadi/libcasadi_conic_osqp.so +0 -0
  408. casadi/libcasadi_conic_osqp.so.3.7 +0 -0
  409. casadi/libcasadi_conic_proxqp.so +0 -0
  410. casadi/libcasadi_conic_proxqp.so.3.7 +0 -0
  411. casadi/libcasadi_conic_qpoases.so +0 -0
  412. casadi/libcasadi_conic_qpoases.so.3.7 +0 -0
  413. casadi/libcasadi_conic_qrqp.so +0 -0
  414. casadi/libcasadi_conic_qrqp.so.3.7 +0 -0
  415. casadi/libcasadi_conic_superscs.so +0 -0
  416. casadi/libcasadi_conic_superscs.so.3.7 +0 -0
  417. casadi/libcasadi_integrator_collocation.so +0 -0
  418. casadi/libcasadi_integrator_collocation.so.3.7 +0 -0
  419. casadi/libcasadi_integrator_cvodes.so +0 -0
  420. casadi/libcasadi_integrator_cvodes.so.3.7 +0 -0
  421. casadi/libcasadi_integrator_idas.so +0 -0
  422. casadi/libcasadi_integrator_idas.so.3.7 +0 -0
  423. casadi/libcasadi_integrator_rk.so +0 -0
  424. casadi/libcasadi_integrator_rk.so.3.7 +0 -0
  425. casadi/libcasadi_nlpsol_alpaqa.so +0 -0
  426. casadi/libcasadi_nlpsol_alpaqa.so.3.7 +0 -0
  427. casadi/libcasadi_nlpsol_ampl.so +0 -0
  428. casadi/libcasadi_nlpsol_ampl.so.3.7 +0 -0
  429. casadi/libcasadi_nlpsol_blocksqp.so +0 -0
  430. casadi/libcasadi_nlpsol_blocksqp.so.3.7 +0 -0
  431. casadi/libcasadi_nlpsol_bonmin.so +0 -0
  432. casadi/libcasadi_nlpsol_bonmin.so.3.7 +0 -0
  433. casadi/libcasadi_nlpsol_feasiblesqpmethod.so +0 -0
  434. casadi/libcasadi_nlpsol_feasiblesqpmethod.so.3.7 +0 -0
  435. casadi/libcasadi_nlpsol_ipopt.so +0 -0
  436. casadi/libcasadi_nlpsol_ipopt.so.3.7 +0 -0
  437. casadi/libcasadi_nlpsol_knitro.so +0 -0
  438. casadi/libcasadi_nlpsol_knitro.so.3.7 +0 -0
  439. casadi/libcasadi_nlpsol_madnlp.so +0 -0
  440. casadi/libcasadi_nlpsol_madnlp.so.3.7 +0 -0
  441. casadi/libcasadi_nlpsol_qrsqp.so +0 -0
  442. casadi/libcasadi_nlpsol_qrsqp.so.3.7 +0 -0
  443. casadi/libcasadi_nlpsol_scpgen.so +0 -0
  444. casadi/libcasadi_nlpsol_scpgen.so.3.7 +0 -0
  445. casadi/libcasadi_nlpsol_sleqp.so +0 -0
  446. casadi/libcasadi_nlpsol_sleqp.so.3.7 +0 -0
  447. casadi/libcasadi_nlpsol_snopt.so +0 -0
  448. casadi/libcasadi_nlpsol_snopt.so.3.7 +0 -0
  449. casadi/libcasadi_nlpsol_sqpmethod.so +0 -0
  450. casadi/libcasadi_nlpsol_sqpmethod.so.3.7 +0 -0
  451. casadi/libcasadi_nlpsol_worhp.so +0 -0
  452. casadi/libcasadi_nlpsol_worhp.so.3.7 +0 -0
  453. casadi/libcasadi_rootfinder_fast_newton.so +0 -0
  454. casadi/libcasadi_rootfinder_fast_newton.so.3.7 +0 -0
  455. casadi/libcasadi_rootfinder_kinsol.so +0 -0
  456. casadi/libcasadi_rootfinder_kinsol.so.3.7 +0 -0
  457. casadi/libcasadi_rootfinder_newton.so +0 -0
  458. casadi/libcasadi_rootfinder_newton.so.3.7 +0 -0
  459. casadi/libcasadi_rootfinder_nlpsol.so +0 -0
  460. casadi/libcasadi_rootfinder_nlpsol.so.3.7 +0 -0
  461. casadi/libcasadi_sundials_common.so +0 -0
  462. casadi/libcasadi_sundials_common.so.3.7 +0 -0
  463. casadi/libdaqp.so +0 -0
  464. casadi/libdaqpstat.a +0 -0
  465. casadi/libhighs.so +0 -0
  466. casadi/libhighs.so.1 +0 -0
  467. casadi/libhighs.so.1.7.2 +0 -0
  468. casadi/libindirect.a +0 -0
  469. casadi/libipopt.so +0 -0
  470. casadi/libipopt.so.3 +0 -0
  471. casadi/libipopt.so.3.14.11 +0 -0
  472. casadi/liblinsys.a +0 -0
  473. casadi/libmatlab_ipc.so +0 -0
  474. casadi/libosqp.a +0 -0
  475. casadi/libosqp.so +0 -0
  476. casadi/libqdldl.a +0 -0
  477. casadi/libsipopt.so +0 -0
  478. casadi/libsipopt.so.3 +0 -0
  479. casadi/libsipopt.so.3.14.11 +0 -0
  480. casadi/libsleqp.so +0 -0
  481. casadi/libsleqp.so.1.0.1 +0 -0
  482. casadi/libspral.a +0 -0
  483. casadi/libsuperscs.a +0 -0
  484. casadi/pkgconfig/casadi.pc +1 -1
  485. casadi/pkgconfig/highs.pc +1 -1
  486. casadi/tools/__init__.py +4 -0
  487. casadi/tools/bounds.py +3 -3
  488. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/METADATA +12 -4
  489. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/RECORD +490 -281
  490. casadi/include/highs/fortran/highs_fortran_api.mod +0 -0
  491. casadi/libFortranHighs.so +0 -0
  492. casadi/libhighs.so.1.6 +0 -0
  493. casadi/libhighs.so.1.6.0 +0 -0
  494. {casadi-3.6.4.dist-info → casadi-3.6.6.dist-info}/WHEEL +0 -0
@@ -0,0 +1,210 @@
1
+ // Copyright (C) 2005, 2009 International Business Machines and others.
2
+ // All Rights Reserved.
3
+ // This code is published under the Eclipse Public License.
4
+ //
5
+ // Authors: Carl Laird, Andreas Waechter IBM 2005-08-15
6
+
7
+ #ifndef __IPSOLVESTATISTICS_HPP__
8
+ #define __IPSOLVESTATISTICS_HPP__
9
+
10
+ #include "IpReferenced.hpp"
11
+ #include "IpSmartPtr.hpp"
12
+ #include "IpUtils.hpp"
13
+
14
+ namespace Ipopt
15
+ {
16
+
17
+ // forward declaration (to avoid inclusion of too many header files)
18
+ class IpoptNLP;
19
+ class IpoptData;
20
+ class IpoptCalculatedQuantities;
21
+
22
+ /** This class collects statistics about an optimization run, such
23
+ * as iteration count, final infeasibilities etc. It is meant to
24
+ * provide such information to a user of Ipopt during the
25
+ * finalize_solution call.
26
+ */
27
+ class IPOPTLIB_EXPORT SolveStatistics : public ReferencedObject
28
+ {
29
+ public:
30
+ /**@name Constructors/Destructors */
31
+ ///@{
32
+ /** Default constructor.
33
+ *
34
+ * It takes in those collecting Ipopt
35
+ * objects that can provide the statistics information. Those
36
+ * statistics are retrieved at the time of the constructor
37
+ * call.
38
+ */
39
+ SolveStatistics(
40
+ const SmartPtr<IpoptNLP>& ip_nlp,
41
+ const SmartPtr<IpoptData>& ip_data,
42
+ const SmartPtr<IpoptCalculatedQuantities>& ip_cq
43
+ );
44
+
45
+ /** Default destructor */
46
+ virtual ~SolveStatistics()
47
+ { }
48
+ ///@}
49
+
50
+ /** @name Accessor methods for retrieving different kind of solver statistics information */
51
+ ///@{
52
+ /** Iteration counts. */
53
+ virtual Index IterationCount() const;
54
+
55
+ /** Total CPU time, including function evaluations. */
56
+ virtual Number TotalCpuTime() const;
57
+
58
+ /** Total CPU time, including function evaluations.
59
+ *
60
+ * @deprecated Use TotalCpuTime() instead.
61
+ */
62
+ IPOPT_DEPRECATED
63
+ Number TotalCPUTime() const
64
+ {
65
+ return TotalCpuTime();
66
+ }
67
+
68
+ /** Total System time, including function evaluations. */
69
+ virtual Number TotalSysTime() const;
70
+
71
+ /** Total wall clock time, including function evaluations. */
72
+ virtual Number TotalWallclockTime() const;
73
+
74
+ /** Number of NLP function evaluations. */
75
+ virtual void NumberOfEvaluations(
76
+ Index& num_obj_evals,
77
+ Index& num_constr_evals,
78
+ Index& num_obj_grad_evals,
79
+ Index& num_constr_jac_evals,
80
+ Index& num_hess_evals
81
+ ) const;
82
+
83
+ /** Unscaled solution infeasibilities.
84
+ *
85
+ * @deprecated Use Infeasibilities() with 5 arguments instead.
86
+ */
87
+ IPOPT_DEPRECATED
88
+ virtual void Infeasibilities(
89
+ Number& dual_inf,
90
+ Number& constr_viol,
91
+ Number& complementarity,
92
+ Number& kkt_error
93
+ ) const;
94
+
95
+ /** Unscaled solution infeasibilities. */
96
+ virtual void Infeasibilities(
97
+ Number& dual_inf, ///< dual infeasibility (Gradient of Lagrangian not zero)
98
+ Number& constr_viol, ///< violation of constraints
99
+ Number& varbounds_viol, ///< violation of variable bounds @since 3.14.0
100
+ Number& complementarity, ///< violation of complementarity
101
+ Number& kkt_error ///< KKT error
102
+ ) const;
103
+
104
+ /** Scaled solution infeasibilities.
105
+ *
106
+ * @deprecated Use ScaledInfeasibilities() with 5 arguments instead.
107
+ */
108
+ IPOPT_DEPRECATED
109
+ virtual void ScaledInfeasibilities(
110
+ Number& scaled_dual_inf,
111
+ Number& scaled_constr_viol,
112
+ Number& scaled_complementarity,
113
+ Number& scaled_kkt_error
114
+ ) const;
115
+
116
+ /** Scaled solution infeasibilities.
117
+ *
118
+ * @deprecated Use ScaledInfeasibilities() with 5 arguments instead.
119
+ */
120
+ virtual void ScaledInfeasibilities(
121
+ Number& scaled_dual_inf, ///< scaled dual infeasibility (Gradient of Lagrangian not zero)
122
+ Number& scaled_constr_viol, ///< violation of scaled constraints
123
+ Number& scaled_varbounds_viol, ///< violation of scaled variable bounds @since 3.14.0
124
+ Number& scaled_complementarity, ///< violation of scaled complementarity
125
+ Number& scaled_kkt_error ///< scaled KKT error
126
+ ) const;
127
+
128
+ /** Final value of objective function */
129
+ virtual Number FinalObjective() const;
130
+
131
+ /** Final scaled value of objective function */
132
+ virtual Number FinalScaledObjective() const;
133
+ ///@}
134
+
135
+ private:
136
+ /**@name Default Compiler Generated Methods
137
+ * (Hidden to avoid implicit creation/calling).
138
+ *
139
+ * These methods are not implemented and
140
+ * we do not want the compiler to implement
141
+ * them for us, so we declare them private
142
+ * and do not define them. This ensures that
143
+ * they will not be implicitly created/called.
144
+ */
145
+ ///@{
146
+ /** Default Constructor */
147
+ SolveStatistics();
148
+
149
+ /** Copy Constructor */
150
+ SolveStatistics(
151
+ const SolveStatistics&
152
+ );
153
+
154
+ /** Default Assignment Operator */
155
+ void operator=(
156
+ const SolveStatistics&
157
+ );
158
+ ///@}
159
+
160
+ /** @name Fields for storing the statistics data */
161
+ ///@{
162
+ /** Number of iterations. */
163
+ Index num_iters_;
164
+ /* Total CPU time */
165
+ Number total_cpu_time_;
166
+ /* Total system time */
167
+ Number total_sys_time_;
168
+ /* Total wall clock time */
169
+ Number total_wallclock_time_;
170
+ /** Number of objective function evaluations. */
171
+ Index num_obj_evals_;
172
+ /** Number of constraints evaluations (max of equality and inequality) */
173
+ Index num_constr_evals_;
174
+ /** Number of objective gradient evaluations. */
175
+ Index num_obj_grad_evals_;
176
+ /** Number of constraint Jacobian evaluations. */
177
+ Index num_constr_jac_evals_;
178
+ /** Number of Lagrangian Hessian evaluations. */
179
+ Index num_hess_evals_;
180
+
181
+ /** Final scaled value of objective function */
182
+ Number scaled_obj_val_;
183
+ /** Final unscaled value of objective function */
184
+ Number obj_val_;
185
+ /** Final scaled dual infeasibility (max-norm) */
186
+ Number scaled_dual_inf_;
187
+ /** Final unscaled dual infeasibility (max-norm) */
188
+ Number dual_inf_;
189
+ /** Final scaled constraint violation (max-norm) */
190
+ Number scaled_constr_viol_;
191
+ /** Final unscaled constraint violation (max-norm) */
192
+ Number constr_viol_;
193
+ /** Final scaled variable bound violation (max-norm) */
194
+ Number scaled_bound_viol_;
195
+ /** Final unscaled variable bound violation (max-norm) */
196
+ Number bound_viol_;
197
+ /** Final scaled complementarity error (max-norm) */
198
+ Number scaled_compl_;
199
+ /** Final unscaled complementarity error (max-norm) */
200
+ Number compl_;
201
+ /** Final overall scaled KKT error (max-norm) */
202
+ Number scaled_kkt_error_;
203
+ /** Final overall unscaled KKT error (max-norm) */
204
+ Number kkt_error_;
205
+ ///@}
206
+ };
207
+
208
+ } // namespace Ipopt
209
+
210
+ #endif
@@ -0,0 +1,260 @@
1
+ // Copyright (C) 2004, 2007 International Business Machines and others.
2
+ // All Rights Reserved.
3
+ // This code is published under the Eclipse Public License.
4
+ //
5
+ // Authors: Carl Laird, Andreas Waechter IBM 2004-03-17
6
+
7
+ #ifndef __IPSPARSESYMLINEARSOLVERINTERFACE_HPP__
8
+ #define __IPSPARSESYMLINEARSOLVERINTERFACE_HPP__
9
+
10
+ #include "IpUtils.hpp"
11
+ #include "IpAlgStrategy.hpp"
12
+ #include "IpSymLinearSolver.hpp"
13
+
14
+ namespace Ipopt
15
+ {
16
+
17
+ /** Base class for interfaces to symmetric indefinite linear solvers
18
+ * for sparse matrices.
19
+ *
20
+ * This defines the general interface to linear solvers for sparse
21
+ * symmetric indefinite matrices. The matrices can be provided
22
+ * either in "triplet format" for the lower triangular part
23
+ * (like for Harwell's MA27 solver), or in compressed sparse row
24
+ * (CSR) format for the upper triangular part of the symmetric matrix.
25
+ * The latter may equivalently (or better) be referred as compressed
26
+ * sparse column (CSC) format for the lower triangular part.
27
+ *
28
+ * The solver should be able to compute the inertia of the matrix,
29
+ * or more specifically, the number of negative eigenvalues in the
30
+ * factorized matrix.
31
+ *
32
+ * This interface is used by the calling objective in the following
33
+ * way:
34
+ *
35
+ * 1. The InitializeImpl method is called at the very beginning
36
+ * (for every optimization run), which allows the linear solver
37
+ * object to retrieve options given in the OptionsList (such as
38
+ * pivot tolerances etc). At this point, some internal data can
39
+ * also be initialized.
40
+ *
41
+ * 2. The calling class calls MatrixFormat to find out which matrix
42
+ * representation the linear solver requires. The possible options
43
+ * are Triplet_Format, as well as CSR_Format_0_Offset and
44
+ * CSR_Format_1_Offset. The difference between the last two is
45
+ * that for CSR_Format_0_Offset the counting of the element position
46
+ * in the ia and ja arrays starts are 0 (C-style numbering),
47
+ * whereas for the other one it starts at 1 (Fortran-style
48
+ * numbering).
49
+ *
50
+ * 3. After this, the InitializeStructure method is called (once).
51
+ * Here, the structure of the matrix is provided. If the linear
52
+ * solver requires a symbolic preprocessing phase that can be done
53
+ * without knowledge of the matrix element values, it can be done
54
+ * here.
55
+ *
56
+ * 4. The calling class will request an array for storing the
57
+ * actual values for a matrix using the GetValuesArrayPtr method.
58
+ * This array must be at least as large as the number of nonzeros
59
+ * in the matrix (as given to this class by the InitializeStructure
60
+ * method call). After a call of this method, the calling class
61
+ * will fill this array with the actual values of the matrix.
62
+ *
63
+ * 5. Every time later on, when actual solves of a linear system is
64
+ * requested, the calling class will call the MultiSolve to request
65
+ * the solve, possibly for multiple right-hand sides. The flag
66
+ * new_matrix then indicates if the values of the matrix have
67
+ * changed and if a factorization is required, or if an old
68
+ * factorization can be used to do the solve.
69
+ *
70
+ * Note that the GetValuesArrayPtr method will be called before
71
+ * every call of MultiSolve with new_matrix=true, or before a
72
+ * renewed call of MultiSolve if the most previous return value was
73
+ * SYMSOLV_CALL_AGAIN.
74
+ *
75
+ * 6. The calling class might request with NumberOfNegEVals the
76
+ * number of the negative eigenvalues for the original matrix that
77
+ * were detected during the most recently performed factorization.
78
+ *
79
+ * 7. The calling class might ask the linear solver to increase the
80
+ * quality of the solution. For example, if the linear solver uses
81
+ * a pivot tolerance, a larger value should be used for the next
82
+ * solve (which might require a refactorization).
83
+ *
84
+ * 8. Finally, when the destructor is called, the internal storage,
85
+ * also in the linear solver, should be released.
86
+ *
87
+ * Note, if the matrix is given in triplet format, entries might be
88
+ * listed multiple times, in which case the corresponding elements
89
+ * have to be added.
90
+ *
91
+ * A note for warm starts: If the option
92
+ * "warm_start_same_structure" is specified with "yes", the
93
+ * algorithm assumes that a problem with the same sparsity
94
+ * structure is solved for a repeated time. In that case, the
95
+ * linear solver might reuse information from the previous
96
+ * optimization. See Ma27TSolverInterface for an example.
97
+ */
98
+ class SparseSymLinearSolverInterface: public AlgorithmStrategyObject
99
+ {
100
+ public:
101
+ /** Enum to specify sparse matrix format. */
102
+ enum EMatrixFormat
103
+ {
104
+ /** Triplet (MA27) format for lower triangular part */
105
+ Triplet_Format,
106
+ /** Compressed sparse row format for upper triangular part, with 0 offset */
107
+ CSR_Format_0_Offset,
108
+ /** Compressed sparse row format for upper triangular part, with 1 offset */
109
+ CSR_Format_1_Offset,
110
+ /** Compressed sparse row format for both lower and upper parts, with 0 offset */
111
+ CSR_Full_Format_0_Offset,
112
+ /** Compressed sparse row format for both lower and upper parts, with 1 offset */
113
+ CSR_Full_Format_1_Offset
114
+ };
115
+
116
+ /** @name Constructor/Destructor */
117
+ ///@{
118
+ SparseSymLinearSolverInterface()
119
+ { }
120
+
121
+ virtual ~SparseSymLinearSolverInterface()
122
+ { }
123
+ ///@}
124
+
125
+ virtual bool InitializeImpl(
126
+ const OptionsList& options,
127
+ const std::string& prefix
128
+ ) = 0;
129
+
130
+ /** @name Methods for requesting solution of the linear system. */
131
+ ///@{
132
+ /** Method for initializing internal structures.
133
+ *
134
+ * Here, ndim gives the number of rows and columns of the matrix,
135
+ * nonzeros give the number of nonzero elements, and ia and ja give
136
+ * the positions of the nonzero elements, given in the matrix format
137
+ * determined by MatrixFormat.
138
+ */
139
+ virtual ESymSolverStatus InitializeStructure(
140
+ Index dim,
141
+ Index nonzeros,
142
+ const Index* ia,
143
+ const Index* ja
144
+ ) = 0;
145
+
146
+ /** Method returning an internal array into which the nonzero
147
+ * elements (in the same order as ja) will be stored by the
148
+ * calling routine before a call to MultiSolve with a
149
+ * new_matrix=true (or after a return of MultiSolve with
150
+ * SYMSOLV_CALL_AGAIN).
151
+ *
152
+ * The returned array must have space for at
153
+ * least nonzero elements.
154
+ */
155
+ virtual Number* GetValuesArrayPtr() = 0;
156
+
157
+ /** Solve operation for multiple right hand sides.
158
+ *
159
+ * Solves the linear system A * x = b with multiple right hand sides,
160
+ * where A is the symmetric indefinite matrix. Here, ia and ja give
161
+ * the positions of the values (in the required matrix data format).
162
+ * The actual values of the matrix will have been given to this
163
+ * object by copying them into the array provided by
164
+ * GetValuesArrayPtr. ia and ja are identical to the ones given
165
+ * to InitializeStructure. The flag new_matrix is set to true,
166
+ * if the values of the matrix has changed, and a refactorization
167
+ * is required.
168
+ *
169
+ * @return SYMSOLV_SUCCESS if the factorization and
170
+ * solves were successful, SYMSOLV_SINGULAR if the linear system
171
+ * is singular, and SYMSOLV_WRONG_INERTIA if check_NegEVals is
172
+ * true and the number of negative eigenvalues in the matrix does
173
+ * not match numberOfNegEVals. If SYMSOLV_CALL_AGAIN is
174
+ * returned, then the calling function will request the pointer
175
+ * for the array for storing a again (with GetValuesPtr), write
176
+ * the values of the nonzero elements into it, and call this
177
+ * MultiSolve method again with the same right-hand sides. (This
178
+ * can be done, for example, if the linear solver realized it
179
+ * does not have sufficient memory and needs to redo the
180
+ * factorization; e.g., for MA27.)
181
+ *
182
+ * The number of right-hand sides is given by nrhs, the values of
183
+ * the right-hand sides are given in rhs_vals (one full right-hand
184
+ * side stored immediately after the other), and solutions are
185
+ * to be returned in the same array.
186
+ *
187
+ * check_NegEVals will not be chosen true, if ProvidesInertia()
188
+ * returns false.
189
+ */
190
+ virtual ESymSolverStatus MultiSolve(
191
+ bool new_matrix,
192
+ const Index* ia,
193
+ const Index* ja,
194
+ Index nrhs,
195
+ Number* rhs_vals,
196
+ bool check_NegEVals,
197
+ Index numberOfNegEVals
198
+ ) = 0;
199
+
200
+ /** Number of negative eigenvalues detected during last factorization.
201
+ *
202
+ * @return the number of negative eigenvalues of the most recent factorized matrix.
203
+ *
204
+ * This must not be called if the linear solver does not compute this quantities
205
+ * (see ProvidesInertia).
206
+ */
207
+ virtual Index NumberOfNegEVals() const = 0;
208
+ ///@}
209
+
210
+ //* @name Options of Linear solver */
211
+ ///@{
212
+ /** Request to increase quality of solution for next solve.
213
+ *
214
+ * The calling class asks linear solver to increase quality of
215
+ * solution for the next solve (e.g. increase pivot tolerance).
216
+ *
217
+ * @return false, if this is not possible (e.g. maximal pivot
218
+ * tolerance already used.)
219
+ */
220
+ virtual bool IncreaseQuality() = 0;
221
+
222
+ /** Query whether inertia is computed by linear solver.
223
+ *
224
+ * @return true, if linear solver provides inertia
225
+ */
226
+ virtual bool ProvidesInertia() const = 0;
227
+
228
+ /** Query of requested matrix type that the linear solver
229
+ * understands.
230
+ */
231
+ virtual EMatrixFormat MatrixFormat() const = 0;
232
+ ///@}
233
+
234
+ /** @name Methods related to the detection of linearly dependent
235
+ * rows in a matrix */
236
+ ///@{
237
+ /** Query whether the indices of linearly dependent rows/columns
238
+ * can be determined by this linear solver.
239
+ */
240
+ virtual bool ProvidesDegeneracyDetection() const
241
+ {
242
+ return false;
243
+ }
244
+
245
+ /** This method determines the list of row indices of the linearly
246
+ * dependent rows.
247
+ */
248
+ virtual ESymSolverStatus DetermineDependentRows(
249
+ const Index* /*ia*/,
250
+ const Index* /*ja*/,
251
+ std::list<Index>& /*c_deps*/
252
+ )
253
+ {
254
+ return SYMSOLVER_FATAL_ERROR;
255
+ }
256
+ };
257
+
258
+ } // namespace Ipopt
259
+
260
+ #endif