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
@@ -0,0 +1,513 @@
1
+ """
2
+ Runs a full AC continuation power flow.
3
+ """
4
+ # --- run cpf ---
5
+ import logging
6
+
7
+ import numpy as np
8
+ from numpy import flatnonzero as find
9
+
10
+ import scipy.sparse as sp
11
+
12
+ from andes.shared import deg2rad
13
+ from andes.utils.misc import elapsed
14
+
15
+ import ams.pypower.utils as putil
16
+ import ams.pypower.io as pio
17
+ import ams.pypower.routines.opffcns as opfcn
18
+ from ams.pypower.idx import IDX
19
+ from ams.pypower.make import (makeSbus, makeYbus, dSbus_dV)
20
+ from ams.pypower.routines.pflow import newtonpf, pfsoln
21
+ from ams.pypower.core import ppoption
22
+ import ams.pypower.routines.cpf_callbacks as cpf_callbacks
23
+
24
+ from ams.shared import inf, nan
25
+
26
+ logger = logging.getLogger(__name__)
27
+
28
+
29
+ def runcpf(casedata, ppopt=None, scale=1.2):
30
+ """
31
+ Runs a full AC continuation power flow.
32
+ """
33
+ ppopt = ppoption(ppopt)
34
+
35
+ # options
36
+ verbose = ppopt["VERBOSE"]
37
+ step = ppopt["CPF_STEP"]
38
+ parameterization = ppopt["CPF_PARAMETERIZATION"]
39
+ adapt_step = ppopt["CPF_ADAPT_STEP"]
40
+ cb_args = ppopt["CPF_USER_CALLBACK_ARGS"]
41
+
42
+ # set up callbacks
43
+ callback_names = ["cpf_default_callback"]
44
+ if len(ppopt["CPF_USER_CALLBACK"]) > 0:
45
+ if isinstance(ppopt["CPF_USER_CALLBACK"], list):
46
+ callback_names = np.r_[callback_names, ppopt["CPF_USER_CALLBACK"]]
47
+ else:
48
+ callback_names.append(ppopt["CPF_USER_CALLBACK"])
49
+ callbacks = []
50
+ for callback_name in callback_names:
51
+ callbacks.append(getattr(cpf_callbacks, callback_name))
52
+
53
+ # read base case data
54
+ ppcbase = pio.loadcase(casedata)
55
+ nb = ppcbase["bus"].shape[0]
56
+
57
+ # add zero columns to branch for flows if needed
58
+ if ppcbase["branch"].shape[1] < IDX.branch.QT:
59
+ ppcbase["branch"] = np.c_[ppcbase["branch"],
60
+ np.zeros((ppcbase["branch"].shape[0],
61
+ IDX.branch.QT - ppcbase["branch"].shape[1] + 1))]
62
+
63
+ # convert to internal indexing
64
+ ppcbase = opfcn.ext2int(ppcbase)
65
+ baseMVAb, busb, genb, branchb = \
66
+ ppcbase["baseMVA"], ppcbase["bus"], ppcbase["gen"], ppcbase["branch"]
67
+
68
+ # get bus index lists of each type of bus
69
+ ref, pv, pq = putil.bustypes(busb, genb)
70
+
71
+ # generator info
72
+ onb = find(genb[:, IDX.gen.GEN_STATUS] > 0) # which generators are on?
73
+ gbusb = genb[onb, IDX.gen.GEN_BUS].astype(int) # what buses are they at?
74
+
75
+ # scale the load and generation of base case as target case
76
+ ppctarget = pio.loadcase(casedata)
77
+ ppctarget["bus"][:, IDX.bus.PD] *= scale
78
+ ppctarget["bus"][:, IDX.bus.QD] *= scale
79
+ ppctarget["gen"][:, IDX.gen.PG] *= scale
80
+ ppctarget["gen"][:, IDX.gen.QG] *= scale
81
+
82
+ # add zero columns to branch for flows if needed
83
+ if ppctarget["branch"].shape[1] < IDX.branch.QT:
84
+ ppctarget["branch"] = np.c_[ppctarget["branch"],
85
+ np.zeros((ppctarget["branch"].shape[0],
86
+ IDX.branch.QT - ppctarget["branch"].shape[1] + 1))]
87
+
88
+ # convert to internal indexing
89
+ ppctarget = opfcn.ext2int(ppctarget)
90
+ baseMVAt, bust, gent, brancht = \
91
+ ppctarget["baseMVA"], ppctarget["bus"], ppctarget["gen"], ppctarget["branch"]
92
+
93
+ # get bus index lists of each type of bus
94
+ # ref, pv, pq = putil.bustypes(bust, gent)
95
+
96
+ # generator info
97
+ ont = find(gent[:, IDX.gen.GEN_STATUS] > 0) # which generators are on?
98
+ # gbust = gent[ont, IDX.gen.GEN_BUS].astype(int) # what buses are they at?
99
+
100
+ # ----- run the power flow -----
101
+ t0, _ = elapsed() # start timer
102
+
103
+ # initial state
104
+ # V0 = np.ones((bus.shape[0]) ## flat start
105
+ V0 = busb[:, IDX.bus.VM] * np.exp((1j * deg2rad * busb[:, IDX.bus.VA]))
106
+ vcb = np.ones(V0.shape) # create mask of voltage-controlled buses
107
+ vcb[pq] = 0 # exclude PQ buses
108
+ k = find(vcb[gbusb]) # in-service gens at v-c buses
109
+ V0[gbusb[k]] = genb[onb[k], IDX.gen.VG] / abs(V0[gbusb[k]]) * V0[gbusb[k]]
110
+
111
+ # build admittance matrices
112
+ Ybus, Yf, Yt = makeYbus(baseMVAb, busb, branchb)
113
+
114
+ # compute base case complex bus power injections (generation - load)
115
+ Sbusb = makeSbus(baseMVAb, busb, genb)
116
+ # compute target case complex bus power injections (generation - load)
117
+ Sbust = makeSbus(baseMVAt, bust, gent)
118
+
119
+ # scheduled transfer
120
+ Sxfr = Sbust - Sbusb
121
+
122
+ # Run the base case power flow solution
123
+ lam = 0
124
+ logger.info('Solve base case power flow')
125
+ V, success, iterations = newtonpf(Ybus, Sbusb, V0, ref, pv, pq, ppopt)
126
+
127
+ logger.info('Start full AC CPF')
128
+ logger.info('%2d: lambda = %6.3f, %2d Newton steps' % (0, 0, iterations))
129
+
130
+ lamprv = lam # lam at previous step
131
+ Vprv = V # V at previous step
132
+ continuation = 1
133
+ cont_steps = 0
134
+
135
+ # input args for callbacks
136
+ cb_data = dict(ppc_base=ppcbase, ppc_target=ppctarget,
137
+ Sxfr=Sxfr, Ybus=Ybus, Yf=Yf, Yt=Yt,
138
+ ref=ref, pv=pv, pq=pq, ppopt=ppopt)
139
+ cb_state = {}
140
+
141
+ # invoke callbacks
142
+ for k in range(len(callbacks)):
143
+ cb_state, _ = callbacks[k](cont_steps, V, lam, V, lam,
144
+ cb_data, cb_state, cb_args)
145
+
146
+ if np.linalg.norm(Sxfr) == 0:
147
+ logger.error('base case and target case have identical load and generation!')
148
+
149
+ continuation = 0
150
+ V0 = V
151
+ lam0 = lam
152
+
153
+ # tangent predictor z = [dx;dlam]
154
+ z = np.zeros(2*len(V)+1)
155
+ z[-1] = 1.0
156
+ while continuation:
157
+ cont_steps = cont_steps + 1
158
+ # prediction for next step
159
+ V0, lam0, z = cpf_predictor(V, lam, Ybus, Sxfr, pv, pq, step, z,
160
+ Vprv, lamprv, parameterization)
161
+
162
+ # save previous voltage, lambda before updating
163
+ Vprv = V
164
+ lamprv = lam
165
+
166
+ # correction
167
+ V, success, i, lam = cpf_corrector(Ybus, Sbusb, V0, ref, pv, pq,
168
+ lam0, Sxfr, Vprv, lamprv, z,
169
+ step, parameterization, ppopt)
170
+
171
+ if not success:
172
+ continuation = 0
173
+ logger.warning('%2d: lambda = %6.3f, corrector did not converge in %d iterations' % (
174
+ cont_steps, lam, i))
175
+ break
176
+
177
+ logger.info('%2d: lambda = %6.3f, %2d corrector Newton steps' %
178
+ (cont_steps, lam, i))
179
+
180
+ # invoke callbacks
181
+ for k in range(len(callbacks)):
182
+ cb_state, _ = callbacks[k](cont_steps, V, lam, V0, lam0,
183
+ cb_data, cb_state, cb_args)
184
+
185
+ if isinstance(ppopt["CPF_STOP_AT"], str):
186
+ if ppopt["CPF_STOP_AT"].upper() == "FULL":
187
+ if abs(lam) < 1e-8: # traced the full continuation curve
188
+ logger.info('Reached steady state loading limit in %d continuation steps' % cont_steps)
189
+ continuation = 0
190
+ elif lam < lamprv and lam - step < 0: # next step will overshoot
191
+ step = lam # modify step-size
192
+ parameterization = 1 # change to natural parameterization
193
+ adapt_step = False # disable step-adaptivity
194
+
195
+ else: # == 'NOSE'
196
+ if lam < lamprv: # reached the nose point
197
+ logger.info('Reached steady state loading limit in %d continuation steps' % cont_steps)
198
+ continuation = 0
199
+
200
+ else:
201
+ if lam < lamprv:
202
+ logger.info('Reached steady state loading limit in %d continuation steps' % cont_steps)
203
+ continuation = 0
204
+ elif abs(ppopt["CPF_STOP_AT"] - lam) < 1e-8: # reached desired lambda
205
+ logger.info('Reached desired lambda %3.2f in %d continuation steps' % (
206
+ ppopt["CPF_STOP_AT"], cont_steps))
207
+ continuation = 0
208
+ # will reach desired lambda in next step
209
+ elif lam + step > ppopt["CPF_STOP_AT"]:
210
+ step = ppopt["CPF_STOP_AT"] - lam # modify step-size
211
+ parameterization = 1 # change to natural parameterization
212
+ adapt_step = False # disable step-adaptivity
213
+
214
+ if adapt_step and continuation:
215
+ pvpq = np.r_[pv, pq]
216
+ # Adapt stepsize
217
+ cpf_error = np.linalg.norm(np.r_[np.angle(V[pq]), abs(
218
+ V[pvpq]), lam] - np.r_[np.angle(V0[pq]), abs(V0[pvpq]), lam0], inf)
219
+ if cpf_error < ppopt["CPF_ERROR_TOL"]:
220
+ # Increase stepsize
221
+ step = step * ppopt["CPF_ERROR_TOL"] / cpf_error
222
+ if step > ppopt["CPF_STEP_MAX"]:
223
+ step = ppopt["CPF_STEP_MAX"]
224
+ else:
225
+ # decrese stepsize
226
+ step = step * ppopt["CPF_ERROR_TOL"] / cpf_error
227
+ if step < ppopt["CPF_STEP_MIN"]:
228
+ step = ppopt["CPF_STEP_MIN"]
229
+
230
+ # invoke callbacks
231
+ if success:
232
+ cpf_results = {}
233
+ for k in range(len(callbacks)):
234
+ cb_state, cpf_results = callbacks[k](cont_steps, V, lam, V0, lam0,
235
+ cb_data, cb_state, cb_args, results=cpf_results, is_final=True)
236
+ else:
237
+ cpf_results = {}
238
+ cpf_results["iterations"] = i
239
+
240
+ # update bus and gen matrices to reflect the loading and generation
241
+ # at the noise point
242
+ bust[:, IDX.bus.PD] = busb[:, IDX.bus.PD] + lam * (bust[:, IDX.bus.PD] - busb[:, IDX.bus.PD])
243
+ bust[:, IDX.bus.QD] = busb[:, IDX.bus.QD] + lam * (bust[:, IDX.bus.QD] - busb[:, IDX.bus.QD])
244
+ gent[:, IDX.gen.PG] = genb[:, IDX.gen.PG] + lam * (gent[:, IDX.gen.PG] - genb[:, IDX.gen.PG])
245
+
246
+ # update data matrices with solution
247
+ bust, gent, brancht = pfsoln(baseMVAt, bust, gent, brancht,
248
+ Ybus, Yf, Yt, V, ref, pv, pq)
249
+
250
+ ppctarget["et"] = elapsed(t0)
251
+ ppctarget["success"] = success
252
+
253
+ # ----- output results -----
254
+ # convert back to original bus numbering & print results
255
+ ppctarget["bus"], ppctarget["gen"], ppctarget["branch"] = bust, gent, brancht
256
+ if success:
257
+ n = cpf_results["iterations"] + 1
258
+ cpf_results["V_p"] = opfcn.i2e_data(
259
+ ppctarget, cpf_results["V_p"], np.full((nb, n), nan), "bus", 0)
260
+ cpf_results["V_c"] = opfcn.i2e_data(
261
+ ppctarget, cpf_results["V_c"], np.full((nb, n), nan), "bus", 0)
262
+ results = opfcn.int2ext(ppctarget)
263
+ results["cpf"] = cpf_results
264
+
265
+ # zero out result fields of out-of-service gens & branches
266
+ if len(results["order"]["gen"]["status"]["off"]) > 0:
267
+ results["gen"][np.ix_(results["order"]["gen"]
268
+ ["status"]["off"], [IDX.gen.QF, IDX.gen.QG])] = 0
269
+
270
+ if len(results["order"]["branch"]["status"]["off"]) > 0:
271
+ results["branch"][np.ix_(results["order"]["branch"]
272
+ ["status"]["off"], [IDX.branch.PF, IDX.branch.QF, IDX.branch.PT, IDX.branch.QT])] = 0
273
+
274
+ if ppopt["CPF_PLOT_LEVEL"]:
275
+ import matplotlib.pyplot as plt
276
+ plt.show()
277
+ sstats = dict(solver_name='PYPOWER', num_iters=cpf_results["iterations"])
278
+ return results, success, sstats
279
+
280
+
281
+ def cpf_predictor(V, lam, Ybus, Sxfr, pv, pq,
282
+ step, z, Vprv, lamprv, parameterization):
283
+ # sizes
284
+ pvpq = np.r_[pv, pq]
285
+ nb = len(V)
286
+ npv = len(pv)
287
+ npq = len(pq)
288
+
289
+ # compute Jacobian for the power flow equations
290
+ dSbus_dVm, dSbus_dVa = dSbus_dV(Ybus, V)
291
+
292
+ j11 = dSbus_dVa[np.array([pvpq]).T, pvpq].real
293
+ j12 = dSbus_dVm[np.array([pvpq]).T, pq].real
294
+ j21 = dSbus_dVa[np.array([pq]).T, pvpq].imag
295
+ j22 = dSbus_dVm[np.array([pq]).T, pq].imag
296
+
297
+ J = sp.vstack([
298
+ sp.hstack([j11, j12]),
299
+ sp.hstack([j21, j22])
300
+ ], format="csr")
301
+
302
+ dF_dlam = -np.r_[Sxfr[pvpq].real, Sxfr[pq].imag].reshape((-1, 1))
303
+ dP_dV, dP_dlam = cpf_p_jac(parameterization, z, V, lam, Vprv, lamprv, pv, pq)
304
+
305
+ # linear operator for computing the tangent predictor
306
+ J = sp.vstack([
307
+ sp.hstack([J, dF_dlam]),
308
+ sp.hstack([dP_dV, dP_dlam])
309
+ ], format="csr")
310
+
311
+ Vaprv = np.angle(V)
312
+ Vmprv = abs(V)
313
+
314
+ # compute normalized tangent predictor
315
+ s = np.zeros(npv+2*npq+1)
316
+ s[-1] = 1
317
+ z[np.r_[pvpq, nb+pq, 2*nb]] = sp.linalg.spsolve(J, s)
318
+ z = z / np.linalg.norm(z)
319
+
320
+ Va0 = Vaprv
321
+ Vm0 = Vmprv
322
+ lam0 = lam
323
+
324
+ # prediction for next step
325
+ Va0[pvpq] = Vaprv[pvpq] + step * z[pvpq]
326
+ Vm0[pq] = Vmprv[pq] + step * z[nb+pq]
327
+ lam0 = lam + step * z[2*nb]
328
+ V0 = Vm0 * np.exp((1j * Va0))
329
+
330
+ return V0, lam0, z
331
+
332
+
333
+ def cpf_corrector(Ybus, Sbus, V0, ref, pv, pq,
334
+ lam0, Sxfr, Vprv, lamprv, z,
335
+ step, parameterization, ppopt):
336
+
337
+ # default arguments
338
+ if ppopt is None:
339
+ ppopt = ppoption(ppopt)
340
+
341
+ # options
342
+ verbose = ppopt["VERBOSE"]
343
+ tol = ppopt["PF_TOL"]
344
+ max_it = ppopt["PF_MAX_IT"]
345
+
346
+ # initialize
347
+ converged = 0
348
+ i = 0
349
+ V = V0
350
+ Va = np.angle(V)
351
+ Vm = abs(V)
352
+ lam = lam0
353
+
354
+ # set up indexing for updating V
355
+ pvpq = np.r_[pv, pq]
356
+ npv = len(pv)
357
+ npq = len(pq)
358
+ nb = len(V)
359
+ j1 = 0
360
+ j2 = npv # j1:j2 - V angle of pv buses
361
+ j3 = j2
362
+ j4 = j2 + npq # j1:j2 - V angle of pv buses
363
+ j5 = j4
364
+ j6 = j4 + npq # j5:j6 - V mag of pq buses
365
+ j7 = j6
366
+ j8 = j6 + 1 # j7:j8 - lambda
367
+
368
+ # evaluate F(x0, lam0), including Sxfr transfer/loading
369
+
370
+ mis = V * np.conj(Ybus.dot(V)) - Sbus - lam*Sxfr
371
+ F = np.r_[mis[pvpq].real, mis[pq].imag]
372
+
373
+ # evaluate P(x0, lambda0)
374
+ P = cpf_p(parameterization, step, z, V, lam, Vprv, lamprv, pv, pq)
375
+
376
+ # augment F(x, lambda) with P(x, lambda)
377
+ F = np.r_[F, P]
378
+
379
+ # check tolerance
380
+ normF = np.linalg.norm(F, inf)
381
+ logger.debug('CPF correction')
382
+ logger.debug('%2d: |F(x)| = %.10g', i, normF)
383
+ if normF < tol:
384
+ converged = 1
385
+
386
+ # do Newton iterations
387
+ while not converged and i < max_it:
388
+ # update iteration counter
389
+ i = i + 1
390
+
391
+ # evaluate Jacobian
392
+ dSbus_dVm, dSbus_dVa = dSbus_dV(Ybus, V)
393
+
394
+ j11 = dSbus_dVa[np.array([pvpq]).T, pvpq].real
395
+ j12 = dSbus_dVm[np.array([pvpq]).T, pq].real
396
+ j21 = dSbus_dVa[np.array([pq]).T, pvpq].imag
397
+ j22 = dSbus_dVm[np.array([pq]).T, pq].imag
398
+
399
+ J = sp.vstack([
400
+ sp.hstack([j11, j12]),
401
+ sp.hstack([j21, j22])
402
+ ], format="csr")
403
+
404
+ dF_dlam = -np.r_[Sxfr[pvpq].real, Sxfr[pq].imag].reshape((-1, 1))
405
+ dP_dV, dP_dlam = cpf_p_jac(parameterization, z, V, lam, Vprv, lamprv, pv, pq)
406
+
407
+ # augment J with real/imag -Sxfr and z^T
408
+ J = sp.vstack([
409
+ sp.hstack([J, dF_dlam]),
410
+ sp.hstack([dP_dV, dP_dlam])
411
+ ], format="csr")
412
+
413
+ # compute update step
414
+ dx = -1 * sp.linalg.spsolve(J, F)
415
+
416
+ # update voltage
417
+ if npv:
418
+ Va[pv] = Va[pv] + dx[j1:j2]
419
+ if npq:
420
+ Va[pq] = Va[pq] + dx[j3:j4]
421
+ Vm[pq] = Vm[pq] + dx[j5:j6]
422
+ V = Vm * np.exp((1j * Va))
423
+ Vm = abs(V)
424
+ Va = np.angle(V)
425
+
426
+ # update lambda
427
+ lam = lam + dx[j7:j8]
428
+
429
+ # evalute F(x, lam)
430
+ mis = V * np.conj(Ybus.dot(V)) - Sbus - lam*Sxfr
431
+ F = np.r_[mis[pv].real, mis[pq].real, mis[pq].imag]
432
+
433
+ # evaluate P(x, lambda)
434
+ P = cpf_p(parameterization, step, z, V, lam, Vprv, lamprv, pv, pq)
435
+
436
+ # augment F(x, lambda) with P(x, lambda)
437
+ F = np.r_[F, P]
438
+
439
+ # check for convergence
440
+ normF = np.linalg.norm(F, inf)
441
+ logger.debug('%2d: |F(x)| = %.10g', i, normF)
442
+
443
+ if normF < tol:
444
+ converged = 1
445
+
446
+ if not converged:
447
+ logger.error('Newton''s method corrector did not converge in %d iterations.' % i)
448
+
449
+ return V, converged, i, lam
450
+
451
+
452
+ def cpf_p_jac(parameterization, z, V, lam, Vprv, lamprv, pv, pq):
453
+ if parameterization == 1:
454
+ npv = len(pv)
455
+ npq = len(pq)
456
+ dP_dV = np.zeros(npv+2*npq)
457
+ if lam >= lamprv:
458
+ dP_dlam = 1.0
459
+ else:
460
+ dP_dlam = -1.0
461
+
462
+ elif parameterization == 2:
463
+ pvpq = np.r_[pv, pq]
464
+
465
+ Va = np.angle(V)
466
+ Vm = abs(V)
467
+ Vaprv = np.angle(Vprv)
468
+ Vmprv = abs(Vprv)
469
+ dP_dV = 2 * (np.r_[Va[pvpq], Vm[pq]] -
470
+ np.r_[Vaprv[pvpq], Vmprv[pq]])
471
+ if lam == lamprv:
472
+ dP_dlam = 1.0
473
+ else:
474
+ dP_dlam = 2 * (lam - lamprv)
475
+
476
+ elif parameterization == 3:
477
+ nb = len(V)
478
+ dP_dV = z[np.r_[pv, pq, nb+pq]]
479
+ dP_dlam = z[2 * nb]
480
+
481
+ return dP_dV, dP_dlam
482
+
483
+
484
+ def cpf_p(parameterization, step, z, V, lam, Vprv, lamprv, pv, pq):
485
+ # evaluate P(x0, lambda0)
486
+ if parameterization == 1:
487
+ if lam >= lamprv:
488
+ P = lam - lamprv - step
489
+ else:
490
+ P = lamprv - lam - step
491
+
492
+ elif parameterization == 2:
493
+ pvpq = np.r_[pv, pq]
494
+
495
+ Va = np.angle(V)
496
+ Vm = abs(V)
497
+ Vaprv = np.angle(Vprv)
498
+ Vmprv = abs(Vprv)
499
+ P = sum(np.square(np.r_[Va[pvpq], Vm[pq], lam] -
500
+ np.r_[Vaprv[pvpq], Vmprv[pq], lamprv])) - np.square(step)
501
+
502
+ elif parameterization == 3:
503
+ pvpq = np.r_[pv, pq]
504
+
505
+ nb = len(V)
506
+ Va = np.angle(V)
507
+ Vm = abs(V)
508
+ Vaprv = np.angle(Vprv)
509
+ Vmprv = abs(Vprv)
510
+ P = np.dot(z[np.r_[pvpq, nb+pq, 2*nb]].reshape((1, -1)),
511
+ np.array(np.r_[Va[pvpq], Vm[pq], lam] - np.r_[Vaprv[pvpq], Vmprv[pq], lamprv]).T) - step
512
+
513
+ return P
@@ -0,0 +1,114 @@
1
+ """Callback functions for CPF
2
+ """
3
+
4
+ from numpy import c_, r_, amax, argmax, array
5
+ from scipy.sparse import issparse
6
+
7
+ import sys
8
+ import os
9
+
10
+
11
+ def cpf_default_callback(k, V_c, lam_c, V_p, lam_p, cb_data, cb_state, cb_args, results=None, is_final=False):
12
+ """Default callback function for CPF
13
+ """
14
+
15
+ # initialize plotting options
16
+ plot_level = cb_data["ppopt"]["CPF_PLOT_LEVEL"]
17
+ plot_bus = cb_data["ppopt"]["CPF_PLOT_BUS"]
18
+
19
+ if plot_level:
20
+ try:
21
+ import matplotlib.pyplot as plt
22
+ except ImportError:
23
+ logger.debug(
24
+ "Error: Please install \"Matpotlib\" package for plotting function!\n")
25
+
26
+ if plot_bus == '': # no bus specified
27
+ if len(cb_data["Sxfr"][cb_data["pq"]]) != 0:
28
+ idx = argmax(abs(cb_data["Sxfr"][cb_data["pq"]]), axis=0)
29
+ idx = cb_data["pq"][idx]
30
+ else: # or bus 1 if there are none
31
+ idx = 0
32
+ idx_e = int(cb_data["ppc_target"]["order"]["bus"]["i2e"][idx])
33
+
34
+ else:
35
+ idx_e = plot_bus
36
+ if issparse(cb_data["ppc_target"]["order"]["bus"]["e2i"][idx_e]):
37
+ idx = int(cb_data["ppc_target"]["order"]
38
+ ["bus"]["e2i"][idx_e].toarray())
39
+ else:
40
+ idx = int(cb_data["ppc_target"]["order"]["bus"]["e2i"][idx_e])
41
+
42
+ if idx == 0:
43
+ logger.debug(
44
+ "cpf_default_callback: %d is not a valid bus number for PPOPT[\"CPF_PLOT_BUS\"]\n" % idx_e)
45
+
46
+ # ----- FINAL call -----
47
+ if is_final:
48
+ # assemble results struct
49
+ results = cb_state
50
+ results["max_lam"] = amax(cb_state["lam_c"])
51
+ results["iterations"] = k
52
+
53
+ # finish final lambda-V nose curve plot
54
+ if plot_level:
55
+ plt.plot(cb_state["lam_c"],
56
+ abs(cb_state["V_c"][idx, :]), '-', color=(0.25, 0.25, 1))
57
+ plt.axis([0, amax([1, amax(cb_state["lam_p"]), amax(cb_state["lam_c"])])*1.05, 0,
58
+ amax([1, amax(abs(cb_state["V_p"][idx])), amax(abs(cb_state["V_c"][idx]))*1.05])])
59
+ plt.pause(sys.float_info.epsilon)
60
+ plt.ioff()
61
+
62
+ elif k == 0:
63
+ # initialize state
64
+ cb_state = {
65
+ "V_p": V_p,
66
+ "lam_p": lam_p,
67
+ "V_c": V_c,
68
+ "lam_c": lam_c,
69
+ "iterations": 0
70
+ }
71
+
72
+ # initialize lambda-V nose curve plot
73
+ if plot_level:
74
+ plt.ion()
75
+ plt.plot(cb_state["lam_p"],
76
+ abs(cb_state["V_p"][idx]), '-', color=(0.25, 0.25, 1))
77
+ plt.title('Voltage at Bus %d' % idx_e)
78
+ plt.xlabel('$\\lambda$')
79
+ plt.ylabel('Voltage Magnitude')
80
+ plt.axis([0, amax([1, amax(cb_state["lam_p"]), amax(cb_state["lam_c"])])*1.05, 0,
81
+ amax([1, amax(abs(cb_state["V_p"][idx])), amax(abs(cb_state["V_c"][idx]))*1.05])])
82
+ plt.pause(sys.float_info.epsilon)
83
+
84
+ # ----- ITERATION call -----
85
+ else:
86
+ # update state
87
+ cb_state["V_p"] = c_[cb_state["V_p"], V_p]
88
+ cb_state["lam_p"] = r_[cb_state["lam_p"], lam_p]
89
+ cb_state["V_c"] = c_[cb_state["V_c"], V_c]
90
+ cb_state["lam_c"] = r_[cb_state["lam_c"], lam_c]
91
+ cb_state["iterations"] = k
92
+
93
+ # plot single step of the lambda-V nose curve
94
+ if plot_level > 1:
95
+ plt.plot(r_[cb_state["lam_c"][k-1], cb_state["lam_p"][k]],
96
+ r_[abs(cb_state["V_c"][idx, k-1]),
97
+ abs(cb_state["V_p"][idx, k])],
98
+ '-', color=0.85*array([1, 0.75, 0.75]))
99
+ plt.plot(r_[cb_state["lam_p"][k], cb_state["lam_c"][k]],
100
+ r_[abs(cb_state["V_p"][idx, k]),
101
+ abs(cb_state["V_c"][idx, k])],
102
+ '-', color=0.85*array([0.75, 1, 0.75]))
103
+ plt.plot(cb_state["lam_p"][k], abs(cb_state["V_p"][idx, k]),
104
+ 'x', color=0.85*array([1, 0.75, 0.75]))
105
+ plt.plot(cb_state["lam_c"][k], abs(
106
+ cb_state["V_c"][idx, k]), '-o', markerfacecolor='none', color=(0.25, 0.25, 1))
107
+ plt.axis([0, amax([1, amax(cb_state["lam_p"]), amax(cb_state["lam_c"])])*1.05, 0,
108
+ amax([1, amax(abs(cb_state["V_p"][idx])), amax(abs(cb_state["V_c"][idx]))*1.05])])
109
+ plt.pause(sys.float_info.epsilon)
110
+
111
+ if plot_level > 2:
112
+ os.system("pause")
113
+
114
+ return cb_state, results