ltbams 0.9.9__py3-none-any.whl → 1.0.0__py3-none-any.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 (728) hide show
  1. ams/__init__.py +4 -11
  2. ams/_version.py +4 -4
  3. ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
  4. ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
  5. ams/cases/5bus/pjm5bus_uced.json +1062 -0
  6. ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
  7. ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
  8. ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
  9. ams/cases/ieee123/ieee123.xlsx +0 -0
  10. ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
  11. ams/cases/ieee14/ieee14.json +1166 -0
  12. ams/cases/ieee14/ieee14.raw +92 -0
  13. ams/cases/ieee14/ieee14_conn.xlsx +0 -0
  14. ams/cases/ieee14/ieee14_uced.xlsx +0 -0
  15. ams/cases/ieee39/ieee39.xlsx +0 -0
  16. ams/cases/ieee39/ieee39_uced.xlsx +0 -0
  17. ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
  18. ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
  19. ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
  20. ams/cases/matpower/benchmark.json +1594 -0
  21. ams/cases/matpower/case118.m +787 -0
  22. ams/cases/matpower/case14.m +129 -0
  23. ams/cases/matpower/case300.m +1315 -0
  24. ams/cases/matpower/case39.m +205 -0
  25. ams/cases/matpower/case5.m +62 -0
  26. ams/cases/matpower/case_ACTIVSg2000.m +9460 -0
  27. ams/cases/npcc/npcc.m +644 -0
  28. ams/cases/npcc/npcc_uced.xlsx +0 -0
  29. ams/cases/pglib/pglib_opf_case39_epri__api.m +243 -0
  30. ams/cases/wecc/wecc.m +714 -0
  31. ams/cases/wecc/wecc_uced.xlsx +0 -0
  32. ams/cli.py +6 -0
  33. ams/core/__init__.py +2 -0
  34. ams/core/documenter.py +652 -0
  35. ams/core/matprocessor.py +782 -0
  36. ams/core/model.py +330 -0
  37. ams/core/param.py +322 -0
  38. ams/core/service.py +918 -0
  39. ams/core/symprocessor.py +224 -0
  40. ams/core/var.py +59 -0
  41. ams/extension/__init__.py +5 -0
  42. ams/extension/eva.py +401 -0
  43. ams/interface.py +1085 -0
  44. ams/io/__init__.py +133 -0
  45. ams/io/json.py +82 -0
  46. ams/io/matpower.py +406 -0
  47. ams/io/psse.py +6 -0
  48. ams/io/pypower.py +103 -0
  49. ams/io/xlsx.py +80 -0
  50. ams/main.py +83 -4
  51. ams/models/__init__.py +24 -0
  52. ams/models/area.py +40 -0
  53. ams/models/bus.py +52 -0
  54. ams/models/cost.py +169 -0
  55. ams/models/distributed/__init__.py +3 -0
  56. ams/models/distributed/esd1.py +71 -0
  57. ams/models/distributed/ev.py +60 -0
  58. ams/models/distributed/pvd1.py +67 -0
  59. ams/models/group.py +231 -0
  60. ams/models/info.py +26 -0
  61. ams/models/line.py +238 -0
  62. ams/models/renewable/__init__.py +5 -0
  63. ams/models/renewable/regc.py +119 -0
  64. ams/models/reserve.py +94 -0
  65. ams/models/shunt.py +14 -0
  66. ams/models/static/__init__.py +2 -0
  67. ams/models/static/gen.py +165 -0
  68. ams/models/static/pq.py +61 -0
  69. ams/models/timeslot.py +69 -0
  70. ams/models/zone.py +49 -0
  71. ams/opt/__init__.py +12 -0
  72. ams/opt/constraint.py +175 -0
  73. ams/opt/exprcalc.py +127 -0
  74. ams/opt/expression.py +188 -0
  75. ams/opt/objective.py +174 -0
  76. ams/opt/omodel.py +432 -0
  77. ams/opt/optzbase.py +192 -0
  78. ams/opt/param.py +156 -0
  79. ams/opt/var.py +233 -0
  80. ams/pypower/__init__.py +8 -0
  81. ams/pypower/_compat.py +9 -0
  82. ams/pypower/core/__init__.py +8 -0
  83. ams/pypower/core/pips.py +894 -0
  84. ams/pypower/core/ppoption.py +244 -0
  85. ams/pypower/core/ppver.py +18 -0
  86. ams/pypower/core/solver.py +2451 -0
  87. ams/pypower/eps.py +6 -0
  88. ams/pypower/idx.py +174 -0
  89. ams/pypower/io.py +604 -0
  90. ams/pypower/make/__init__.py +11 -0
  91. ams/pypower/make/matrices.py +665 -0
  92. ams/pypower/make/pdv.py +506 -0
  93. ams/pypower/routines/__init__.py +7 -0
  94. ams/pypower/routines/cpf.py +513 -0
  95. ams/pypower/routines/cpf_callbacks.py +114 -0
  96. ams/pypower/routines/opf.py +1803 -0
  97. ams/pypower/routines/opffcns.py +1946 -0
  98. ams/pypower/routines/pflow.py +852 -0
  99. ams/pypower/toggle.py +1098 -0
  100. ams/pypower/utils.py +293 -0
  101. ams/report.py +212 -50
  102. ams/routines/__init__.py +23 -0
  103. ams/routines/acopf.py +117 -0
  104. ams/routines/cpf.py +65 -0
  105. ams/routines/dcopf.py +241 -0
  106. ams/routines/dcpf.py +209 -0
  107. ams/routines/dcpf0.py +196 -0
  108. ams/routines/dopf.py +150 -0
  109. ams/routines/ed.py +312 -0
  110. ams/routines/pflow.py +255 -0
  111. ams/routines/pflow0.py +113 -0
  112. ams/routines/pflow1.py +156 -0
  113. ams/routines/routine.py +1033 -0
  114. ams/routines/rted.py +519 -0
  115. ams/routines/type.py +160 -0
  116. ams/routines/uc.py +376 -0
  117. ams/shared.py +34 -9
  118. ams/system.py +61 -22
  119. ams/utils/__init__.py +3 -0
  120. ams/utils/misc.py +77 -0
  121. ams/utils/paths.py +257 -0
  122. docs/Makefile +21 -0
  123. docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_20_1.png +0 -0
  124. docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_37_1.png +0 -0
  125. docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_39_1.png +0 -0
  126. docs/build/html/_images/_examples_demo_demo_AGC_20_1.png +0 -0
  127. docs/build/html/_images/_examples_demo_demo_AGC_37_1.png +0 -0
  128. docs/build/html/_images/_examples_demo_demo_AGC_39_1.png +0 -0
  129. docs/build/html/_images/xlsx.png +0 -0
  130. docs/build/html/_static/file.png +0 -0
  131. docs/build/html/_static/minus.png +0 -0
  132. docs/build/html/_static/plus.png +0 -0
  133. docs/make.bat +35 -0
  134. docs/source/_generated/_generated/ams.core.model.Model.alter.rst +6 -0
  135. docs/source/_generated/_generated/ams.core.model.Model.class_name.rst +6 -0
  136. docs/source/_generated/_generated/ams.core.model.Model.doc.rst +6 -0
  137. docs/source/_generated/_generated/ams.core.model.Model.get.rst +6 -0
  138. docs/source/_generated/_generated/ams.core.model.Model.get_idx.rst +6 -0
  139. docs/source/_generated/_generated/ams.core.model.Model.idx2uid.rst +6 -0
  140. docs/source/_generated/_generated/ams.core.model.Model.list2array.rst +6 -0
  141. docs/source/_generated/_generated/ams.core.model.Model.set.rst +6 -0
  142. docs/source/_generated/_generated/ams.core.model.Model.set_backref.rst +6 -0
  143. docs/source/_generated/_generated/ams.core.param.RParam.class_name.rst +6 -0
  144. docs/source/_generated/_generated/ams.core.param.RParam.dtype.rst +6 -0
  145. docs/source/_generated/_generated/ams.core.param.RParam.evaluate.rst +6 -0
  146. docs/source/_generated/_generated/ams.core.param.RParam.get_idx.rst +6 -0
  147. docs/source/_generated/_generated/ams.core.param.RParam.n.rst +6 -0
  148. docs/source/_generated/_generated/ams.core.param.RParam.parse.rst +6 -0
  149. docs/source/_generated/_generated/ams.core.param.RParam.shape.rst +6 -0
  150. docs/source/_generated/_generated/ams.core.param.RParam.size.rst +6 -0
  151. docs/source/_generated/_generated/ams.core.param.RParam.update.rst +6 -0
  152. docs/source/_generated/_generated/ams.core.param.RParam.v.rst +6 -0
  153. docs/source/_generated/_generated/ams.core.service.LoadScale.assign_memory.rst +6 -0
  154. docs/source/_generated/_generated/ams.core.service.LoadScale.class_name.rst +6 -0
  155. docs/source/_generated/_generated/ams.core.service.LoadScale.evaluate.rst +6 -0
  156. docs/source/_generated/_generated/ams.core.service.LoadScale.get_names.rst +6 -0
  157. docs/source/_generated/_generated/ams.core.service.LoadScale.n.rst +6 -0
  158. docs/source/_generated/_generated/ams.core.service.LoadScale.parse.rst +6 -0
  159. docs/source/_generated/_generated/ams.core.service.LoadScale.shape.rst +6 -0
  160. docs/source/_generated/_generated/ams.core.service.LoadScale.size.rst +6 -0
  161. docs/source/_generated/_generated/ams.core.service.LoadScale.update.rst +6 -0
  162. docs/source/_generated/_generated/ams.core.service.LoadScale.v.rst +6 -0
  163. docs/source/_generated/_generated/ams.core.service.MinDur.assign_memory.rst +6 -0
  164. docs/source/_generated/_generated/ams.core.service.MinDur.class_name.rst +6 -0
  165. docs/source/_generated/_generated/ams.core.service.MinDur.evaluate.rst +6 -0
  166. docs/source/_generated/_generated/ams.core.service.MinDur.get_names.rst +6 -0
  167. docs/source/_generated/_generated/ams.core.service.MinDur.n.rst +6 -0
  168. docs/source/_generated/_generated/ams.core.service.MinDur.parse.rst +6 -0
  169. docs/source/_generated/_generated/ams.core.service.MinDur.shape.rst +6 -0
  170. docs/source/_generated/_generated/ams.core.service.MinDur.size.rst +6 -0
  171. docs/source/_generated/_generated/ams.core.service.MinDur.update.rst +6 -0
  172. docs/source/_generated/_generated/ams.core.service.MinDur.v.rst +6 -0
  173. docs/source/_generated/_generated/ams.core.service.MinDur.v0.rst +6 -0
  174. docs/source/_generated/_generated/ams.core.service.MinDur.v1.rst +6 -0
  175. docs/source/_generated/_generated/ams.core.service.NumExpandDim.assign_memory.rst +6 -0
  176. docs/source/_generated/_generated/ams.core.service.NumExpandDim.class_name.rst +6 -0
  177. docs/source/_generated/_generated/ams.core.service.NumExpandDim.evaluate.rst +6 -0
  178. docs/source/_generated/_generated/ams.core.service.NumExpandDim.get_names.rst +6 -0
  179. docs/source/_generated/_generated/ams.core.service.NumExpandDim.n.rst +6 -0
  180. docs/source/_generated/_generated/ams.core.service.NumExpandDim.parse.rst +6 -0
  181. docs/source/_generated/_generated/ams.core.service.NumExpandDim.shape.rst +6 -0
  182. docs/source/_generated/_generated/ams.core.service.NumExpandDim.size.rst +6 -0
  183. docs/source/_generated/_generated/ams.core.service.NumExpandDim.update.rst +6 -0
  184. docs/source/_generated/_generated/ams.core.service.NumExpandDim.v.rst +6 -0
  185. docs/source/_generated/_generated/ams.core.service.NumExpandDim.v0.rst +6 -0
  186. docs/source/_generated/_generated/ams.core.service.NumExpandDim.v1.rst +6 -0
  187. docs/source/_generated/_generated/ams.core.service.NumHstack.assign_memory.rst +6 -0
  188. docs/source/_generated/_generated/ams.core.service.NumHstack.class_name.rst +6 -0
  189. docs/source/_generated/_generated/ams.core.service.NumHstack.evaluate.rst +6 -0
  190. docs/source/_generated/_generated/ams.core.service.NumHstack.get_names.rst +6 -0
  191. docs/source/_generated/_generated/ams.core.service.NumHstack.n.rst +6 -0
  192. docs/source/_generated/_generated/ams.core.service.NumHstack.parse.rst +6 -0
  193. docs/source/_generated/_generated/ams.core.service.NumHstack.shape.rst +6 -0
  194. docs/source/_generated/_generated/ams.core.service.NumHstack.size.rst +6 -0
  195. docs/source/_generated/_generated/ams.core.service.NumHstack.update.rst +6 -0
  196. docs/source/_generated/_generated/ams.core.service.NumHstack.v.rst +6 -0
  197. docs/source/_generated/_generated/ams.core.service.NumHstack.v0.rst +6 -0
  198. docs/source/_generated/_generated/ams.core.service.NumHstack.v1.rst +6 -0
  199. docs/source/_generated/_generated/ams.core.service.NumOp.assign_memory.rst +6 -0
  200. docs/source/_generated/_generated/ams.core.service.NumOp.class_name.rst +6 -0
  201. docs/source/_generated/_generated/ams.core.service.NumOp.evaluate.rst +6 -0
  202. docs/source/_generated/_generated/ams.core.service.NumOp.get_names.rst +6 -0
  203. docs/source/_generated/_generated/ams.core.service.NumOp.n.rst +6 -0
  204. docs/source/_generated/_generated/ams.core.service.NumOp.parse.rst +6 -0
  205. docs/source/_generated/_generated/ams.core.service.NumOp.shape.rst +6 -0
  206. docs/source/_generated/_generated/ams.core.service.NumOp.size.rst +6 -0
  207. docs/source/_generated/_generated/ams.core.service.NumOp.update.rst +6 -0
  208. docs/source/_generated/_generated/ams.core.service.NumOp.v.rst +6 -0
  209. docs/source/_generated/_generated/ams.core.service.NumOp.v0.rst +6 -0
  210. docs/source/_generated/_generated/ams.core.service.NumOp.v1.rst +6 -0
  211. docs/source/_generated/_generated/ams.core.service.NumOpDual.assign_memory.rst +6 -0
  212. docs/source/_generated/_generated/ams.core.service.NumOpDual.class_name.rst +6 -0
  213. docs/source/_generated/_generated/ams.core.service.NumOpDual.evaluate.rst +6 -0
  214. docs/source/_generated/_generated/ams.core.service.NumOpDual.get_names.rst +6 -0
  215. docs/source/_generated/_generated/ams.core.service.NumOpDual.n.rst +6 -0
  216. docs/source/_generated/_generated/ams.core.service.NumOpDual.parse.rst +6 -0
  217. docs/source/_generated/_generated/ams.core.service.NumOpDual.shape.rst +6 -0
  218. docs/source/_generated/_generated/ams.core.service.NumOpDual.size.rst +6 -0
  219. docs/source/_generated/_generated/ams.core.service.NumOpDual.update.rst +6 -0
  220. docs/source/_generated/_generated/ams.core.service.NumOpDual.v.rst +6 -0
  221. docs/source/_generated/_generated/ams.core.service.NumOpDual.v0.rst +6 -0
  222. docs/source/_generated/_generated/ams.core.service.NumOpDual.v1.rst +6 -0
  223. docs/source/_generated/_generated/ams.core.service.RBaseService.assign_memory.rst +6 -0
  224. docs/source/_generated/_generated/ams.core.service.RBaseService.class_name.rst +6 -0
  225. docs/source/_generated/_generated/ams.core.service.RBaseService.evaluate.rst +6 -0
  226. docs/source/_generated/_generated/ams.core.service.RBaseService.get_names.rst +6 -0
  227. docs/source/_generated/_generated/ams.core.service.RBaseService.n.rst +6 -0
  228. docs/source/_generated/_generated/ams.core.service.RBaseService.parse.rst +6 -0
  229. docs/source/_generated/_generated/ams.core.service.RBaseService.shape.rst +6 -0
  230. docs/source/_generated/_generated/ams.core.service.RBaseService.size.rst +6 -0
  231. docs/source/_generated/_generated/ams.core.service.RBaseService.update.rst +6 -0
  232. docs/source/_generated/_generated/ams.core.service.RBaseService.v.rst +6 -0
  233. docs/source/_generated/_generated/ams.core.service.ROperationService.assign_memory.rst +6 -0
  234. docs/source/_generated/_generated/ams.core.service.ROperationService.class_name.rst +6 -0
  235. docs/source/_generated/_generated/ams.core.service.ROperationService.evaluate.rst +6 -0
  236. docs/source/_generated/_generated/ams.core.service.ROperationService.get_names.rst +6 -0
  237. docs/source/_generated/_generated/ams.core.service.ROperationService.n.rst +6 -0
  238. docs/source/_generated/_generated/ams.core.service.ROperationService.parse.rst +6 -0
  239. docs/source/_generated/_generated/ams.core.service.ROperationService.shape.rst +6 -0
  240. docs/source/_generated/_generated/ams.core.service.ROperationService.size.rst +6 -0
  241. docs/source/_generated/_generated/ams.core.service.ROperationService.update.rst +6 -0
  242. docs/source/_generated/_generated/ams.core.service.ROperationService.v.rst +6 -0
  243. docs/source/_generated/_generated/ams.core.service.RampSub.assign_memory.rst +6 -0
  244. docs/source/_generated/_generated/ams.core.service.RampSub.class_name.rst +6 -0
  245. docs/source/_generated/_generated/ams.core.service.RampSub.evaluate.rst +6 -0
  246. docs/source/_generated/_generated/ams.core.service.RampSub.get_names.rst +6 -0
  247. docs/source/_generated/_generated/ams.core.service.RampSub.n.rst +6 -0
  248. docs/source/_generated/_generated/ams.core.service.RampSub.parse.rst +6 -0
  249. docs/source/_generated/_generated/ams.core.service.RampSub.shape.rst +6 -0
  250. docs/source/_generated/_generated/ams.core.service.RampSub.size.rst +6 -0
  251. docs/source/_generated/_generated/ams.core.service.RampSub.update.rst +6 -0
  252. docs/source/_generated/_generated/ams.core.service.RampSub.v.rst +6 -0
  253. docs/source/_generated/_generated/ams.core.service.RampSub.v0.rst +6 -0
  254. docs/source/_generated/_generated/ams.core.service.RampSub.v1.rst +6 -0
  255. docs/source/_generated/_generated/ams.core.service.ValueService.assign_memory.rst +6 -0
  256. docs/source/_generated/_generated/ams.core.service.ValueService.class_name.rst +6 -0
  257. docs/source/_generated/_generated/ams.core.service.ValueService.evaluate.rst +6 -0
  258. docs/source/_generated/_generated/ams.core.service.ValueService.get_names.rst +6 -0
  259. docs/source/_generated/_generated/ams.core.service.ValueService.n.rst +6 -0
  260. docs/source/_generated/_generated/ams.core.service.ValueService.parse.rst +6 -0
  261. docs/source/_generated/_generated/ams.core.service.ValueService.shape.rst +6 -0
  262. docs/source/_generated/_generated/ams.core.service.ValueService.size.rst +6 -0
  263. docs/source/_generated/_generated/ams.core.service.ValueService.update.rst +6 -0
  264. docs/source/_generated/_generated/ams.core.service.ValueService.v.rst +6 -0
  265. docs/source/_generated/_generated/ams.core.service.VarReduction.assign_memory.rst +6 -0
  266. docs/source/_generated/_generated/ams.core.service.VarReduction.class_name.rst +6 -0
  267. docs/source/_generated/_generated/ams.core.service.VarReduction.evaluate.rst +6 -0
  268. docs/source/_generated/_generated/ams.core.service.VarReduction.get_names.rst +6 -0
  269. docs/source/_generated/_generated/ams.core.service.VarReduction.n.rst +6 -0
  270. docs/source/_generated/_generated/ams.core.service.VarReduction.parse.rst +6 -0
  271. docs/source/_generated/_generated/ams.core.service.VarReduction.shape.rst +6 -0
  272. docs/source/_generated/_generated/ams.core.service.VarReduction.size.rst +6 -0
  273. docs/source/_generated/_generated/ams.core.service.VarReduction.update.rst +6 -0
  274. docs/source/_generated/_generated/ams.core.service.VarReduction.v.rst +6 -0
  275. docs/source/_generated/_generated/ams.core.service.VarReduction.v0.rst +6 -0
  276. docs/source/_generated/_generated/ams.core.service.VarReduction.v1.rst +6 -0
  277. docs/source/_generated/_generated/ams.core.service.VarSelect.assign_memory.rst +6 -0
  278. docs/source/_generated/_generated/ams.core.service.VarSelect.class_name.rst +6 -0
  279. docs/source/_generated/_generated/ams.core.service.VarSelect.evaluate.rst +6 -0
  280. docs/source/_generated/_generated/ams.core.service.VarSelect.get_names.rst +6 -0
  281. docs/source/_generated/_generated/ams.core.service.VarSelect.n.rst +6 -0
  282. docs/source/_generated/_generated/ams.core.service.VarSelect.parse.rst +6 -0
  283. docs/source/_generated/_generated/ams.core.service.VarSelect.shape.rst +6 -0
  284. docs/source/_generated/_generated/ams.core.service.VarSelect.size.rst +6 -0
  285. docs/source/_generated/_generated/ams.core.service.VarSelect.update.rst +6 -0
  286. docs/source/_generated/_generated/ams.core.service.VarSelect.v.rst +6 -0
  287. docs/source/_generated/_generated/ams.core.service.VarSelect.v0.rst +6 -0
  288. docs/source/_generated/_generated/ams.core.service.VarSelect.v1.rst +6 -0
  289. docs/source/_generated/_generated/ams.core.service.ZonalSum.assign_memory.rst +6 -0
  290. docs/source/_generated/_generated/ams.core.service.ZonalSum.class_name.rst +6 -0
  291. docs/source/_generated/_generated/ams.core.service.ZonalSum.evaluate.rst +6 -0
  292. docs/source/_generated/_generated/ams.core.service.ZonalSum.get_names.rst +6 -0
  293. docs/source/_generated/_generated/ams.core.service.ZonalSum.n.rst +6 -0
  294. docs/source/_generated/_generated/ams.core.service.ZonalSum.parse.rst +6 -0
  295. docs/source/_generated/_generated/ams.core.service.ZonalSum.shape.rst +6 -0
  296. docs/source/_generated/_generated/ams.core.service.ZonalSum.size.rst +6 -0
  297. docs/source/_generated/_generated/ams.core.service.ZonalSum.update.rst +6 -0
  298. docs/source/_generated/_generated/ams.core.service.ZonalSum.v.rst +6 -0
  299. docs/source/_generated/_generated/ams.core.service.ZonalSum.v0.rst +6 -0
  300. docs/source/_generated/_generated/ams.core.service.ZonalSum.v1.rst +6 -0
  301. docs/source/_generated/_generated/ams.interface.Dynamic.is_tds.rst +6 -0
  302. docs/source/_generated/_generated/ams.interface.Dynamic.link_andes.rst +6 -0
  303. docs/source/_generated/_generated/ams.interface.Dynamic.receive.rst +6 -0
  304. docs/source/_generated/_generated/ams.interface.Dynamic.send.rst +6 -0
  305. docs/source/_generated/_generated/ams.opt.constraint.Constraint.class_name.rst +6 -0
  306. docs/source/_generated/_generated/ams.opt.constraint.Constraint.e.rst +6 -0
  307. docs/source/_generated/_generated/ams.opt.constraint.Constraint.evaluate.rst +6 -0
  308. docs/source/_generated/_generated/ams.opt.constraint.Constraint.n.rst +6 -0
  309. docs/source/_generated/_generated/ams.opt.constraint.Constraint.parse.rst +6 -0
  310. docs/source/_generated/_generated/ams.opt.constraint.Constraint.shape.rst +6 -0
  311. docs/source/_generated/_generated/ams.opt.constraint.Constraint.size.rst +6 -0
  312. docs/source/_generated/_generated/ams.opt.constraint.Constraint.v.rst +6 -0
  313. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.class_name.rst +6 -0
  314. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.e.rst +6 -0
  315. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.evaluate.rst +6 -0
  316. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.get_idx.rst +6 -0
  317. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.n.rst +6 -0
  318. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.parse.rst +6 -0
  319. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.shape.rst +6 -0
  320. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.size.rst +6 -0
  321. docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.v.rst +6 -0
  322. docs/source/_generated/_generated/ams.opt.expression.Expression.class_name.rst +6 -0
  323. docs/source/_generated/_generated/ams.opt.expression.Expression.e.rst +6 -0
  324. docs/source/_generated/_generated/ams.opt.expression.Expression.evaluate.rst +6 -0
  325. docs/source/_generated/_generated/ams.opt.expression.Expression.get_idx.rst +6 -0
  326. docs/source/_generated/_generated/ams.opt.expression.Expression.n.rst +6 -0
  327. docs/source/_generated/_generated/ams.opt.expression.Expression.parse.rst +6 -0
  328. docs/source/_generated/_generated/ams.opt.expression.Expression.shape.rst +6 -0
  329. docs/source/_generated/_generated/ams.opt.expression.Expression.size.rst +6 -0
  330. docs/source/_generated/_generated/ams.opt.expression.Expression.v.rst +6 -0
  331. docs/source/_generated/_generated/ams.opt.objective.Objective.class_name.rst +6 -0
  332. docs/source/_generated/_generated/ams.opt.objective.Objective.e.rst +6 -0
  333. docs/source/_generated/_generated/ams.opt.objective.Objective.evaluate.rst +6 -0
  334. docs/source/_generated/_generated/ams.opt.objective.Objective.n.rst +6 -0
  335. docs/source/_generated/_generated/ams.opt.objective.Objective.parse.rst +6 -0
  336. docs/source/_generated/_generated/ams.opt.objective.Objective.shape.rst +6 -0
  337. docs/source/_generated/_generated/ams.opt.objective.Objective.size.rst +6 -0
  338. docs/source/_generated/_generated/ams.opt.objective.Objective.v.rst +6 -0
  339. docs/source/_generated/_generated/ams.opt.omodel.OModel.class_name.rst +6 -0
  340. docs/source/_generated/_generated/ams.opt.omodel.OModel.evaluate.rst +6 -0
  341. docs/source/_generated/_generated/ams.opt.omodel.OModel.finalize.rst +6 -0
  342. docs/source/_generated/_generated/ams.opt.omodel.OModel.init.rst +6 -0
  343. docs/source/_generated/_generated/ams.opt.omodel.OModel.initialized.rst +6 -0
  344. docs/source/_generated/_generated/ams.opt.omodel.OModel.parse.rst +6 -0
  345. docs/source/_generated/_generated/ams.opt.omodel.OModel.update.rst +6 -0
  346. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.class_name.rst +6 -0
  347. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.evaluate.rst +6 -0
  348. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.finalize.rst +6 -0
  349. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.init.rst +6 -0
  350. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.initialized.rst +6 -0
  351. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.parse.rst +6 -0
  352. docs/source/_generated/_generated/ams.opt.omodel.OModelBase.update.rst +6 -0
  353. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.class_name.rst +6 -0
  354. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.evaluate.rst +6 -0
  355. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.n.rst +6 -0
  356. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.parse.rst +6 -0
  357. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.shape.rst +6 -0
  358. docs/source/_generated/_generated/ams.opt.optbase.OptzBase.size.rst +6 -0
  359. docs/source/_generated/_generated/ams.opt.param.Param.class_name.rst +6 -0
  360. docs/source/_generated/_generated/ams.opt.param.Param.evaluate.rst +6 -0
  361. docs/source/_generated/_generated/ams.opt.param.Param.n.rst +6 -0
  362. docs/source/_generated/_generated/ams.opt.param.Param.parse.rst +6 -0
  363. docs/source/_generated/_generated/ams.opt.param.Param.shape.rst +6 -0
  364. docs/source/_generated/_generated/ams.opt.param.Param.size.rst +6 -0
  365. docs/source/_generated/_generated/ams.opt.param.Param.update.rst +6 -0
  366. docs/source/_generated/_generated/ams.opt.var.Var.class_name.rst +6 -0
  367. docs/source/_generated/_generated/ams.opt.var.Var.evaluate.rst +6 -0
  368. docs/source/_generated/_generated/ams.opt.var.Var.get_idx.rst +6 -0
  369. docs/source/_generated/_generated/ams.opt.var.Var.n.rst +6 -0
  370. docs/source/_generated/_generated/ams.opt.var.Var.parse.rst +6 -0
  371. docs/source/_generated/_generated/ams.opt.var.Var.shape.rst +6 -0
  372. docs/source/_generated/_generated/ams.opt.var.Var.size.rst +6 -0
  373. docs/source/_generated/_generated/ams.opt.var.Var.v.rst +6 -0
  374. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addConstrs.rst +6 -0
  375. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addRParam.rst +6 -0
  376. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addService.rst +6 -0
  377. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addVars.rst +6 -0
  378. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.class_name.rst +6 -0
  379. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.dc2ac.rst +6 -0
  380. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.disable.rst +6 -0
  381. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.doc.rst +6 -0
  382. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.enable.rst +6 -0
  383. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.export_csv.rst +6 -0
  384. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.get.rst +6 -0
  385. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.init.rst +6 -0
  386. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.run.rst +6 -0
  387. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.set.rst +6 -0
  388. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.solve.rst +6 -0
  389. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.summary.rst +6 -0
  390. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.unpack.rst +6 -0
  391. docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.update.rst +6 -0
  392. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addConstrs.rst +6 -0
  393. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addRParam.rst +6 -0
  394. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addService.rst +6 -0
  395. docs/source/_generated/_generated/ams.routines.pflow.PFlow.addVars.rst +6 -0
  396. docs/source/_generated/_generated/ams.routines.pflow.PFlow.class_name.rst +6 -0
  397. docs/source/_generated/_generated/ams.routines.pflow.PFlow.dc2ac.rst +6 -0
  398. docs/source/_generated/_generated/ams.routines.pflow.PFlow.disable.rst +6 -0
  399. docs/source/_generated/_generated/ams.routines.pflow.PFlow.doc.rst +6 -0
  400. docs/source/_generated/_generated/ams.routines.pflow.PFlow.enable.rst +6 -0
  401. docs/source/_generated/_generated/ams.routines.pflow.PFlow.export_csv.rst +6 -0
  402. docs/source/_generated/_generated/ams.routines.pflow.PFlow.get.rst +6 -0
  403. docs/source/_generated/_generated/ams.routines.pflow.PFlow.init.rst +6 -0
  404. docs/source/_generated/_generated/ams.routines.pflow.PFlow.run.rst +6 -0
  405. docs/source/_generated/_generated/ams.routines.pflow.PFlow.set.rst +6 -0
  406. docs/source/_generated/_generated/ams.routines.pflow.PFlow.solve.rst +6 -0
  407. docs/source/_generated/_generated/ams.routines.pflow.PFlow.summary.rst +6 -0
  408. docs/source/_generated/_generated/ams.routines.pflow.PFlow.unpack.rst +6 -0
  409. docs/source/_generated/_generated/ams.routines.pflow.PFlow.update.rst +6 -0
  410. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addConstrs.rst +6 -0
  411. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addRParam.rst +6 -0
  412. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addService.rst +6 -0
  413. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addVars.rst +6 -0
  414. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.class_name.rst +6 -0
  415. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.dc2ac.rst +6 -0
  416. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.disable.rst +6 -0
  417. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.doc.rst +6 -0
  418. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.enable.rst +6 -0
  419. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.export_csv.rst +6 -0
  420. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.get.rst +6 -0
  421. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.init.rst +6 -0
  422. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.run.rst +6 -0
  423. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.set.rst +6 -0
  424. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.solve.rst +6 -0
  425. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.summary.rst +6 -0
  426. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.unpack.rst +6 -0
  427. docs/source/_generated/_generated/ams.routines.routine.RoutineBase.update.rst +6 -0
  428. docs/source/_generated/_generated/ams.system.System.add.rst +6 -0
  429. docs/source/_generated/_generated/ams.system.System.as_dict.rst +6 -0
  430. docs/source/_generated/_generated/ams.system.System.calc_pu_coeff.rst +6 -0
  431. docs/source/_generated/_generated/ams.system.System.call_models.rst +6 -0
  432. docs/source/_generated/_generated/ams.system.System.collect_config.rst +6 -0
  433. docs/source/_generated/_generated/ams.system.System.collect_ref.rst +6 -0
  434. docs/source/_generated/_generated/ams.system.System.connectivity.rst +6 -0
  435. docs/source/_generated/_generated/ams.system.System.e_clear.rst +6 -0
  436. docs/source/_generated/_generated/ams.system.System.f_update.rst +6 -0
  437. docs/source/_generated/_generated/ams.system.System.fg_to_dae.rst +6 -0
  438. docs/source/_generated/_generated/ams.system.System.find_devices.rst +6 -0
  439. docs/source/_generated/_generated/ams.system.System.find_models.rst +6 -0
  440. docs/source/_generated/_generated/ams.system.System.from_ipysheet.rst +6 -0
  441. docs/source/_generated/_generated/ams.system.System.g_islands.rst +6 -0
  442. docs/source/_generated/_generated/ams.system.System.g_update.rst +6 -0
  443. docs/source/_generated/_generated/ams.system.System.get_z.rst +6 -0
  444. docs/source/_generated/_generated/ams.system.System.import_groups.rst +6 -0
  445. docs/source/_generated/_generated/ams.system.System.import_models.rst +6 -0
  446. docs/source/_generated/_generated/ams.system.System.import_routines.rst +6 -0
  447. docs/source/_generated/_generated/ams.system.System.import_types.rst +6 -0
  448. docs/source/_generated/_generated/ams.system.System.init.rst +6 -0
  449. docs/source/_generated/_generated/ams.system.System.j_islands.rst +6 -0
  450. docs/source/_generated/_generated/ams.system.System.j_update.rst +6 -0
  451. docs/source/_generated/_generated/ams.system.System.l_update_eq.rst +6 -0
  452. docs/source/_generated/_generated/ams.system.System.l_update_var.rst +6 -0
  453. docs/source/_generated/_generated/ams.system.System.link_ext_param.rst +6 -0
  454. docs/source/_generated/_generated/ams.system.System.precompile.rst +6 -0
  455. docs/source/_generated/_generated/ams.system.System.prepare.rst +6 -0
  456. docs/source/_generated/_generated/ams.system.System.reload.rst +6 -0
  457. docs/source/_generated/_generated/ams.system.System.remove_pycapsule.rst +6 -0
  458. docs/source/_generated/_generated/ams.system.System.report.rst +6 -0
  459. docs/source/_generated/_generated/ams.system.System.reset.rst +6 -0
  460. docs/source/_generated/_generated/ams.system.System.s_update_post.rst +6 -0
  461. docs/source/_generated/_generated/ams.system.System.s_update_var.rst +6 -0
  462. docs/source/_generated/_generated/ams.system.System.save_config.rst +6 -0
  463. docs/source/_generated/_generated/ams.system.System.set_address.rst +6 -0
  464. docs/source/_generated/_generated/ams.system.System.set_config.rst +6 -0
  465. docs/source/_generated/_generated/ams.system.System.set_dae_names.rst +6 -0
  466. docs/source/_generated/_generated/ams.system.System.set_output_subidx.rst +6 -0
  467. docs/source/_generated/_generated/ams.system.System.set_var_arrays.rst +6 -0
  468. docs/source/_generated/_generated/ams.system.System.setup.rst +6 -0
  469. docs/source/_generated/_generated/ams.system.System.store_adder_setter.rst +6 -0
  470. docs/source/_generated/_generated/ams.system.System.store_existing.rst +6 -0
  471. docs/source/_generated/_generated/ams.system.System.store_no_check_init.rst +6 -0
  472. docs/source/_generated/_generated/ams.system.System.store_sparse_pattern.rst +6 -0
  473. docs/source/_generated/_generated/ams.system.System.store_switch_times.rst +6 -0
  474. docs/source/_generated/_generated/ams.system.System.summary.rst +6 -0
  475. docs/source/_generated/_generated/ams.system.System.supported_models.rst +6 -0
  476. docs/source/_generated/_generated/ams.system.System.supported_routines.rst +6 -0
  477. docs/source/_generated/_generated/ams.system.System.switch_action.rst +6 -0
  478. docs/source/_generated/_generated/ams.system.System.to_andes.rst +6 -0
  479. docs/source/_generated/_generated/ams.system.System.to_ipysheet.rst +6 -0
  480. docs/source/_generated/_generated/ams.system.System.undill.rst +6 -0
  481. docs/source/_generated/_generated/ams.system.System.vars_to_dae.rst +6 -0
  482. docs/source/_generated/_generated/ams.system.System.vars_to_models.rst +6 -0
  483. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_last.rst +6 -0
  484. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_middle.rst +6 -0
  485. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_last.rst +6 -0
  486. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_middle.rst +6 -0
  487. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayable.rst +6 -0
  488. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayname.rst +6 -0
  489. docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.make_tree.rst +6 -0
  490. docs/source/_generated/ams.cli.create_parser.rst +6 -0
  491. docs/source/_generated/ams.cli.main.rst +6 -0
  492. docs/source/_generated/ams.cli.preamble.rst +6 -0
  493. docs/source/_generated/ams.cli.rst +32 -0
  494. docs/source/_generated/ams.core.model.Model.rst +56 -0
  495. docs/source/_generated/ams.core.model.rst +30 -0
  496. docs/source/_generated/ams.core.param.RParam.rst +49 -0
  497. docs/source/_generated/ams.core.param.rst +30 -0
  498. docs/source/_generated/ams.core.service.LoadScale.rst +51 -0
  499. docs/source/_generated/ams.core.service.MinDur.rst +53 -0
  500. docs/source/_generated/ams.core.service.NumExpandDim.rst +53 -0
  501. docs/source/_generated/ams.core.service.NumHstack.rst +53 -0
  502. docs/source/_generated/ams.core.service.NumOp.rst +53 -0
  503. docs/source/_generated/ams.core.service.NumOpDual.rst +53 -0
  504. docs/source/_generated/ams.core.service.RBaseService.rst +51 -0
  505. docs/source/_generated/ams.core.service.ROperationService.rst +51 -0
  506. docs/source/_generated/ams.core.service.RampSub.rst +53 -0
  507. docs/source/_generated/ams.core.service.ValueService.rst +51 -0
  508. docs/source/_generated/ams.core.service.VarReduction.rst +53 -0
  509. docs/source/_generated/ams.core.service.VarSelect.rst +53 -0
  510. docs/source/_generated/ams.core.service.ZonalSum.rst +53 -0
  511. docs/source/_generated/ams.core.service.rst +42 -0
  512. docs/source/_generated/ams.interface.Dynamic.rst +41 -0
  513. docs/source/_generated/ams.interface.build_group_table.rst +6 -0
  514. docs/source/_generated/ams.interface.make_link_table.rst +6 -0
  515. docs/source/_generated/ams.interface.parse_addfile.rst +6 -0
  516. docs/source/_generated/ams.interface.replace_dev.rst +6 -0
  517. docs/source/_generated/ams.interface.rst +43 -0
  518. docs/source/_generated/ams.interface.sync_adsys.rst +6 -0
  519. docs/source/_generated/ams.interface.to_andes.rst +6 -0
  520. docs/source/_generated/ams.interface.verify_pf.rst +6 -0
  521. docs/source/_generated/ams.io.guess.rst +6 -0
  522. docs/source/_generated/ams.io.json.rst +30 -0
  523. docs/source/_generated/ams.io.json.write.rst +6 -0
  524. docs/source/_generated/ams.io.matpower.mpc2system.rst +6 -0
  525. docs/source/_generated/ams.io.matpower.read.rst +6 -0
  526. docs/source/_generated/ams.io.matpower.rst +33 -0
  527. docs/source/_generated/ams.io.matpower.system2mpc.rst +6 -0
  528. docs/source/_generated/ams.io.matpower.testlines.rst +6 -0
  529. docs/source/_generated/ams.io.parse.rst +6 -0
  530. docs/source/_generated/ams.io.psse.rst +23 -0
  531. docs/source/_generated/ams.io.pypower.ppc2system.rst +6 -0
  532. docs/source/_generated/ams.io.pypower.py2ppc.rst +6 -0
  533. docs/source/_generated/ams.io.pypower.read.rst +6 -0
  534. docs/source/_generated/ams.io.pypower.rst +34 -0
  535. docs/source/_generated/ams.io.pypower.system2ppc.rst +6 -0
  536. docs/source/_generated/ams.io.pypower.testlines.rst +6 -0
  537. docs/source/_generated/ams.io.rst +45 -0
  538. docs/source/_generated/ams.io.xlsx.rst +30 -0
  539. docs/source/_generated/ams.io.xlsx.write.rst +6 -0
  540. docs/source/_generated/ams.main.config_logger.rst +6 -0
  541. docs/source/_generated/ams.main.demo.rst +6 -0
  542. docs/source/_generated/ams.main.doc.rst +6 -0
  543. docs/source/_generated/ams.main.edit_conf.rst +6 -0
  544. docs/source/_generated/ams.main.find_log_path.rst +6 -0
  545. docs/source/_generated/ams.main.load.rst +6 -0
  546. docs/source/_generated/ams.main.misc.rst +6 -0
  547. docs/source/_generated/ams.main.print_license.rst +6 -0
  548. docs/source/_generated/ams.main.remove_output.rst +6 -0
  549. docs/source/_generated/ams.main.rst +44 -0
  550. docs/source/_generated/ams.main.run.rst +6 -0
  551. docs/source/_generated/ams.main.run_case.rst +6 -0
  552. docs/source/_generated/ams.main.save_conf.rst +6 -0
  553. docs/source/_generated/ams.main.selftest.rst +6 -0
  554. docs/source/_generated/ams.main.set_logger_level.rst +6 -0
  555. docs/source/_generated/ams.main.versioninfo.rst +6 -0
  556. docs/source/_generated/ams.opt.constraint.Constraint.rst +43 -0
  557. docs/source/_generated/ams.opt.constraint.rst +30 -0
  558. docs/source/_generated/ams.opt.exprcalc.ExpressionCalc.rst +46 -0
  559. docs/source/_generated/ams.opt.exprcalc.rst +30 -0
  560. docs/source/_generated/ams.opt.expression.Expression.rst +46 -0
  561. docs/source/_generated/ams.opt.expression.rst +30 -0
  562. docs/source/_generated/ams.opt.objective.Objective.rst +43 -0
  563. docs/source/_generated/ams.opt.objective.rst +30 -0
  564. docs/source/_generated/ams.opt.omodel.OModel.rst +48 -0
  565. docs/source/_generated/ams.opt.omodel.OModelBase.rst +48 -0
  566. docs/source/_generated/ams.opt.omodel.rst +31 -0
  567. docs/source/_generated/ams.opt.optbase.OptzBase.rst +41 -0
  568. docs/source/_generated/ams.opt.optbase.ensure_mats_and_parsed.rst +6 -0
  569. docs/source/_generated/ams.opt.optbase.ensure_symbols.rst +6 -0
  570. docs/source/_generated/ams.opt.optbase.rst +38 -0
  571. docs/source/_generated/ams.opt.param.Param.rst +44 -0
  572. docs/source/_generated/ams.opt.param.rst +30 -0
  573. docs/source/_generated/ams.opt.rst +40 -0
  574. docs/source/_generated/ams.opt.var.Var.rst +45 -0
  575. docs/source/_generated/ams.opt.var.rst +30 -0
  576. docs/source/_generated/ams.routines.dcopf.DCOPF.rst +83 -0
  577. docs/source/_generated/ams.routines.dcopf.rst +30 -0
  578. docs/source/_generated/ams.routines.pflow.PFlow.rst +83 -0
  579. docs/source/_generated/ams.routines.pflow.rst +30 -0
  580. docs/source/_generated/ams.routines.routine.RoutineBase.rst +83 -0
  581. docs/source/_generated/ams.routines.routine.collect_data.rst +6 -0
  582. docs/source/_generated/ams.routines.routine.initialize_data_dict.rst +6 -0
  583. docs/source/_generated/ams.routines.routine.rst +38 -0
  584. docs/source/_generated/ams.system.System.rst +189 -0
  585. docs/source/_generated/ams.system.disable_method.rst +6 -0
  586. docs/source/_generated/ams.system.disable_methods.rst +6 -0
  587. docs/source/_generated/ams.system.example.rst +6 -0
  588. docs/source/_generated/ams.system.rst +39 -0
  589. docs/source/_generated/ams.utils.paths.DisplayablePath.rst +42 -0
  590. docs/source/_generated/ams.utils.paths.ams_root.rst +6 -0
  591. docs/source/_generated/ams.utils.paths.cases_root.rst +6 -0
  592. docs/source/_generated/ams.utils.paths.confirm_overwrite.rst +6 -0
  593. docs/source/_generated/ams.utils.paths.get_case.rst +6 -0
  594. docs/source/_generated/ams.utils.paths.get_config_path.rst +6 -0
  595. docs/source/_generated/ams.utils.paths.get_dot_andes_path.rst +6 -0
  596. docs/source/_generated/ams.utils.paths.get_log_dir.rst +6 -0
  597. docs/source/_generated/ams.utils.paths.get_pkl_path.rst +6 -0
  598. docs/source/_generated/ams.utils.paths.get_pycode_path.rst +6 -0
  599. docs/source/_generated/ams.utils.paths.list_cases.rst +6 -0
  600. docs/source/_generated/ams.utils.paths.rst +47 -0
  601. docs/source/_generated/ams.utils.paths.tests_root.rst +6 -0
  602. docs/source/_templates/autosummary/base.rst +5 -0
  603. docs/source/_templates/autosummary/class.rst +35 -0
  604. docs/source/_templates/autosummary/module.rst +65 -0
  605. docs/source/_templates/autosummary/module_toctree.rst +66 -0
  606. docs/source/api.rst +102 -0
  607. docs/source/conf.py +203 -0
  608. docs/source/examples/index.rst +34 -0
  609. docs/source/genmodelref.py +61 -0
  610. docs/source/genroutineref.py +47 -0
  611. docs/source/getting_started/copyright.rst +20 -0
  612. docs/source/getting_started/formats/index.rst +20 -0
  613. docs/source/getting_started/formats/matpower.rst +183 -0
  614. docs/source/getting_started/formats/psse.rst +46 -0
  615. docs/source/getting_started/formats/pypower.rst +223 -0
  616. docs/source/getting_started/formats/xlsx.png +0 -0
  617. docs/source/getting_started/formats/xlsx.rst +23 -0
  618. docs/source/getting_started/index.rst +76 -0
  619. docs/source/getting_started/install.rst +234 -0
  620. docs/source/getting_started/overview.rst +26 -0
  621. docs/source/getting_started/testcase.rst +45 -0
  622. docs/source/getting_started/verification.rst +13 -0
  623. docs/source/groupdoc/ACLine.rst +92 -0
  624. docs/source/groupdoc/ACShort.rst +51 -0
  625. docs/source/groupdoc/ACTopology.rst +66 -0
  626. docs/source/groupdoc/Collection.rst +84 -0
  627. docs/source/groupdoc/Cost.rst +135 -0
  628. docs/source/groupdoc/DG.rst +204 -0
  629. docs/source/groupdoc/Horizon.rst +97 -0
  630. docs/source/groupdoc/Information.rst +36 -0
  631. docs/source/groupdoc/RenGen.rst +63 -0
  632. docs/source/groupdoc/Reserve.rst +135 -0
  633. docs/source/groupdoc/StaticGen.rst +229 -0
  634. docs/source/groupdoc/StaticLoad.rst +53 -0
  635. docs/source/groupdoc/StaticShunt.rst +45 -0
  636. docs/source/groupdoc/Undefined.rst +63 -0
  637. docs/source/groupdoc/VSG.rst +125 -0
  638. docs/source/images/dcopf_time.png +0 -0
  639. docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
  640. docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
  641. docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
  642. docs/source/images/sponsors/doe.png +0 -0
  643. docs/source/index.rst +108 -0
  644. docs/source/modeling/_generated/_generated/ams.opt.Constraint.class_name.rst +6 -0
  645. docs/source/modeling/_generated/_generated/ams.opt.Constraint.e.rst +6 -0
  646. docs/source/modeling/_generated/_generated/ams.opt.Constraint.evaluate.rst +6 -0
  647. docs/source/modeling/_generated/_generated/ams.opt.Constraint.n.rst +6 -0
  648. docs/source/modeling/_generated/_generated/ams.opt.Constraint.parse.rst +6 -0
  649. docs/source/modeling/_generated/_generated/ams.opt.Constraint.shape.rst +6 -0
  650. docs/source/modeling/_generated/_generated/ams.opt.Constraint.size.rst +6 -0
  651. docs/source/modeling/_generated/_generated/ams.opt.Constraint.v.rst +6 -0
  652. docs/source/modeling/_generated/_generated/ams.opt.OModel.class_name.rst +6 -0
  653. docs/source/modeling/_generated/_generated/ams.opt.OModel.evaluate.rst +6 -0
  654. docs/source/modeling/_generated/_generated/ams.opt.OModel.finalize.rst +6 -0
  655. docs/source/modeling/_generated/_generated/ams.opt.OModel.init.rst +6 -0
  656. docs/source/modeling/_generated/_generated/ams.opt.OModel.initialized.rst +6 -0
  657. docs/source/modeling/_generated/_generated/ams.opt.OModel.parse.rst +6 -0
  658. docs/source/modeling/_generated/_generated/ams.opt.OModel.update.rst +6 -0
  659. docs/source/modeling/_generated/_generated/ams.opt.Objective.class_name.rst +6 -0
  660. docs/source/modeling/_generated/_generated/ams.opt.Objective.e.rst +6 -0
  661. docs/source/modeling/_generated/_generated/ams.opt.Objective.evaluate.rst +6 -0
  662. docs/source/modeling/_generated/_generated/ams.opt.Objective.n.rst +6 -0
  663. docs/source/modeling/_generated/_generated/ams.opt.Objective.parse.rst +6 -0
  664. docs/source/modeling/_generated/_generated/ams.opt.Objective.shape.rst +6 -0
  665. docs/source/modeling/_generated/_generated/ams.opt.Objective.size.rst +6 -0
  666. docs/source/modeling/_generated/_generated/ams.opt.Objective.v.rst +6 -0
  667. docs/source/modeling/_generated/_generated/ams.opt.Var.class_name.rst +6 -0
  668. docs/source/modeling/_generated/_generated/ams.opt.Var.evaluate.rst +6 -0
  669. docs/source/modeling/_generated/_generated/ams.opt.Var.get_idx.rst +6 -0
  670. docs/source/modeling/_generated/_generated/ams.opt.Var.n.rst +6 -0
  671. docs/source/modeling/_generated/_generated/ams.opt.Var.parse.rst +6 -0
  672. docs/source/modeling/_generated/_generated/ams.opt.Var.shape.rst +6 -0
  673. docs/source/modeling/_generated/_generated/ams.opt.Var.size.rst +6 -0
  674. docs/source/modeling/_generated/_generated/ams.opt.Var.v.rst +6 -0
  675. docs/source/modeling/_generated/ams.opt.Constraint.rst +43 -0
  676. docs/source/modeling/_generated/ams.opt.OModel.rst +48 -0
  677. docs/source/modeling/_generated/ams.opt.Objective.rst +43 -0
  678. docs/source/modeling/_generated/ams.opt.Var.rst +45 -0
  679. docs/source/modeling/example.rst +159 -0
  680. docs/source/modeling/index.rst +17 -0
  681. docs/source/modeling/model.rst +210 -0
  682. docs/source/modeling/routine.rst +122 -0
  683. docs/source/modeling/system.rst +51 -0
  684. docs/source/modelref.rst +66 -0
  685. docs/source/release-notes.rst +385 -0
  686. docs/source/routineref.rst +38 -0
  687. docs/source/typedoc/ACED.rst +91 -0
  688. docs/source/typedoc/DCED.rst +1869 -0
  689. docs/source/typedoc/DCUC.rst +899 -0
  690. docs/source/typedoc/DED.rst +390 -0
  691. docs/source/typedoc/PF.rst +376 -0
  692. docs/source/typedoc/UndefinedType.rst +8 -0
  693. icebar/ips/ips.py +668 -0
  694. ltbams-1.0.0.dist-info/METADATA +231 -0
  695. ltbams-1.0.0.dist-info/RECORD +725 -0
  696. {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/WHEEL +1 -1
  697. ltbams-1.0.0.dist-info/top_level.txt +5 -0
  698. tests/__init__.py +0 -0
  699. tests/test_1st_system.py +33 -0
  700. tests/test_addressing.py +40 -0
  701. tests/test_andes_mats.py +61 -0
  702. tests/test_case.py +266 -0
  703. tests/test_cli.py +34 -0
  704. tests/test_export_csv.py +89 -0
  705. tests/test_group.py +83 -0
  706. tests/test_interface.py +216 -0
  707. tests/test_io.py +32 -0
  708. tests/test_jumper.py +27 -0
  709. tests/test_known_good.py +267 -0
  710. tests/test_matp.py +437 -0
  711. tests/test_model.py +54 -0
  712. tests/test_omodel.py +119 -0
  713. tests/test_paths.py +22 -0
  714. tests/test_report.py +245 -0
  715. tests/test_repr.py +21 -0
  716. tests/test_routine.py +178 -0
  717. tests/test_rtn_dcopf.py +101 -0
  718. tests/test_rtn_dcpf.py +77 -0
  719. tests/test_rtn_ed.py +275 -0
  720. tests/test_rtn_pflow.py +219 -0
  721. tests/test_rtn_rted.py +273 -0
  722. tests/test_rtn_uc.py +248 -0
  723. tests/test_service.py +73 -0
  724. ltbams-0.9.9.dist-info/LICENSE +0 -692
  725. ltbams-0.9.9.dist-info/METADATA +0 -859
  726. ltbams-0.9.9.dist-info/RECORD +0 -14
  727. ltbams-0.9.9.dist-info/top_level.txt +0 -1
  728. {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/entry_points.txt +0 -0
ams/pypower/io.py ADDED
@@ -0,0 +1,604 @@
1
+ """
2
+ Save and load PYPOWER cases.
3
+ """
4
+
5
+ import logging
6
+ from copy import deepcopy
7
+
8
+ from os.path import basename, splitext, exists
9
+
10
+ from numpy import array, zeros, ones, c_
11
+
12
+ from scipy.io import loadmat, savemat
13
+
14
+
15
+ from sys import stderr
16
+
17
+ from os.path import basename
18
+
19
+ from numpy import array, c_, r_, any
20
+
21
+ from ams.pypower.routines.opffcns import run_userfcn
22
+
23
+ from ams.pypower.idx import IDX
24
+
25
+
26
+ logger = logging.getLogger(__name__)
27
+
28
+
29
+ def loadcase(casefile,
30
+ return_as_obj=True, expect_gencost=True, expect_areas=True):
31
+ """Returns the individual data matrices or an dict containing them
32
+ as values.
33
+
34
+ Here C{casefile} is either a dict containing the keys C{baseMVA}, C{bus},
35
+ C{gen}, C{branch}, C{areas}, C{gencost}, or a string containing the name
36
+ of the file. If C{casefile} contains the extension '.mat' or '.py', then
37
+ the explicit file is searched. If C{casefile} containts no extension, then
38
+ L{loadcase} looks for a '.mat' file first, then for a '.py' file. If the
39
+ file does not exist or doesn't define all matrices, the function returns
40
+ an exit code as follows:
41
+
42
+ 0. all variables successfully defined
43
+ 1. input argument is not a string or dict
44
+ 2. specified extension-less file name does not exist
45
+ 3. specified .mat file does not exist
46
+ 4. specified .py file does not exist
47
+ 5. specified file fails to define all matrices or contains syntax
48
+ error
49
+
50
+ If the input data is not a dict containing a 'version' key, it is
51
+ assumed to be a PYPOWER case file in version 1 format, and will be
52
+ converted to version 2 format.
53
+
54
+ @author: Carlos E. Murillo-Sanchez (PSERC Cornell & Universidad
55
+ Autonoma de Manizales)
56
+ @author: Ray Zimmerman (PSERC Cornell)
57
+ """
58
+ if return_as_obj == True:
59
+ expect_gencost = False
60
+ expect_areas = False
61
+
62
+ info = 0
63
+
64
+ # read data into case object
65
+ if isinstance(casefile, str):
66
+ lasterr = ''
67
+ # check for explicit extension
68
+ if casefile.endswith(('.py', '.mat')):
69
+ rootname, extension = splitext(casefile)
70
+ fname = basename(rootname)
71
+ else:
72
+ # set extension if not specified explicitly
73
+ rootname = casefile
74
+ if exists(casefile + '.mat'):
75
+ extension = '.mat'
76
+ elif exists(casefile + '.py'):
77
+ extension = '.py'
78
+ else:
79
+ info = 2
80
+ fname = basename(rootname)
81
+
82
+ # attempt to read file
83
+ if info == 0:
84
+ if extension == '.mat': # from MAT file
85
+ try:
86
+ d = loadmat(rootname + extension, struct_as_record=True)
87
+ if 'ppc' in d or 'mpc' in d: # it's a MAT/PYPOWER dict
88
+ if 'ppc' in d:
89
+ struct = d['ppc']
90
+ else:
91
+ struct = d['mpc']
92
+ val = struct[0, 0]
93
+
94
+ s = {}
95
+ for a in val.dtype.names:
96
+ s[a] = val[a]
97
+ else: # individual data matrices
98
+ d['version'] = '1'
99
+
100
+ s = {}
101
+ for k, v in d.items():
102
+ s[k] = v
103
+
104
+ s['baseMVA'] = s['baseMVA'][0] # convert array to float
105
+
106
+ except IOError as e:
107
+ info = 3
108
+ lasterr = str(e)
109
+ elif extension == '.py': # from Python file
110
+ try:
111
+ if PY2:
112
+ execfile(rootname + extension)
113
+ else:
114
+ exec(compile(open(rootname + extension).read(),
115
+ rootname + extension, 'exec'))
116
+
117
+ try: # assume it returns an object
118
+ s = eval(fname)()
119
+ except ValueError as e:
120
+ info = 4
121
+ lasterr = str(e)
122
+ # if not try individual data matrices
123
+ if info == 0 and not isinstance(s, dict):
124
+ s = {}
125
+ s['version'] = '1'
126
+ if expect_gencost:
127
+ try:
128
+ s['baseMVA'], s['bus'], s['gen'], s['branch'], \
129
+ s['areas'], s['gencost'] = eval(fname)()
130
+ except IOError as e:
131
+ info = 4
132
+ lasterr = str(e)
133
+ else:
134
+ if return_as_obj:
135
+ try:
136
+ s['baseMVA'], s['bus'], s['gen'], \
137
+ s['branch'], s['areas'], \
138
+ s['gencost'] = eval(fname)()
139
+ except ValueError as e:
140
+ try:
141
+ s['baseMVA'], s['bus'], s['gen'], \
142
+ s['branch'] = eval(fname)()
143
+ except ValueError as e:
144
+ info = 4
145
+ lasterr = str(e)
146
+ else:
147
+ try:
148
+ s['baseMVA'], s['bus'], s['gen'], \
149
+ s['branch'] = eval(fname)()
150
+ except ValueError as e:
151
+ info = 4
152
+ lasterr = str(e)
153
+
154
+ except IOError as e:
155
+ info = 4
156
+ lasterr = str(e)
157
+
158
+ if info == 4 and exists(rootname + '.py'):
159
+ info = 5
160
+ err5 = lasterr
161
+
162
+ elif isinstance(casefile, dict):
163
+ s = deepcopy(casefile)
164
+ else:
165
+ info = 1
166
+
167
+ # check contents of dict
168
+ if info == 0:
169
+ # check for required keys
170
+ if (s['baseMVA'] is None or s['bus'] is None
171
+ or s['gen'] is None or s['branch'] is None) or \
172
+ (expect_gencost and s['gencost'] is None) or \
173
+ (expect_areas and s['areas'] is None):
174
+ info = 5 # missing some expected fields
175
+ err5 = 'missing data'
176
+ else:
177
+ # remove empty areas if not needed
178
+ if hasattr(s, 'areas') and (len(s['areas']) == 0) and (not expect_areas):
179
+ del s['areas']
180
+
181
+ # all fields present, copy to ppc
182
+ ppc = deepcopy(s)
183
+ if not hasattr(ppc, 'version'): # hmm, struct with no 'version' field
184
+ if ppc['gen'].shape[1] < 21: # version 2 has 21 or 25 cols
185
+ ppc['version'] = '1'
186
+ else:
187
+ ppc['version'] = '2'
188
+
189
+ if (ppc['version'] == '1'):
190
+ # convert from version 1 to version 2
191
+ ppc['gen'], ppc['branch'] = ppc_1to2(ppc['gen'], ppc['branch'])
192
+ ppc['version'] = '2'
193
+
194
+ if info == 0: # no errors
195
+ if return_as_obj:
196
+ return ppc
197
+ else:
198
+ result = [ppc['baseMVA'], ppc['bus'], ppc['gen'], ppc['branch']]
199
+ if expect_gencost:
200
+ if expect_areas:
201
+ result.extend([ppc['areas'], ppc['gencost']])
202
+ else:
203
+ result.extend([ppc['gencost']])
204
+ return result
205
+ else: # error encountered
206
+ if info == 1:
207
+ logger.debug('Input arg should be a case or a string '
208
+ 'containing a filename\n')
209
+ elif info == 2:
210
+ logger.debug('Specified case not a valid file\n')
211
+ elif info == 3:
212
+ logger.debug('Specified MAT file does not exist\n')
213
+ elif info == 4:
214
+ logger.debug('Specified Python file does not exist\n')
215
+ elif info == 5:
216
+ logger.debug('Syntax error or undefined data '
217
+ 'matrix(ices) in the file\n')
218
+ else:
219
+ logger.debug('Unknown error encountered loading case.\n')
220
+
221
+ return info
222
+
223
+
224
+ def ppc_1to2(gen, branch):
225
+ # ----- gen -----
226
+ # use the version 1 values for column names
227
+ if gen.shape[1] >= IDX.gen.APF:
228
+ logger.debug('ppc_1to2: gen matrix appears to already be in '
229
+ 'version 2 format\n')
230
+ return gen, branch
231
+
232
+ shift = IDX.gen.MU_PMAX - IDX.gen.PMIN - 1
233
+ tmp = array([IDX.gen.MU_PMAX, IDX.gen.MU_PMIN, IDX.gen.MU_QMAX, IDX.gen.MU_QMIN]) - shift
234
+ mu_Pmax, mu_Pmin, mu_Qmax, mu_Qmin = tmp
235
+
236
+ # add extra columns to gen
237
+ tmp = zeros((gen.shape[0], shift))
238
+ if gen.shape[1] >= mu_Qmin:
239
+ gen = c_[gen[:, 0:IDX.gen.PMIN + 1], tmp, gen[:, mu_Pmax:mu_Qmin]]
240
+ else:
241
+ gen = c_[gen[:, 0:IDX.gen.PMIN + 1], tmp]
242
+
243
+ # ----- branch -----
244
+ # use the version 1 values for column names
245
+ shift = IDX.branch.PF - IDX.branch.BR_STATUS - 1
246
+ tmp = array([IDX.branch.PF, IDX.branch.QF, IDX.branch.PT,
247
+ IDX.branch.QT, IDX.branch.MU_SF, IDX.branch.MU_ST]) - shift
248
+ Pf, Qf, Pt, Qt, mu_Sf, mu_St = tmp
249
+
250
+ # add extra columns to branch
251
+ tmp = ones((branch.shape[0], 1)) * array([-360, 360])
252
+ tmp2 = zeros((branch.shape[0], 2))
253
+ if branch.shape[1] >= mu_St - 1:
254
+ branch = c_[branch[:, 0:IDX.branch.BR_STATUS + 1], tmp, branch[:, IDX.branch.PF - 1:IDX.branch.MU_ST + 1], tmp2]
255
+ elif branch.shape[1] >= IDX.branch.QT - 1:
256
+ branch = c_[branch[:, 0:IDX.branch.BR_STATUS + 1], tmp, branch[:, IDX.branch.PF - 1:IDX.branch.QT + 1]]
257
+ else:
258
+ branch = c_[branch[:, 0:IDX.branch.BR_STATUS + 1], tmp]
259
+
260
+ return gen, branch
261
+
262
+
263
+ def savecase(fname, ppc, comment=None, version='2'):
264
+ """Saves a PYPOWER case file, given a filename and the data.
265
+
266
+ Writes a PYPOWER case file, given a filename and data dict. The C{fname}
267
+ parameter is the name of the file to be created or overwritten. Returns
268
+ the filename, with extension added if necessary. The optional C{comment}
269
+ argument is either string (single line comment) or a list of strings which
270
+ are inserted as comments. When using a PYPOWER case dict, if the
271
+ optional C{version} argument is '1' it will modify the data matrices to
272
+ version 1 format before saving.
273
+
274
+ @author: Carlos E. Murillo-Sanchez (PSERC Cornell & Universidad
275
+ Autonoma de Manizales)
276
+ @author: Ray Zimmerman (PSERC Cornell)
277
+ """
278
+ ppc_ver = ppc["version"] = version
279
+ baseMVA, bus, gen, branch = \
280
+ ppc["baseMVA"], ppc["bus"], ppc["gen"], ppc["branch"]
281
+ areas = ppc["areas"] if "areas" in ppc else None
282
+ gencost = ppc["gencost"] if "gencost" in ppc else None
283
+
284
+ # modifications for version 1 format
285
+ if ppc_ver == "1":
286
+ raise NotImplementedError
287
+
288
+ # verify valid filename
289
+ l = len(fname)
290
+ rootname = ""
291
+ if l > 2:
292
+ if fname[-3:] == ".py":
293
+ rootname = fname[:-3]
294
+ extension = ".py"
295
+ elif l > 4:
296
+ if fname[-4:] == ".mat":
297
+ rootname = fname[:-4]
298
+ extension = ".mat"
299
+
300
+ if not rootname:
301
+ rootname = fname
302
+ extension = ".py"
303
+ fname = rootname + extension
304
+
305
+ indent = ' ' # four spaces
306
+ indent2 = indent + indent
307
+
308
+ # open and write the file
309
+ if extension == ".mat": # MAT-file
310
+ ppc_mat = {}
311
+ ppc_mat['version'] = ppc_ver
312
+ ppc_mat['baseMVA'] = baseMVA
313
+ ppc_keys = ['bus', 'gen', 'branch']
314
+ # Assign non-scalar values as NumPy arrays
315
+ for key in ppc_keys:
316
+ ppc_mat[key] = array(ppc[key])
317
+ if 'areas' in ppc:
318
+ ppc_mat['areas'] = array(ppc['areas'])
319
+ if 'gencost' in ppc:
320
+ ppc_mat['gencost'] = array(ppc['gencost'])
321
+ if "A" in ppc and len(ppc["A"]) > 0:
322
+ ppc_mat["A"] = array(ppc["A"])
323
+ if "l" in ppc and len(ppc["l"]) > 0:
324
+ ppc_mat["l"] = array(ppc["l"])
325
+ if "u" in ppc and len(ppc["u"]) > 0:
326
+ ppc_mat["u"] = array(ppc["u"])
327
+ if "N" in ppc and len(ppc["N"]) > 0:
328
+ ppc_mat["N"] = array(ppc["N"])
329
+ if "H" in ppc and len(ppc["H"]) > 0:
330
+ ppc_mat["H"] = array(ppc["H"])
331
+ if "fparm" in ppc and len(ppc["fparm"]) > 0:
332
+ ppc_mat["fparm"] = array(ppc["fparm"])
333
+ ppc_mat["Cw"] = array(ppc["Cw"])
334
+ if 'z0' in ppc or 'zl' in ppc or 'zu' in ppc:
335
+ if 'z0' in ppc and len(ppc['z0']) > 0:
336
+ ppc_mat['z0'] = array(ppc['z0'])
337
+ if 'zl' in ppc and len(ppc['zl']) > 0:
338
+ ppc_mat['zl'] = array(ppc['zl'])
339
+ if 'zu' in ppc and len(ppc['zu']) > 0:
340
+ ppc_mat['zu'] = array(ppc['zu'])
341
+ if 'userfcn' in ppc and len(ppc['userfcn']) > 0:
342
+ ppc_mat['userfcn'] = array(ppc['userfcn'])
343
+ elif 'userfcn' in ppc:
344
+ ppc_mat['userfcn'] = ppc['userfcn']
345
+ for key in ['x', 'f']:
346
+ if key in ppc:
347
+ ppc_mat[key] = ppc[key]
348
+ for key in ['lin', 'order', 'nln', 'var', 'raw', 'mu']:
349
+ if key in ppc:
350
+ ppc_mat[key] = array(ppc[key])
351
+
352
+ savemat(fname, ppc_mat)
353
+ else: # Python file
354
+ try:
355
+ fd = open(fname, "wb")
356
+ except Exception as detail:
357
+ logger.debug("savecase: %s.\n" % detail)
358
+ return fname
359
+
360
+ # function header, etc.
361
+ if ppc_ver == "1":
362
+ raise NotImplementedError
363
+ # if (areas != None) and (gencost != None) and (len(gencost) > 0):
364
+ # fd.write('function [baseMVA, bus, gen, branch, areas, gencost] = %s\n' % rootname)
365
+ # else:
366
+ # fd.write('function [baseMVA, bus, gen, branch] = %s\n' % rootname)
367
+ # prefix = ''
368
+ else:
369
+ fd.write('def %s():\n' % basename(rootname))
370
+ prefix = 'ppc'
371
+ if comment:
372
+ if isinstance(comment, str):
373
+ fd.write('#%s\n' % comment)
374
+ elif isinstance(comment, list):
375
+ for c in comment:
376
+ fd.write('#%s\n' % c)
377
+ fd.write('\n%s## PYPOWER Case Format : Version %s\n' % (indent, ppc_ver))
378
+ if ppc_ver != "1":
379
+ fd.write("%sppc = {'version': '%s'}\n" % (indent, ppc_ver))
380
+ fd.write('\n%s##----- Power Flow Data -----##\n' % indent)
381
+ fd.write('%s## system MVA base\n' % indent)
382
+ fd.write("%s%s['baseMVA'] = %.9g\n" % (indent, prefix, baseMVA))
383
+
384
+ # bus data
385
+ ncols = bus.shape[1]
386
+ fd.write('\n%s## bus data\n' % indent)
387
+ fd.write('%s# bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin' % indent)
388
+ if ncols >= IDX.bus.MU_VMIN + 1: # opf SOLVED, save with lambda's & mu's
389
+ fd.write('lam_P lam_Q mu_Vmax mu_Vmin')
390
+ fd.write("\n%s%s['bus'] = array([\n" % (indent, prefix))
391
+ if ncols < IDX.bus.MU_VMIN + 1: # opf NOT SOLVED, save without lambda's & mu's
392
+ for i in range(bus.shape[0]):
393
+ fd.write('%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.9g, %d, %.9g, %.9g],\n' %
394
+ ((indent2,) + tuple(bus[i, :IDX.bus.VMIN + 1])))
395
+ else: # opf SOLVED, save with lambda's & mu's
396
+ for i in range(bus.shape[0]):
397
+ fd.write('%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.4f, %.4f, %.4f, %.4f],\n' % (
398
+ (indent2,) + tuple(bus[i, :IDX.bus.MU_VMIN + 1])))
399
+ fd.write('%s])\n' % indent)
400
+
401
+ # generator data
402
+ ncols = gen.shape[1]
403
+ fd.write('\n%s## generator data\n' % indent)
404
+ fd.write('%s# bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin' % indent)
405
+ if ppc_ver != "1":
406
+ fd.write(' Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf')
407
+ if ncols >= IDX.gen.MU_QMIN + 1: # opf SOLVED, save with mu's
408
+ fd.write(' mu_Pmax mu_Pmin mu_Qmax mu_Qmin')
409
+ fd.write("\n%s%s['gen'] = array([\n" % (indent, prefix))
410
+ if ncols < IDX.gen.MU_QMIN + 1: # opf NOT SOLVED, save without mu's
411
+ if ppc_ver == "1":
412
+ for i in range(gen.shape[0]):
413
+ fd.write('%s[%d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g],\n' %
414
+ ((indent2,) + tuple(gen[i, :IDX.gen.PMIN + 1])))
415
+ else:
416
+ for i in range(gen.shape[0]):
417
+ fd.write('%s[%d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g],\n' % (
418
+ (indent2,) + tuple(gen[i, :IDX.gen.APF + 1])))
419
+ else:
420
+ if ppc_ver == "1":
421
+ for i in range(gen.shape[0]):
422
+ fd.write(
423
+ '%s[%d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.4f, %.4f, %.4f, %.4f],\n' %
424
+ ((indent2,) + tuple(gen[i, : IDX.gen.MU_QMIN + 1])))
425
+ else:
426
+ for i in range(gen.shape[0]):
427
+ fd.write('%s[%d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.4f, %.4f, %.4f, %.4f],\n' % (
428
+ (indent2,) + tuple(gen[i, :IDX.gen.MU_QMIN + 1])))
429
+ fd.write('%s])\n' % indent)
430
+
431
+ # branch data
432
+ ncols = branch.shape[1]
433
+ fd.write('\n%s## branch data\n' % indent)
434
+ fd.write('%s# fbus tbus r x b rateA rateB rateC ratio angle status' % indent)
435
+ if ppc_ver != "1":
436
+ fd.write(' angmin angmax')
437
+ if ncols >= IDX.branch.QT + 1: # power flow SOLVED, save with line flows
438
+ fd.write(' Pf Qf Pt Qt')
439
+ if ncols >= IDX.branch.MU_ST + 1: # opf SOLVED, save with mu's
440
+ fd.write(' mu_Sf mu_St')
441
+ if ppc_ver != "1":
442
+ fd.write(' mu_angmin mu_angmax')
443
+ fd.write('\n%s%s[\'branch\'] = array([\n' % (indent, prefix))
444
+ if ncols < IDX.branch.QT + 1: # power flow NOT SOLVED, save without line flows or mu's
445
+ if ppc_ver == "1":
446
+ for i in range(branch.shape[0]):
447
+ fd.write('%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d],\n' %
448
+ ((indent2,) + tuple(branch[i, :IDX.branch.BR_STATUS + 1])))
449
+ else:
450
+ for i in range(branch.shape[0]):
451
+ fd.write(
452
+ '%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g],\n' %
453
+ ((indent2,) + tuple(branch[i, : IDX.branch.ANGMAX + 1])))
454
+ elif ncols < IDX.branch.MU_ST + 1: # power flow SOLVED, save with line flows but without mu's
455
+ if ppc_ver == "1":
456
+ for i in range(branch.shape[0]):
457
+ fd.write(
458
+ '%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.4f, %.4f, %.4f, %.4f],\n' %
459
+ ((indent2,) + tuple(branch[i, : IDX.branch.QT + 1])))
460
+ else:
461
+ for i in range(branch.shape[0]):
462
+ fd.write('%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.4f, %.4f, %.4f, %.4f],\n' % (
463
+ (indent2,) + tuple(branch[i, :IDX.branch.QT + 1])))
464
+ else: # opf SOLVED, save with lineflows & mu's
465
+ if ppc_ver == "1":
466
+ for i in range(branch.shape[0]):
467
+ fd.write('%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f],\n' % (
468
+ (indent2,) + tuple(branch[i, :IDX.branch.MU_ST + 1])))
469
+ else:
470
+ for i in range(branch.shape[0]):
471
+ fd.write('%s[%d, %d, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %.9g, %d, %.9g, %.9g, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f, %.4f],\n' % (
472
+ (indent2,) + tuple(branch[i, :IDX.branch.MU_ANGMAX + 1])))
473
+ fd.write('%s])\n' % indent)
474
+
475
+ # OPF data
476
+ if (areas is not None) and (len(areas) > 0) or (gencost is not None) and (len(gencost) > 0):
477
+ fd.write('\n%s##----- OPF Data -----##' % indent)
478
+ if (areas is not None) and (len(areas) > 0):
479
+ # area data
480
+ fd.write('\n%s## area data\n' % indent)
481
+ fd.write('%s# area refbus\n' % indent)
482
+ fd.write("%s%s['areas'] = array([\n" % (indent, prefix))
483
+ if len(areas) > 0:
484
+ for i in range(areas.shape[0]):
485
+ fd.write('%s[%d, %d],\n' % ((indent2,) + tuple(areas[i, :IDX.area.PRICE_REF_BUS + 1])))
486
+ fd.write('%s])\n' % indent)
487
+ if gencost is not None and len(gencost) > 0:
488
+ # generator cost data
489
+ fd.write('\n%s## generator cost data\n' % indent)
490
+ fd.write('%s# 1 startup shutdown n x1 y1 ... xn yn\n' % indent)
491
+ fd.write('%s# 2 startup shutdown n c(n-1) ... c0\n' % indent)
492
+ fd.write('%s%s[\'gencost\'] = array([\n' % (indent, prefix))
493
+ if len(gencost > 0):
494
+ if any(gencost[:, IDX.cost.MODEL] == IDX.cost.PW_LINEAR):
495
+ n1 = 2 * max(gencost[gencost[:, IDX.cost.MODEL] == IDX.cost.PW_LINEAR, IDX.cost.NCOST])
496
+ else:
497
+ n1 = 0
498
+ if any(gencost[:, IDX.cost.MODEL] == IDX.cost.POLYNOMIAL):
499
+ n2 = max(gencost[gencost[:, IDX.cost.MODEL] == IDX.cost.POLYNOMIAL, IDX.cost.NCOST])
500
+ else:
501
+ n2 = 0
502
+ n = int(max([n1, n2]))
503
+ if gencost.shape[1] < n + 4:
504
+ logger.debug('savecase: gencost data claims it has more columns than it does\n')
505
+ template = '%s[%d, %.9g, %.9g, %d'
506
+ for i in range(n):
507
+ template = template + ', %.9g'
508
+ template = template + '],\n'
509
+ for i in range(gencost.shape[0]):
510
+ fd.write(template % ((indent2,) + tuple(gencost[i])))
511
+ fd.write('%s])\n' % indent)
512
+
513
+ # generalized OPF user data
514
+ if ("A" in ppc) and (len(ppc["A"]) > 0) or ("N" in ppc) and (len(ppc["N"]) > 0):
515
+ fd.write('\n%s##----- Generalized OPF User Data -----##' % indent)
516
+
517
+ # user constraints
518
+ if ("A" in ppc) and (len(ppc["A"]) > 0):
519
+ # A
520
+ fd.write('\n%s## user constraints\n' % indent)
521
+ print_sparse(fd, prefix + "['A']", ppc["A"])
522
+ if ("l" in ppc) and (len(ppc["l"]) > 0) and ("u" in ppc) and (len(ppc["u"]) > 0):
523
+ fd.write('%slu = array([\n' % indent)
524
+ for i in range(len(ppc["l"])):
525
+ fd.write('%s[%.9g, %.9g],\n' % (indent2, ppc["l"][i], ppc["u"][i]))
526
+ fd.write('%s])\n' % indent)
527
+ fd.write("%s%s['l'] = lu[:, 0]\n" % (indent, prefix))
528
+ fd.write("%s%s['u'] = lu[:, 1]\n\n" % (indent, prefix))
529
+ elif ("l" in ppc) and (len(ppc["l"]) > 0):
530
+ fd.write("%s%s['l'] = array([\n" % (indent, prefix))
531
+ for i in range(len(l)):
532
+ fd.write('%s[%.9g],\n' % (indent2, ppc["l"][i]))
533
+ fd.write('%s])\n\n' % indent)
534
+ elif ("u" in ppc) and (len(ppc["u"]) > 0):
535
+ fd.write("%s%s['u'] = array([\n" % (indent, prefix))
536
+ for i in range(len(l)):
537
+ fd.write('%s[%.9g],\n' % (indent2, ppc["u"][i]))
538
+ fd.write('%s])\n\n' % indent)
539
+
540
+ # user costs
541
+ if ("N" in ppc) and (len(ppc["N"]) > 0):
542
+ fd.write('\n%s## user costs\n' % indent)
543
+ print_sparse(fd, prefix + "['N']", ppc["N"])
544
+ if ("H" in ppc) and (len(ppc["H"]) > 0):
545
+ print_sparse(fd, prefix + "['H']", ppc["H"])
546
+ if ("fparm" in ppc) and (len(ppc["fparm"]) > 0):
547
+ fd.write("%sCw_fparm = array([\n" % indent)
548
+ for i in range(ppc["Cw"]):
549
+ fd.write('%s[%.9g, %d, %.9g, %.9g, %.9g],\n' %
550
+ ((indent2,) + tuple(ppc["Cw"][i]) + tuple(ppc["fparm"][i, :])))
551
+ fd.write('%s])\n' % indent)
552
+ fd.write('%s%s[\'Cw\'] = Cw_fparm[:, 0]\n' % (indent, prefix))
553
+ fd.write("%s%s['fparm'] = Cw_fparm[:, 1:5]\n" % (indent, prefix))
554
+ else:
555
+ fd.write("%s%s['Cw'] = array([\n" % (indent, prefix))
556
+ for i in range(len(ppc["Cw"])):
557
+ fd.write('%s[%.9g],\n' % (indent2, ppc["Cw"][i]))
558
+ fd.write('%s])\n' % indent)
559
+
560
+ # user vars
561
+ if ('z0' in ppc) or ('zl' in ppc) or ('zu' in ppc):
562
+ fd.write('\n%s## user vars\n' % indent)
563
+ if ('z0' in ppc) and (len(ppc['z0']) > 0):
564
+ fd.write('%s%s["z0"] = array([\n' % (indent, prefix))
565
+ for i in range(len(ppc['z0'])):
566
+ fd.write('%s[%.9g],\n' % (indent2, ppc["z0"]))
567
+ fd.write('%s])\n' % indent)
568
+ if ('zl' in ppc) and (len(ppc['zl']) > 0):
569
+ fd.write('%s%s["zl"] = array([\n' % (indent2, prefix))
570
+ for i in range(len(ppc['zl'])):
571
+ fd.write('%s[%.9g],\n' % (indent2, ppc["zl"]))
572
+ fd.write('%s])\n' % indent)
573
+ if ('zu' in ppc) and (len(ppc['zu']) > 0):
574
+ fd.write('%s%s["zu"] = array([\n' % (indent, prefix))
575
+ for i in range(len(ppc['zu'])):
576
+ fd.write('%s[%.9g],\n' % (indent2, ppc["zu"]))
577
+ fd.write('%s])\n' % indent)
578
+
579
+ # execute userfcn callbacks for 'savecase' stage
580
+ if 'userfcn' in ppc:
581
+ run_userfcn(ppc["userfcn"], 'savecase', ppc, fd, prefix)
582
+
583
+ fd.write('\n%sreturn ppc\n' % indent)
584
+
585
+ # close file
586
+ fd.close()
587
+
588
+ return fname
589
+
590
+
591
+ def print_sparse(fd, varname, A):
592
+ A = A.tocoo()
593
+ i, j, s = A.row, A.col, A.data
594
+ m, n = A.shape
595
+
596
+ if len(s) == 0:
597
+ fd.write('%s = sparse((%d, %d))\n' % (varname, m, n))
598
+ else:
599
+ fd.write('ijs = array([\n')
600
+ for k in range(len(i)):
601
+ fd.write('[%d, %d, %.9g],\n' % (i[k], j[k], s[k]))
602
+
603
+ fd.write('])\n')
604
+ fd.write('%s = sparse(ijs[:, 0], ijs[:, 1], ijs[:, 2], %d, %d)\n' % (varname, m, n))
@@ -0,0 +1,11 @@
1
+ """
2
+ Module for build matrices.
3
+ """
4
+
5
+ from ams.pypower.make.matrices import (makeAang, makeApq, makeAvl, makeAy,
6
+ makeB, makeBdc,
7
+ makeLODF, makePTDF,
8
+ makeSbus, makeYbus) # NOQA
9
+ from ams.pypower.make.pdv import (dSbus_dV, dIbr_dV, dSbr_dV,
10
+ d2Sbus_dV2, d2AIbr_dV2, d2ASbr_dV2,
11
+ d2Ibr_dV2, d2Sbr_dV2, dAbr_dV) # NOQA