ltbams 1.0.9__py3-none-any.whl → 1.0.10__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 (79) hide show
  1. ams/__init__.py +0 -1
  2. ams/_version.py +3 -3
  3. ams/cases/5bus/pjm5bus_demo.json +1324 -0
  4. ams/core/__init__.py +1 -0
  5. ams/core/common.py +30 -0
  6. ams/core/model.py +1 -1
  7. ams/core/symprocessor.py +1 -1
  8. ams/extension/eva.py +1 -1
  9. ams/interface.py +40 -24
  10. ams/io/matpower.py +31 -17
  11. ams/io/psse.py +278 -1
  12. ams/main.py +2 -2
  13. ams/models/group.py +2 -1
  14. ams/models/static/pq.py +7 -3
  15. ams/opt/param.py +1 -2
  16. ams/routines/__init__.py +2 -3
  17. ams/routines/acopf.py +5 -108
  18. ams/routines/dcopf.py +8 -0
  19. ams/routines/dcpf.py +1 -1
  20. ams/routines/ed.py +4 -2
  21. ams/routines/grbopt.py +150 -0
  22. ams/routines/pflow.py +2 -2
  23. ams/routines/pypower.py +631 -0
  24. ams/routines/routine.py +4 -10
  25. ams/routines/uc.py +2 -2
  26. ams/shared.py +26 -43
  27. ams/system.py +118 -2
  28. docs/source/api.rst +2 -0
  29. docs/source/getting_started/install.rst +9 -6
  30. docs/source/images/dcopf_time.png +0 -0
  31. docs/source/images/educ_pie.png +0 -0
  32. docs/source/release-notes.rst +21 -47
  33. {ltbams-1.0.9.dist-info → ltbams-1.0.10.dist-info}/METADATA +87 -47
  34. {ltbams-1.0.9.dist-info → ltbams-1.0.10.dist-info}/RECORD +54 -71
  35. {ltbams-1.0.9.dist-info → ltbams-1.0.10.dist-info}/WHEEL +1 -1
  36. tests/test_1st_system.py +1 -1
  37. tests/test_case.py +14 -14
  38. tests/test_export_csv.py +1 -1
  39. tests/test_interface.py +24 -2
  40. tests/test_io.py +50 -0
  41. tests/test_omodel.py +1 -1
  42. tests/test_report.py +6 -6
  43. tests/test_routine.py +2 -2
  44. tests/test_rtn_acopf.py +75 -0
  45. tests/test_rtn_dcopf.py +1 -1
  46. tests/test_rtn_dcopf2.py +1 -1
  47. tests/test_rtn_ed.py +9 -9
  48. tests/test_rtn_opf.py +142 -0
  49. tests/test_rtn_pflow.py +0 -72
  50. tests/test_rtn_pypower.py +315 -0
  51. tests/test_rtn_rted.py +8 -8
  52. tests/test_rtn_uc.py +18 -18
  53. ams/pypower/__init__.py +0 -8
  54. ams/pypower/_compat.py +0 -9
  55. ams/pypower/core/__init__.py +0 -8
  56. ams/pypower/core/pips.py +0 -894
  57. ams/pypower/core/ppoption.py +0 -244
  58. ams/pypower/core/ppver.py +0 -18
  59. ams/pypower/core/solver.py +0 -2451
  60. ams/pypower/eps.py +0 -6
  61. ams/pypower/idx.py +0 -174
  62. ams/pypower/io.py +0 -604
  63. ams/pypower/make/__init__.py +0 -11
  64. ams/pypower/make/matrices.py +0 -665
  65. ams/pypower/make/pdv.py +0 -506
  66. ams/pypower/routines/__init__.py +0 -7
  67. ams/pypower/routines/cpf.py +0 -513
  68. ams/pypower/routines/cpf_callbacks.py +0 -114
  69. ams/pypower/routines/opf.py +0 -1803
  70. ams/pypower/routines/opffcns.py +0 -1946
  71. ams/pypower/routines/pflow.py +0 -852
  72. ams/pypower/toggle.py +0 -1098
  73. ams/pypower/utils.py +0 -293
  74. ams/routines/cpf.py +0 -65
  75. ams/routines/dcpf0.py +0 -196
  76. ams/routines/pflow0.py +0 -113
  77. tests/test_rtn_dcpf.py +0 -77
  78. {ltbams-1.0.9.dist-info → ltbams-1.0.10.dist-info}/entry_points.txt +0 -0
  79. {ltbams-1.0.9.dist-info → ltbams-1.0.10.dist-info}/top_level.txt +0 -0
tests/test_rtn_uc.py CHANGED
@@ -11,7 +11,7 @@ class TestUC(unittest.TestCase):
11
11
  """
12
12
 
13
13
  def setUp(self) -> None:
14
- self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.xlsx"),
14
+ self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.json"),
15
15
  setup=True, default_config=True, no_output=True)
16
16
  # decrease load first
17
17
  self.ss.PQ.set(src='p0', attr='v', idx=['PQ_1', 'PQ_2'], value=[0.3, 0.3])
@@ -38,7 +38,7 @@ class TestUC(unittest.TestCase):
38
38
  """
39
39
  Test generator tripping.
40
40
  """
41
- self.ss.UC.run()
41
+ self.ss.UC.run(solver='SCIP')
42
42
  self.assertTrue(self.ss.UC.converged, "UC did not converge!")
43
43
  pg_off_gen = self.ss.UC.get(src='pg', attr='v', idx=self.off_gen)
44
44
  np.testing.assert_almost_equal(np.zeros_like(pg_off_gen),
@@ -50,14 +50,14 @@ class TestUC(unittest.TestCase):
50
50
  """
51
51
  Test setting and tripping load.
52
52
  """
53
- self.ss.UC.run()
53
+ self.ss.UC.run(solver='SCIP')
54
54
  pgs = self.ss.UC.pg.v.sum()
55
55
 
56
56
  # --- set load ---
57
57
  self.ss.PQ.set(src='p0', attr='v', idx='PQ_1', value=0.1)
58
58
  self.ss.UC.update()
59
59
 
60
- self.ss.UC.run()
60
+ self.ss.UC.run(solver='SCIP')
61
61
  pgs_pqt = self.ss.UC.pg.v.sum()
62
62
  self.assertLess(pgs_pqt, pgs, "Load set does not take effect!")
63
63
 
@@ -65,7 +65,7 @@ class TestUC(unittest.TestCase):
65
65
  self.ss.PQ.alter(src='u', idx='PQ_2', value=0)
66
66
  self.ss.UC.update()
67
67
 
68
- self.ss.UC.run()
68
+ self.ss.UC.run(solver='SCIP')
69
69
  pgs_pqt2 = self.ss.UC.pg.v.sum()
70
70
  self.assertLess(pgs_pqt2, pgs_pqt, "Load trip does not take effect!")
71
71
 
@@ -77,7 +77,7 @@ class TestUC(unittest.TestCase):
77
77
  self.ss.Line.set(src='u', attr='v', idx='Line_3', value=0)
78
78
  self.ss.UC.update()
79
79
 
80
- self.ss.UC.run()
80
+ self.ss.UC.run(solver='SCIP')
81
81
  self.assertTrue(self.ss.UC.converged, "UC did not converge under line trip!")
82
82
  plf_l3 = self.ss.UC.get(src='plf', attr='v', idx='Line_3')
83
83
  np.testing.assert_almost_equal(np.zeros_like(plf_l3),
@@ -92,7 +92,7 @@ class TestUCDG(unittest.TestCase):
92
92
  """
93
93
 
94
94
  def setUp(self) -> None:
95
- self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.xlsx"),
95
+ self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.json"),
96
96
  setup=True, default_config=True, no_output=True)
97
97
  # decrease load first
98
98
  self.ss.PQ.set(src='p0', attr='v', idx=['PQ_1', 'PQ_2'], value=[0.3, 0.3])
@@ -119,7 +119,7 @@ class TestUCDG(unittest.TestCase):
119
119
  """
120
120
  Test generator tripping.
121
121
  """
122
- self.ss.UCDG.run()
122
+ self.ss.UCDG.run(solver='SCIP')
123
123
  self.assertTrue(self.ss.UCDG.converged, "UCDG did not converge!")
124
124
  pg_off_gen = self.ss.UCDG.get(src='pg', attr='v', idx=self.off_gen)
125
125
  np.testing.assert_almost_equal(np.zeros_like(pg_off_gen),
@@ -131,14 +131,14 @@ class TestUCDG(unittest.TestCase):
131
131
  """
132
132
  Test setting and tripping load.
133
133
  """
134
- self.ss.UCDG.run()
134
+ self.ss.UCDG.run(solver='SCIP')
135
135
  pgs = self.ss.UCDG.pg.v.sum()
136
136
 
137
137
  # --- set load ---
138
138
  self.ss.PQ.set(src='p0', attr='v', idx='PQ_1', value=0.1)
139
139
  self.ss.UCDG.update()
140
140
 
141
- self.ss.UCDG.run()
141
+ self.ss.UCDG.run(solver='SCIP')
142
142
  pgs_pqt = self.ss.UCDG.pg.v.sum()
143
143
  self.assertLess(pgs_pqt, pgs, "Load set does not take effect!")
144
144
 
@@ -146,7 +146,7 @@ class TestUCDG(unittest.TestCase):
146
146
  self.ss.PQ.alter(src='u', idx='PQ_2', value=0)
147
147
  self.ss.UCDG.update()
148
148
 
149
- self.ss.UCDG.run()
149
+ self.ss.UCDG.run(solver='SCIP')
150
150
  pgs_pqt2 = self.ss.UCDG.pg.v.sum()
151
151
  self.assertLess(pgs_pqt2, pgs_pqt, "Load trip does not take effect!")
152
152
 
@@ -158,7 +158,7 @@ class TestUCDG(unittest.TestCase):
158
158
  self.ss.Line.set(src='u', attr='v', idx='Line_3', value=0)
159
159
  self.ss.UCDG.update()
160
160
 
161
- self.ss.UCDG.run()
161
+ self.ss.UCDG.run(solver='SCIP')
162
162
  self.assertTrue(self.ss.UCDG.converged, "UCDG did not converge under line trip!")
163
163
  plf_l3 = self.ss.UCDG.get(src='plf', attr='v', idx='Line_3')
164
164
  np.testing.assert_almost_equal(np.zeros_like(plf_l3),
@@ -173,7 +173,7 @@ class TestUCES(unittest.TestCase):
173
173
  """
174
174
 
175
175
  def setUp(self) -> None:
176
- self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.xlsx"),
176
+ self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.json"),
177
177
  setup=True, default_config=True, no_output=True)
178
178
  # decrease load first
179
179
  self.ss.PQ.set(src='p0', attr='v', idx=['PQ_1', 'PQ_2'], value=[0.3, 0.3])
@@ -200,7 +200,7 @@ class TestUCES(unittest.TestCase):
200
200
  """
201
201
  Test generator tripping.
202
202
  """
203
- self.ss.UCES.run()
203
+ self.ss.UCES.run(solver='SCIP')
204
204
  self.assertTrue(self.ss.UCES.converged, "UCES did not converge!")
205
205
  pg_off_gen = self.ss.UCES.get(src='pg', attr='v', idx=self.off_gen)
206
206
  np.testing.assert_almost_equal(np.zeros_like(pg_off_gen),
@@ -212,14 +212,14 @@ class TestUCES(unittest.TestCase):
212
212
  """
213
213
  Test setting and tripping load.
214
214
  """
215
- self.ss.UCES.run()
215
+ self.ss.UCES.run(solver='SCIP')
216
216
  pgs = self.ss.UCES.pg.v.sum()
217
217
 
218
218
  # --- set load ---
219
219
  self.ss.PQ.set(src='p0', attr='v', idx='PQ_1', value=0.1)
220
220
  self.ss.UCES.update()
221
221
 
222
- self.ss.UCES.run()
222
+ self.ss.UCES.run(solver='SCIP')
223
223
  pgs_pqt = self.ss.UCES.pg.v.sum()
224
224
  self.assertLess(pgs_pqt, pgs, "Load set does not take effect!")
225
225
 
@@ -227,7 +227,7 @@ class TestUCES(unittest.TestCase):
227
227
  self.ss.PQ.alter(src='u', idx='PQ_2', value=0)
228
228
  self.ss.UCES.update()
229
229
 
230
- self.ss.UCES.run()
230
+ self.ss.UCES.run(solver='SCIP')
231
231
  pgs_pqt2 = self.ss.UCES.pg.v.sum()
232
232
  self.assertLess(pgs_pqt2, pgs_pqt, "Load trip does not take effect!")
233
233
 
@@ -239,7 +239,7 @@ class TestUCES(unittest.TestCase):
239
239
  self.ss.Line.set(src='u', attr='v', idx='Line_3', value=0)
240
240
  self.ss.UCES.update()
241
241
 
242
- self.ss.UCES.run()
242
+ self.ss.UCES.run(solver='SCIP')
243
243
  self.assertTrue(self.ss.UCES.converged, "UCES did not converge under line trip!")
244
244
  plf_l3 = self.ss.UCES.get(src='plf', attr='v', idx='Line_3')
245
245
  np.testing.assert_almost_equal(np.zeros_like(plf_l3),
ams/pypower/__init__.py DELETED
@@ -1,8 +0,0 @@
1
- """
2
- Revised PYPOWER module.
3
- """
4
-
5
- from ams.pypower import utils, make, routines # NOQA
6
- from ams.pypower.routines.opf import runopf, runuopf # NOQA
7
- from ams.pypower.routines import runpf # NOQA
8
- from ams.pypower.routines.cpf import runcpf # NOQA
ams/pypower/_compat.py DELETED
@@ -1,9 +0,0 @@
1
-
2
- """
3
- Compatibility helpers for older Python versions.
4
-
5
- """
6
- import sys
7
-
8
-
9
- PY2 = sys.version_info[0] == 2
@@ -1,8 +0,0 @@
1
- """
2
- Module for the core of PYPOWER.
3
- """
4
-
5
- from ams.pypower.core.ppoption import ppoption # NOQA
6
- from ams.pypower.core.pips import pips, pipsver, pipsopf_solver # NOQA
7
- from ams.pypower.core.ppver import ppver # NOQA
8
- from ams.pypower.core.solver import ipoptopf_solver # NOQA