ltbams 1.0.5__py3-none-any.whl → 1.0.7__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.
- ams/_version.py +3 -3
- ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
- ams/cases/5bus/pjm5bus_ev.xlsx +0 -0
- ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
- ams/cases/ieee14/ieee14_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
- ams/core/matprocessor.py +7 -16
- ams/core/service.py +4 -3
- ams/interface.py +17 -4
- ams/io/matpower.py +7 -0
- ams/models/__init__.py +1 -1
- ams/models/cost.py +2 -0
- ams/models/group.py +2 -2
- ams/models/line.py +2 -2
- ams/models/renewable/regc.py +1 -5
- ams/models/reserve.py +2 -2
- ams/models/static/gen.py +2 -2
- ams/models/static/pq.py +2 -2
- ams/models/timeslot.py +1 -1
- ams/routines/dcopf.py +6 -6
- ams/routines/dcopf2.py +2 -2
- ams/routines/dopf.py +10 -10
- ams/routines/ed.py +4 -6
- ams/routines/pflow.py +9 -10
- ams/routines/rted.py +20 -29
- ams/routines/uc.py +5 -7
- ams/shared.py +1 -1
- ams/system.py +11 -11
- docs/source/api.rst +2 -0
- docs/source/conf.py +1 -1
- docs/source/examples/index.rst +0 -4
- docs/source/release-notes.rst +18 -0
- {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/METADATA +1 -1
- {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/RECORD +48 -51
- tests/test_1st_system.py +31 -0
- tests/test_andes_mats.py +1 -1
- tests/test_case.py +54 -19
- tests/test_io.py +9 -0
- tests/test_rtn_ed.py +4 -4
- tests/test_rtn_rted.py +4 -4
- tests/test_rtn_uc.py +4 -4
- tests/test_service.py +2 -2
- ams/cases/5bus/pjm5bus_uced.json +0 -1062
- ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
- {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/WHEEL +0 -0
- {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/entry_points.txt +0 -0
- {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/top_level.txt +0 -0
docs/source/examples/index.rst
CHANGED
@@ -3,10 +3,6 @@
|
|
3
3
|
Examples
|
4
4
|
========
|
5
5
|
|
6
|
-
.. _`development demos`: https://github.com/CURENT/ams/tree/master/dev/demo
|
7
|
-
|
8
|
-
Refer to the development `development demos`_ for examples prior to preparing this section.
|
9
|
-
|
10
6
|
A collection of examples are presented to supplement the tutorial. The
|
11
7
|
examples below are identical to the Jupyter Notebook in the ``examples``
|
12
8
|
folder of the repository
|
docs/source/release-notes.rst
CHANGED
@@ -9,6 +9,24 @@ The APIs before v3.0.0 are in beta and may change without prior notice.
|
|
9
9
|
v1.0
|
10
10
|
==========
|
11
11
|
|
12
|
+
v1.0.7 (2024-04-14)
|
13
|
+
--------------------
|
14
|
+
|
15
|
+
- Address several wording issues in the documentation
|
16
|
+
- Switch to ``Area`` from ``Zone`` for zonal calculation
|
17
|
+
- Extend common parameters in groups ``StaticGen`` and ``StaticLoad`` with ``area``
|
18
|
+
- Set case ``pjm5bus_demo.xlsx`` as a all-inclusive case
|
19
|
+
- Include module ``MatProcessor`` in the API documentation
|
20
|
+
- Improve Line parameters correction in ``System.setup()``
|
21
|
+
- Make func ``interface._to_andes_pflow`` public
|
22
|
+
- Update case files
|
23
|
+
|
24
|
+
v1.0.6 (2024-04-10)
|
25
|
+
--------------------
|
26
|
+
|
27
|
+
- Enhance handling of Type 1 gencost: Automatically fallback to Type 2 gencost
|
28
|
+
- Add parameter correction for zero line angle difference
|
29
|
+
|
12
30
|
v1.0.5 (2024-04-09)
|
13
31
|
--------------------
|
14
32
|
|
@@ -1,29 +1,26 @@
|
|
1
1
|
ams/__init__.py,sha256=dKIwng8xES4NQHn6ZHy8RCKeXphN9z2wyfmbvniIEg0,351
|
2
2
|
ams/__main__.py,sha256=EB4GfGiKgvnQ_psNr0QwPoziYvjmGvQ2yVsBwQtfrLw,170
|
3
|
-
ams/_version.py,sha256=
|
3
|
+
ams/_version.py,sha256=OAPUdjEgjrXQonMYZMpBIDd9aovta238shZS3_AbAQ8,497
|
4
4
|
ams/cli.py,sha256=EyNFXn565gFCppTxpyTZviBdPgUuKtgAPZ4WE6xewRk,6164
|
5
|
-
ams/interface.py,sha256=
|
5
|
+
ams/interface.py,sha256=_aF2VrO_hmVrW56H_q4CYWJps63nWUswCd3AWUbPbE8,44880
|
6
6
|
ams/main.py,sha256=wzKLe_BeQAUyFh-U1cxQIOwr-rAJM8ppB3EEi6_v2tw,23607
|
7
7
|
ams/report.py,sha256=gUscOYpPjuPuruzIXAADaifIZv2BSjmP1oKCuHdD3Vw,11004
|
8
|
-
ams/shared.py,sha256=
|
9
|
-
ams/system.py,sha256=
|
10
|
-
ams/cases/5bus/pjm5bus_demo.xlsx,sha256=
|
11
|
-
ams/cases/5bus/
|
12
|
-
ams/cases/5bus/
|
13
|
-
ams/cases/5bus/pjm5bus_uced.xlsx,sha256=Fl-k3aXQjyfz8VWFmjH7T4NFfqp3uzBQSZqu1bU_LQg,28196
|
14
|
-
ams/cases/5bus/pjm5bus_uced_esd1.xlsx,sha256=I5_GsOBn2wTNSnv7hS1GTJfMqRjYyWCO37WA7GnX0V4,28063
|
15
|
-
ams/cases/5bus/pjm5bus_uced_ev.xlsx,sha256=onDf3fMOjVSBGhVOSZtv0FJ3cqMAEUCwxu4sqmr2AQg,29702
|
8
|
+
ams/shared.py,sha256=yaO4RUD0T-zCcZeML20vORcaf_dXiwMAvjTriXz1xtg,4159
|
9
|
+
ams/system.py,sha256=AW2_rMH0wjTuxhha87hQuyUCAllzWTfEsVBaTIiSAOg,25956
|
10
|
+
ams/cases/5bus/pjm5bus_demo.xlsx,sha256=OWIUprkg8_aQ_bTCaEFMl7Bhfa1R20zxAHXRQtXBix0,32607
|
11
|
+
ams/cases/5bus/pjm5bus_ev.xlsx,sha256=vR8dJv5jIxib1pgcMonhzvraoqZVJWhBSJdVXDL0qsI,19498
|
12
|
+
ams/cases/5bus/pjm5bus_jumper.xlsx,sha256=47QAol1RGz_aGvhV2emq9XCy_Db9Zca15_OMVAdFVR0,19332
|
16
13
|
ams/cases/ieee123/ieee123.xlsx,sha256=yWsEFN1BvcoBYX9hWdrenPC_qKQfXtZ4xhpwoIc2OSE,39223
|
17
14
|
ams/cases/ieee123/ieee123_regcv1.xlsx,sha256=dIygkiNGzo_RE0moMPFu-9Bt0uPDuAL9zYWAs6e8VSk,41678
|
18
15
|
ams/cases/ieee14/ieee14.json,sha256=bBy3i2jKqFNmnc_rmNOYvGm-SAW2T6wwvEQ-Hkj5Hkw,21400
|
19
16
|
ams/cases/ieee14/ieee14.raw,sha256=3occlj5Qw42YBVLxONVDIKLTQqHMizHrAfD7Xwzmyec,7935
|
20
17
|
ams/cases/ieee14/ieee14_conn.xlsx,sha256=GaaiIsrnS1aX0SRWL2EeCJgRMW9FW1qNoyo4pMZQsw8,19291
|
21
|
-
ams/cases/ieee14/ieee14_uced.xlsx,sha256=
|
18
|
+
ams/cases/ieee14/ieee14_uced.xlsx,sha256=Y2fUDF-pVOeB2m_raysXbkAEj11UgsXXss6NFF51JuE,33025
|
22
19
|
ams/cases/ieee39/ieee39.xlsx,sha256=Riz43xQSXi1L-Y9rJbQjuw8oXTnw4W6bGhm--45d-3Q,29465
|
23
|
-
ams/cases/ieee39/ieee39_uced.xlsx,sha256=
|
24
|
-
ams/cases/ieee39/ieee39_uced_esd1.xlsx,sha256=
|
25
|
-
ams/cases/ieee39/ieee39_uced_pvd1.xlsx,sha256=
|
26
|
-
ams/cases/ieee39/ieee39_uced_vis.xlsx,sha256=
|
20
|
+
ams/cases/ieee39/ieee39_uced.xlsx,sha256=1m-_8haVAIAcbZX0_aYgvI98XL8FAp871heeP6GNF1U,41696
|
21
|
+
ams/cases/ieee39/ieee39_uced_esd1.xlsx,sha256=Gftp12pPEFeDjM_wNcOmKDacUsNP6AAlklzXynyvx9o,40810
|
22
|
+
ams/cases/ieee39/ieee39_uced_pvd1.xlsx,sha256=b5GWo-daAaXy5Lc_qpwldDTtE1z554oCUMk-SsOrYx8,40750
|
23
|
+
ams/cases/ieee39/ieee39_uced_vis.xlsx,sha256=dS-Nz02spNlOpqvzHgVmZl3iDpn548g21X2qRSVTe_8,44924
|
27
24
|
ams/cases/matpower/benchmark.json,sha256=dAWT8wZZEZpMPj_tIsssubcYIlsE6vTHfXQQKQtKjNo,1205789
|
28
25
|
ams/cases/matpower/case118.m,sha256=vC5vIrS553ZXKIXuS1Dk9Ksu4MVXfpEm6G2QbxTEtfc,33696
|
29
26
|
ams/cases/matpower/case14.m,sha256=L_xOG3NK5sXpLb5otONgEO1pWku8xNBlx0xPvDn888E,4597
|
@@ -38,40 +35,40 @@ ams/cases/wecc/wecc.m,sha256=8Wqal6H5r1wNxLLQBCXo2V3v3JZY5IJDEkyrEGCrCWE,30498
|
|
38
35
|
ams/cases/wecc/wecc_uced.xlsx,sha256=R3tZgxEqz_ctKcjA1wwFecxn-QZXutvf7NzgnCg_078,94767
|
39
36
|
ams/core/__init__.py,sha256=OUJFLACc9Ggjvzi6DZfmfxrzciRcGtpLTsBfdbOUxGg,80
|
40
37
|
ams/core/documenter.py,sha256=FNkpiP65iO809B4Bgmp5C1QeJTQHi-sS9vTP7Wd9D8Q,23131
|
41
|
-
ams/core/matprocessor.py,sha256=
|
38
|
+
ams/core/matprocessor.py,sha256=3eEij-ul8Rx25ZwNbv66YEOKyUXB-fYO-ZQs5BpqmIU,26610
|
42
39
|
ams/core/model.py,sha256=vXLActAi9tLXRCNd5RrEMVWvF0Wt4mwltiRY5CjgrP4,10928
|
43
40
|
ams/core/param.py,sha256=LPH48xUHyqWqODD6IsiamUtkJDDSgGCEMAo6vroFoHE,11130
|
44
|
-
ams/core/service.py,sha256=
|
41
|
+
ams/core/service.py,sha256=Q4aeaYFWycIEH7I8DSO8Itah2CJxc3oAW46dtKCQEyA,28041
|
45
42
|
ams/core/symprocessor.py,sha256=HegjU_UnvWEny9kitI1su9J0WeFDjQnM4gNoeUGJ7qU,8428
|
46
43
|
ams/core/var.py,sha256=f48pzir4miBsB5sh6PwUsFe0LdNNEM-d3VufcjbUU0w,1591
|
47
44
|
ams/extension/__init__.py,sha256=5IFTNirDL0uDaUsg05_oociVT9VCy2rhPx1ad4LGveM,65
|
48
45
|
ams/extension/eva.py,sha256=wUF8RNxzwas2Q6_xD0k3EVWjmX4kxHmTSkv2inJzaUY,16342
|
49
46
|
ams/io/__init__.py,sha256=HLE3aozzXEx-6IBy8WTQVdSCpAZrrR9nX6UqaZ7okTw,3774
|
50
47
|
ams/io/json.py,sha256=IurwcZDuKczSbRTpcbQZiIi0ARCrMK6kJ0E3wS8ENy8,2585
|
51
|
-
ams/io/matpower.py,sha256=
|
48
|
+
ams/io/matpower.py,sha256=Oj3FW-eqcl3H5mnB0U5XG1mtCK0SaxVOkgRXaC6MIKA,14523
|
52
49
|
ams/io/psse.py,sha256=w5VKNE6enX0lfKwPI857PRtdpwN39R6IFRIcdbPSpOg,151
|
53
50
|
ams/io/pypower.py,sha256=E6_kSNfv1Yyv9oYfFebeNeKaQPlHyRZQpE8F6Y67g8Q,2583
|
54
51
|
ams/io/xlsx.py,sha256=7ATW1seyxsGn7d5p5IuSRFHcoCHVVjMu3E7mP1Mc74U,2460
|
55
|
-
ams/models/__init__.py,sha256=
|
52
|
+
ams/models/__init__.py,sha256=EGkViLkVX_We9FAGuEkgfleMNmPw_vGp2Nq1OQimL7U,691
|
56
53
|
ams/models/area.py,sha256=AKYU6aJQKsVWRZdvMO7yic-8wZ1GumSTQXgDg5L0THw,899
|
57
54
|
ams/models/bus.py,sha256=U0vSegkm-9fqPQS9KMJQU6gpIMX_1GK5O_dvRc8-0P0,1585
|
58
|
-
ams/models/cost.py,sha256=
|
59
|
-
ams/models/group.py,sha256=
|
55
|
+
ams/models/cost.py,sha256=rmGNj9ztMbqA-OIJj8fNNBh8bdYJSY9hk10vffgxc6k,5916
|
56
|
+
ams/models/group.py,sha256=EEB66FwLq6liC6lGHax3oXIFxlwdYb4JMeDLnbLg6j4,5618
|
60
57
|
ams/models/info.py,sha256=Oh0Xo5J4ZHBsNIkMOzIwv_DegsX1inyuv3Q5CpCfyQw,788
|
61
|
-
ams/models/line.py,sha256=
|
62
|
-
ams/models/reserve.py,sha256=
|
58
|
+
ams/models/line.py,sha256=dltKgVZdXj_kchA9QhHeyorYQKm_7PQW9B2qC_PTsKs,8084
|
59
|
+
ams/models/reserve.py,sha256=3BjWCyKrPL4CwTvmzRxk25H8Nkxh-Rz0Ne17I9Y2TUA,2816
|
63
60
|
ams/models/shunt.py,sha256=h5QV33EcCd86XRR0sMIzcO0PTeTirkWaxi8imPKzOi0,337
|
64
|
-
ams/models/timeslot.py,sha256=
|
61
|
+
ams/models/timeslot.py,sha256=XfXJukbQXTUawbsYI6BMLbytXNIe5VE2SQ5_t1Lc8_8,2001
|
65
62
|
ams/models/zone.py,sha256=b9DsXOsD9Dny-lCMAWwRpRpl7rYVa0ev180YwqFTaiA,1076
|
66
63
|
ams/models/distributed/__init__.py,sha256=3uiMHT2YRq79DXIB1jni6wP7dNoQMjU1bMTUpr4P6Rc,161
|
67
64
|
ams/models/distributed/esd1.py,sha256=A1qCLzaDtJVI-YoXJd6IRYtP_wp_Ajz2lfjFHvzqHkk,2130
|
68
65
|
ams/models/distributed/ev.py,sha256=mpEIGyG9jV1bXkRIXOkCck4hl5np3bfBKvs4ysxukdM,1978
|
69
66
|
ams/models/distributed/pvd1.py,sha256=KAOlXpZgT_w58xaGWjm5ht6ksac6eRhaqBFHK4EPRH8,1960
|
70
67
|
ams/models/renewable/__init__.py,sha256=7dZyRXbvBAHbLJeJssJ1hsOHj9Bgeg77kB5gcX_mBtg,118
|
71
|
-
ams/models/renewable/regc.py,sha256=
|
68
|
+
ams/models/renewable/regc.py,sha256=3J9alIGUn_GkibQ3-dKTylAOpNPzd5zpancPc79q9T4,3448
|
72
69
|
ams/models/static/__init__.py,sha256=lh5yR5Xb2unS4ndng-cLU1TAeoidu2s6VAVFLc3HUDU,96
|
73
|
-
ams/models/static/gen.py,sha256=
|
74
|
-
ams/models/static/pq.py,sha256=
|
70
|
+
ams/models/static/gen.py,sha256=SAaQD5_oOGFWa8NY8hbhsNqMQGHlToHdngEt_Xy5S3E,6685
|
71
|
+
ams/models/static/pq.py,sha256=a-z7-1Vegr3mPguRAdLqfJlwk5OG_Zpp8usfOzRAR30,2583
|
75
72
|
ams/opt/__init__.py,sha256=INsl8yxtOzTKqV9pzVxlL6RSGDRaUDwxpZMY1QROrF4,459
|
76
73
|
ams/opt/constraint.py,sha256=ERT9zwjQyGkvDo465Yd0wBexlIhjVmw0MyWq4BWnWoI,5534
|
77
74
|
ams/opt/exprcalc.py,sha256=oVtjNHzdWvYHV-8PdRehAxjledsQxpxatdNgMLeWS5o,3935
|
@@ -105,34 +102,34 @@ ams/pypower/routines/pflow.py,sha256=q5RFZ5XuB5YQZk1jpJ5aTUB3DfgPJEGsvWyLDNo5PJo
|
|
105
102
|
ams/routines/__init__.py,sha256=idfPyMhFr0hkUZjcAEQw14JA5zPHeFe3Vl3p4DCJ5d0,640
|
106
103
|
ams/routines/acopf.py,sha256=VZC3qs1G7zE--6XxE_wXv432nj3SV5hcrR8967ogYlg,3835
|
107
104
|
ams/routines/cpf.py,sha256=xsrUVjtGQ1b7UCXpwwYihqzTeEGJJKnO9LlX1Tz9Tks,1552
|
108
|
-
ams/routines/dcopf.py,sha256=
|
109
|
-
ams/routines/dcopf2.py,sha256=
|
105
|
+
ams/routines/dcopf.py,sha256=6ETgopvX9tSFF3kssHsBchAttcyo2DTG-eIqjvlk0WY,11087
|
106
|
+
ams/routines/dcopf2.py,sha256=sDCP8zqYHDh7s7p9SX6G8QhMfIxCg3VPYJn6r3pRKyo,3620
|
110
107
|
ams/routines/dcpf.py,sha256=SswIb7t37ulxe1rjroA7oSa6z01kYjO-x8P1WWOUutM,8237
|
111
108
|
ams/routines/dcpf0.py,sha256=gPPfSUzzJbHz_gAEFVyZ3iriEHvLJ-OGpTzhza8FOkA,6811
|
112
|
-
ams/routines/dopf.py,sha256=
|
113
|
-
ams/routines/ed.py,sha256=
|
114
|
-
ams/routines/pflow.py,sha256=
|
109
|
+
ams/routines/dopf.py,sha256=8D36-FkPORYGaMnwGTqwz8HxAXk5ywo3mk8NlGq327g,6289
|
110
|
+
ams/routines/ed.py,sha256=i0Y3COlz4oAf8u8JxqfuQWn6WxjJzb59weLedow0Y_g,11777
|
111
|
+
ams/routines/pflow.py,sha256=CZAiwnZYhEmSU7Exn9CK6rFxWvjpvv1Py-pLegWJ71s,9419
|
115
112
|
ams/routines/pflow0.py,sha256=xocLw94jcl2hh3WwnS_mdUW6dsm3EVjvZptVb814GdE,3521
|
116
113
|
ams/routines/routine.py,sha256=I98uMg6QCt6bipNYwdgtNMbdw_gWCSNVGokS4UmvkSk,35932
|
117
|
-
ams/routines/rted.py,sha256=
|
114
|
+
ams/routines/rted.py,sha256=GOHRxo0-HS5HhwQg8lv7-2VcGr_M_TdUvvomgJ31fDQ,22070
|
118
115
|
ams/routines/type.py,sha256=lvTWSnCYIbRJXIm3HX6jA0Hv-WWYusTOUPfoW8DITlU,3877
|
119
|
-
ams/routines/uc.py,sha256=
|
116
|
+
ams/routines/uc.py,sha256=yPi16FDXugT7Jb7ZwXPSP7NpGyGZ3jvQtCWDI9hAnis,15632
|
120
117
|
ams/utils/__init__.py,sha256=2hAQmWRgmnE-bCGT9cJoW9FkPDMGRiGkbBcUgj-bgjI,122
|
121
118
|
ams/utils/misc.py,sha256=Y6tPKpUKJa7bL9alroJuG2UNW9vdQjnfAmKb2EbIls8,2027
|
122
119
|
ams/utils/paths.py,sha256=D9VNUwtJtHy-8PFzMnxtQ9HpkOXT6vdVOjfOTuoKGKw,6699
|
123
120
|
docs/Makefile,sha256=UKXBFAbKGPt1Xw9J84343v0Mh8ylAZ-tE0uCd74DrQU,725
|
124
121
|
docs/make.bat,sha256=9UgKGb4SdP006622fJiFxeFT1BeycYAs6hDbV1xwPy8,804
|
125
|
-
docs/source/api.rst,sha256=
|
126
|
-
docs/source/conf.py,sha256=
|
122
|
+
docs/source/api.rst,sha256=UR7nboMuNl6XDbdozIf7oo_Il1XntogFk66pHSzTFug,1443
|
123
|
+
docs/source/conf.py,sha256=UyoWogZTUNSJU7pQS_JaR28nKddW94zr01LYoIciZZw,6688
|
127
124
|
docs/source/genmodelref.py,sha256=IhmF7bDw8BXPvLD8V3WjQNrfc-H07r5iS-_4DHbbp-8,1420
|
128
125
|
docs/source/genroutineref.py,sha256=0JyMc2kV5bWrWbSoO6d7o4QgDgG8mVy3JGGQWacJypw,1064
|
129
126
|
docs/source/index.rst,sha256=N5phQS5RIyYs-NZo_5yYB8LjvHzOKLeXzRA-M8i-g3Q,2688
|
130
|
-
docs/source/release-notes.rst,sha256=
|
127
|
+
docs/source/release-notes.rst,sha256=KHsxEcYBAKMF19k9sl6FyO5Et4ecRutohZvkC6vr1PA,13787
|
131
128
|
docs/source/_templates/autosummary/base.rst,sha256=zl3U4baR4a6YjsHyT-x9zCOrHwKZOVUdWn1NPX2u3bc,106
|
132
129
|
docs/source/_templates/autosummary/class.rst,sha256=Hv_igCsLsUpM62_zN0nqj6FSfKnS5xLyu8ZldMbfOAk,668
|
133
130
|
docs/source/_templates/autosummary/module.rst,sha256=YdbpCudOrEU-JbuSlzGvcOI2hn_KrCM6FW5HcGqkaEE,1113
|
134
131
|
docs/source/_templates/autosummary/module_toctree.rst,sha256=sg30OdqFDLyo8Y3hl9V-s2BXb1bzcjjqqWaWi-C3qFM,1126
|
135
|
-
docs/source/examples/index.rst,sha256=
|
132
|
+
docs/source/examples/index.rst,sha256=6VT3wVeKk8BWf6pJQtZrmcumW_3jI8esdlzja8scUCA,742
|
136
133
|
docs/source/getting_started/copyright.rst,sha256=XBfWvLm7T8p-zh1jkDy1kODvTDcH73AEV_vkiN32A2o,715
|
137
134
|
docs/source/getting_started/index.rst,sha256=mcp1NdUwbPoNzpn7Owf5Qzfd6J_--ToU52PjmrbwjBY,1512
|
138
135
|
docs/source/getting_started/install.rst,sha256=gE4L0ApiC_mwbjbYtkGW4ilyIAu_Jn-VIeoYlgRiOIw,7268
|
@@ -157,15 +154,15 @@ docs/source/modeling/model.rst,sha256=j7OSvoXnDht6rGpgwPiJklsCWrebfx4DxIN-G8r6iF
|
|
157
154
|
docs/source/modeling/routine.rst,sha256=BkUE3y5L1lA7LP9Nyzc4zzY-tF3t4k7egBE188kybHY,4286
|
158
155
|
docs/source/modeling/system.rst,sha256=NMOPNMOKG1_dRyNPPx-MiCKbbpadxWJxGyU6geRUsvQ,1374
|
159
156
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
|
-
tests/test_1st_system.py,sha256=
|
157
|
+
tests/test_1st_system.py,sha256=BLlJsHnEBeLfiMJvIjyPguMikfDjqGSzfn8cZ-tqCVc,1900
|
161
158
|
tests/test_addressing.py,sha256=MIT713KCqMg0h2o4rBDZsGUrpGadmMlXnrrdq-wB77E,1364
|
162
|
-
tests/test_andes_mats.py,sha256=
|
163
|
-
tests/test_case.py,sha256=
|
159
|
+
tests/test_andes_mats.py,sha256=O4nCthteh7Y91KsWnq_EcplvsIN8DY-lgEGkH5a7iOc,1669
|
160
|
+
tests/test_case.py,sha256=8Jn1hwrB72l6-rqbCWTGJOcxicu4GHVDzGsLLxjDFos,8833
|
164
161
|
tests/test_cli.py,sha256=TtCGBy2e7Ll_2gJTFo9juZtzhaakho_MqkcqhG2w2dk,870
|
165
162
|
tests/test_export_csv.py,sha256=rZCafNrVbwDo7ZNC4MrL1gIcrU0c6YVw2q-QGL3O4K4,2921
|
166
163
|
tests/test_group.py,sha256=Tq0s9gtenqrv4ws5YNzWxbiF4WgyhtMEAXZfJtew6M4,2699
|
167
164
|
tests/test_interface.py,sha256=lXKR8OAsGIg5dV2Uj0UwGAl69hKnc_7EtCYvpP_0rrU,8157
|
168
|
-
tests/test_io.py,sha256=
|
165
|
+
tests/test_io.py,sha256=LaNkRXZaItAFHqqXs6CC5iaxTMXiDEFGbwYODcOHPWc,1416
|
169
166
|
tests/test_jumper.py,sha256=bdOknplEGnO_tiJc7p3xQvgTe2b6Dz53bOgbFaXKMAI,537
|
170
167
|
tests/test_known_good.py,sha256=NBrlAxnVMxIHXR2cWps-Kwjh36fiU4Y-eupspZkM0ks,9670
|
171
168
|
tests/test_matp.py,sha256=LkjhqxSFr6oY_ENpduDQ77rhLLBl6RzIHZ2d0m_8i-8,17262
|
@@ -178,13 +175,13 @@ tests/test_routine.py,sha256=gblLHBQ3DJgYiSGsqGdIGnn-CuEZAEnq9CqhqN5m608,6234
|
|
178
175
|
tests/test_rtn_dcopf.py,sha256=LOfAVFzl2t6oTqTmWhmstu1j9FnpzHxdrplbmb3Y6Mc,3660
|
179
176
|
tests/test_rtn_dcopf2.py,sha256=g0MOW8J6WPJPQAV3Xwufa3dWEEeH-cQDErzvb-cq8lE,3747
|
180
177
|
tests/test_rtn_dcpf.py,sha256=QC6F_4LOZ7mrWOEM3s6a6j-eUDM_n49MQouPIR6fzR0,2555
|
181
|
-
tests/test_rtn_ed.py,sha256=
|
178
|
+
tests/test_rtn_ed.py,sha256=xTtCe_yepvtk1yINq01vmGMhEE8E5ORk7yPZvaydUWA,10189
|
182
179
|
tests/test_rtn_pflow.py,sha256=aDL5Ewm6lWqpdHqIIu-DTllhXzt4bMjsLJaKbJa8sXQ,6990
|
183
|
-
tests/test_rtn_rted.py,sha256=
|
184
|
-
tests/test_rtn_uc.py,sha256=
|
185
|
-
tests/test_service.py,sha256=
|
186
|
-
ltbams-1.0.
|
187
|
-
ltbams-1.0.
|
188
|
-
ltbams-1.0.
|
189
|
-
ltbams-1.0.
|
190
|
-
ltbams-1.0.
|
180
|
+
tests/test_rtn_rted.py,sha256=1Vd4JCX3sfLnuXXzuUGFsEPTtqmdaDzDXpBcAQwnDf0,9785
|
181
|
+
tests/test_rtn_uc.py,sha256=8KrqxOxW6tiN4Fxl417NyHJCgdZwXh2ioX0mQbHuEgU,8302
|
182
|
+
tests/test_service.py,sha256=6IP6CAH2xHxGHZM4-R8LjZxVJ2L10LcGaPDyRIqKLmc,2438
|
183
|
+
ltbams-1.0.7.dist-info/METADATA,sha256=Wd2Mlqkkwsqm2zA1DNsDL-RS55TJe8Ptod_oAWB55O8,14023
|
184
|
+
ltbams-1.0.7.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
185
|
+
ltbams-1.0.7.dist-info/entry_points.txt,sha256=FA56FlhO_yVNeEf810SrorVQb7_Xsmo3_EW-W-ijUfA,37
|
186
|
+
ltbams-1.0.7.dist-info/top_level.txt,sha256=pyKDqG2kj13F9-BYd_wkruRdBSqLXw8Nwc-cmljqrxg,15
|
187
|
+
ltbams-1.0.7.dist-info/RECORD,,
|
tests/test_1st_system.py
CHANGED
@@ -31,3 +31,34 @@ class TestCodegen(unittest.TestCase):
|
|
31
31
|
docum._service_doc(max_width=78, export=export)
|
32
32
|
docum._param_doc(max_width=78, export=export)
|
33
33
|
docum.config.doc(max_width=78, export=export)
|
34
|
+
|
35
|
+
|
36
|
+
class TestParamCorrection(unittest.TestCase):
|
37
|
+
"""
|
38
|
+
Test parameter correction.
|
39
|
+
"""
|
40
|
+
|
41
|
+
def setUp(self) -> None:
|
42
|
+
"""
|
43
|
+
Test setup.
|
44
|
+
"""
|
45
|
+
self.ss = ams.load(ams.get_case('matpower/case14.m'),
|
46
|
+
setup=False, no_output=True, default_config=True,)
|
47
|
+
|
48
|
+
def test_line_correction(self):
|
49
|
+
"""
|
50
|
+
Test line correction.
|
51
|
+
"""
|
52
|
+
self.ss.Line.rate_a.v[5] = 0.0
|
53
|
+
self.ss.Line.rate_b.v[6] = 0.0
|
54
|
+
self.ss.Line.rate_c.v[7] = 0.0
|
55
|
+
self.ss.Line.amax.v[8] = 0.0
|
56
|
+
self.ss.Line.amin.v[9] = 0.0
|
57
|
+
|
58
|
+
self.ss.setup()
|
59
|
+
|
60
|
+
self.assertIsNot(self.ss.Line.rate_a.v[5], 0.0)
|
61
|
+
self.assertIsNot(self.ss.Line.rate_b.v[6], 0.0)
|
62
|
+
self.assertIsNot(self.ss.Line.rate_c.v[7], 0.0)
|
63
|
+
self.assertIsNot(self.ss.Line.amax.v[8], 0.0)
|
64
|
+
self.assertIsNot(self.ss.Line.amin.v[9], 0.0)
|
tests/test_andes_mats.py
CHANGED
@@ -19,7 +19,7 @@ class TestMatrices(unittest.TestCase):
|
|
19
19
|
if parse_version(andes_version) < parse_version('1.9.2'):
|
20
20
|
raise unittest.SkipTest("Requires ANDES version >= 1.9.2")
|
21
21
|
|
22
|
-
sp = ams.load(ams.get_case('
|
22
|
+
sp = ams.load(ams.get_case('matpower/case14.m'),
|
23
23
|
setup=True, no_output=True, default_config=True,)
|
24
24
|
sa = sp.to_andes(setup=True, no_output=True, default_config=True,)
|
25
25
|
|
tests/test_case.py
CHANGED
@@ -14,7 +14,7 @@ class Test5Bus(unittest.TestCase):
|
|
14
14
|
|
15
15
|
def setUp(self) -> None:
|
16
16
|
self.ss = ams.main.load(
|
17
|
-
get_case("5bus/
|
17
|
+
get_case("5bus/pjm5bus_demo.xlsx"),
|
18
18
|
default_config=True,
|
19
19
|
no_output=True,
|
20
20
|
)
|
@@ -28,25 +28,33 @@ class Test5Bus(unittest.TestCase):
|
|
28
28
|
self.assertTrue("Bus" in self.ss.models)
|
29
29
|
self.assertTrue("PQ" in self.ss.models)
|
30
30
|
|
31
|
+
nBus = 5
|
32
|
+
nGen = 5
|
33
|
+
nPQ = 3
|
34
|
+
nArea = 3
|
35
|
+
nZone = 5
|
36
|
+
nDT = 24
|
31
37
|
# --- test device counts
|
32
|
-
self.assertEqual(self.ss.Bus.n,
|
33
|
-
self.assertEqual(self.ss.PQ.n,
|
34
|
-
self.assertEqual(self.ss.PV.n,
|
38
|
+
self.assertEqual(self.ss.Bus.n, nBus)
|
39
|
+
self.assertEqual(self.ss.PQ.n, nPQ)
|
40
|
+
self.assertEqual(self.ss.PV.n, 4)
|
35
41
|
self.assertEqual(self.ss.Slack.n, 1)
|
36
42
|
self.assertEqual(self.ss.Line.n, 7)
|
37
|
-
self.assertEqual(self.ss.Zone.n,
|
38
|
-
self.assertEqual(self.ss.
|
39
|
-
self.assertEqual(self.ss.
|
40
|
-
self.assertEqual(self.ss.
|
41
|
-
self.assertEqual(self.ss.
|
42
|
-
self.assertEqual(self.ss.
|
43
|
-
self.assertEqual(self.ss.
|
44
|
-
self.assertEqual(self.ss.
|
45
|
-
self.assertEqual(self.ss.
|
46
|
-
self.assertEqual(self.ss.
|
43
|
+
self.assertEqual(self.ss.Zone.n, nZone)
|
44
|
+
self.assertEqual(self.ss.Area.n, nArea)
|
45
|
+
self.assertEqual(self.ss.SFR.n, nArea)
|
46
|
+
self.assertEqual(self.ss.SR.n, nArea)
|
47
|
+
self.assertEqual(self.ss.NSR.n, nArea)
|
48
|
+
self.assertEqual(self.ss.GCost.n, nGen)
|
49
|
+
self.assertEqual(self.ss.DCost.n, nPQ)
|
50
|
+
self.assertEqual(self.ss.SFRCost.n, nGen)
|
51
|
+
self.assertEqual(self.ss.SRCost.n, nGen)
|
52
|
+
self.assertEqual(self.ss.NSRCost.n, nGen)
|
53
|
+
self.assertEqual(self.ss.EDTSlot.n, nDT)
|
54
|
+
self.assertEqual(self.ss.UCTSlot.n, nDT)
|
47
55
|
|
48
56
|
# test idx values
|
49
|
-
self.assertSequenceEqual(self.ss.Bus.idx.v, [
|
57
|
+
self.assertSequenceEqual(self.ss.Bus.idx.v, [0, 1, 2, 3, 4])
|
50
58
|
self.assertSequenceEqual(self.ss.Area.idx.v, [1, 2, 3])
|
51
59
|
|
52
60
|
# test cache refreshing
|
@@ -87,9 +95,9 @@ class Test5Bus(unittest.TestCase):
|
|
87
95
|
"""
|
88
96
|
|
89
97
|
self.ss.GCost.alter("c1", ['GCost_1', 'GCost_2'], [1500., 3100.])
|
90
|
-
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1])
|
98
|
+
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1, 0.01])
|
91
99
|
self.ss.ACOPF.run()
|
92
|
-
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1])
|
100
|
+
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1, 0.01])
|
93
101
|
|
94
102
|
def test_alter_param_after_routine(self):
|
95
103
|
"""
|
@@ -98,9 +106,9 @@ class Test5Bus(unittest.TestCase):
|
|
98
106
|
|
99
107
|
self.ss.ACOPF.run()
|
100
108
|
self.ss.GCost.alter("c1", ['GCost_1', 'GCost_2'], [1500., 3100.])
|
101
|
-
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1])
|
109
|
+
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1, 0.01])
|
102
110
|
self.ss.ACOPF.run()
|
103
|
-
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1])
|
111
|
+
np.testing.assert_array_equal(self.ss.GCost.c1.v, [1500., 3100., 0.4, 0.1, 0.01])
|
104
112
|
|
105
113
|
def test_multiple_disconnected_line(self):
|
106
114
|
"""
|
@@ -264,3 +272,30 @@ class TestCaseInit(unittest.TestCase):
|
|
264
272
|
|
265
273
|
self.assertEqual(ss.EDES.exit_code, 0, "Exit code is not 0.")
|
266
274
|
self.assertEqual(ss.UCES.exit_code, 0, "Exit code is not 0.")
|
275
|
+
|
276
|
+
|
277
|
+
class TestCase14(unittest.TestCase):
|
278
|
+
"""
|
279
|
+
Test parameter correction using case14.m
|
280
|
+
"""
|
281
|
+
|
282
|
+
def test_parameter_correction(self):
|
283
|
+
"""
|
284
|
+
Test if the parameter correction works.
|
285
|
+
"""
|
286
|
+
mpc = ams.io.matpower.m2mpc(get_case("matpower/case14.m"))
|
287
|
+
mpc['branch'][:, 11] = 0.0
|
288
|
+
mpc['branch'][:, 12] = 0.0
|
289
|
+
|
290
|
+
ss = ams.system.System()
|
291
|
+
ams.io.matpower.mpc2system(mpc, ss)
|
292
|
+
ss.setup()
|
293
|
+
|
294
|
+
# line rate
|
295
|
+
np.testing.assert_array_less(0.0, ss.Line.rate_a.v)
|
296
|
+
np.testing.assert_array_less(0.0, ss.Line.rate_b.v)
|
297
|
+
np.testing.assert_array_less(0.0, ss.Line.rate_c.v)
|
298
|
+
|
299
|
+
# line angle difference
|
300
|
+
np.testing.assert_array_less(0.0, ss.Line.amax.v)
|
301
|
+
np.testing.assert_array_less(ss.Line.amin.v, 0.0)
|
tests/test_io.py
CHANGED
@@ -30,3 +30,12 @@ class TestMATPOWER(unittest.TestCase):
|
|
30
30
|
# In case14.m, the gencost has type 2 cost model, with 3 parameters.
|
31
31
|
np.testing.assert_array_less(np.zeros(system14.StaticGen.n),
|
32
32
|
system14.GCost.c2.v,)
|
33
|
+
|
34
|
+
def test_gencost1(self):
|
35
|
+
"""Test when gencost is type 1."""
|
36
|
+
mpcgc1 = self.mpc14.copy()
|
37
|
+
mpcgc1['gencost'] = np.repeat(np.array([[1, 0, 0, 3, 0.01, 40, 0]]), 5, axis=0)
|
38
|
+
|
39
|
+
system = ams.system.System()
|
40
|
+
ams.io.matpower.mpc2system(mpcgc1, system)
|
41
|
+
self.assertEqual(system.GCost.n, 5)
|
tests/test_rtn_ed.py
CHANGED
@@ -193,7 +193,7 @@ class TestEDES(unittest.TestCase):
|
|
193
193
|
"""
|
194
194
|
|
195
195
|
def setUp(self) -> None:
|
196
|
-
self.ss = ams.load(ams.get_case("5bus/
|
196
|
+
self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.xlsx"),
|
197
197
|
setup=True, default_config=True, no_output=True)
|
198
198
|
# decrease load first
|
199
199
|
self.ss.PQ.set(src='p0', attr='v', idx=['PQ_1', 'PQ_2'], value=[0.3, 0.3])
|
@@ -245,14 +245,14 @@ class TestEDES(unittest.TestCase):
|
|
245
245
|
"""
|
246
246
|
Test line tripping.
|
247
247
|
"""
|
248
|
-
self.ss.Line.set(src='u', attr='v', idx=
|
248
|
+
self.ss.Line.set(src='u', attr='v', idx='Line_3', value=0)
|
249
249
|
self.ss.EDES.run()
|
250
250
|
self.assertTrue(self.ss.EDES.converged, "EDES did not converge!")
|
251
|
-
plf_l3 = self.ss.EDES.get(src='plf', attr='v', idx=
|
251
|
+
plf_l3 = self.ss.EDES.get(src='plf', attr='v', idx='Line_3')
|
252
252
|
np.testing.assert_almost_equal(np.zeros_like(plf_l3),
|
253
253
|
plf_l3, decimal=6)
|
254
254
|
|
255
|
-
self.ss.Line.alter(src='u', idx=
|
255
|
+
self.ss.Line.alter(src='u', idx='Line_3', value=1)
|
256
256
|
|
257
257
|
@skip_unittest_without_MISOCP
|
258
258
|
def test_set_load(self):
|
tests/test_rtn_rted.py
CHANGED
@@ -203,7 +203,7 @@ class TestRTEDES(unittest.TestCase):
|
|
203
203
|
"""
|
204
204
|
|
205
205
|
def setUp(self) -> None:
|
206
|
-
self.ss = ams.load(ams.get_case("5bus/
|
206
|
+
self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.xlsx"),
|
207
207
|
setup=True, default_config=True, no_output=True)
|
208
208
|
# decrease load first
|
209
209
|
self.ss.PQ.set(src='p0', attr='v', idx=['PQ_1', 'PQ_2'], value=[0.3, 0.3])
|
@@ -237,16 +237,16 @@ class TestRTEDES(unittest.TestCase):
|
|
237
237
|
"""
|
238
238
|
Test line tripping.
|
239
239
|
"""
|
240
|
-
self.ss.Line.set(src='u', attr='v', idx=
|
240
|
+
self.ss.Line.set(src='u', attr='v', idx='Line_3', value=0)
|
241
241
|
|
242
242
|
self.ss.RTEDES.update()
|
243
243
|
self.ss.RTEDES.run()
|
244
244
|
self.assertTrue(self.ss.RTEDES.converged, "RTEDES did not converge under line trip!")
|
245
|
-
self.assertAlmostEqual(self.ss.RTEDES.get(src='plf', attr='v', idx=
|
245
|
+
self.assertAlmostEqual(self.ss.RTEDES.get(src='plf', attr='v', idx='Line_3'),
|
246
246
|
0, places=6,
|
247
247
|
msg="Line trip does not take effect!")
|
248
248
|
|
249
|
-
self.ss.Line.alter(src='u', idx=
|
249
|
+
self.ss.Line.alter(src='u', idx='Line_3', value=1)
|
250
250
|
|
251
251
|
@skip_unittest_without_MISOCP
|
252
252
|
def test_set_load(self):
|
tests/test_rtn_uc.py
CHANGED
@@ -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/
|
176
|
+
self.ss = ams.load(ams.get_case("5bus/pjm5bus_demo.xlsx"),
|
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])
|
@@ -236,13 +236,13 @@ class TestUCES(unittest.TestCase):
|
|
236
236
|
"""
|
237
237
|
Test line tripping.
|
238
238
|
"""
|
239
|
-
self.ss.Line.set(src='u', attr='v', idx=
|
239
|
+
self.ss.Line.set(src='u', attr='v', idx='Line_3', value=0)
|
240
240
|
self.ss.UCES.update()
|
241
241
|
|
242
242
|
self.ss.UCES.run()
|
243
243
|
self.assertTrue(self.ss.UCES.converged, "UCES did not converge under line trip!")
|
244
|
-
plf_l3 = self.ss.UCES.get(src='plf', attr='v', idx=
|
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),
|
246
246
|
plf_l3, decimal=6)
|
247
247
|
|
248
|
-
self.ss.Line.alter(src='u', idx=
|
248
|
+
self.ss.Line.alter(src='u', idx='Line_3', value=1)
|
tests/test_service.py
CHANGED
@@ -63,9 +63,9 @@ class TestService(unittest.TestCase):
|
|
63
63
|
"""
|
64
64
|
Test `ZonalSum`.
|
65
65
|
"""
|
66
|
-
ds = ZonalSum(u=self.ss.RTED.zd, zone="
|
66
|
+
ds = ZonalSum(u=self.ss.RTED.zd, zone="Area",
|
67
67
|
name="ds", tex_name=r"S_{d}",
|
68
|
-
info="Sum pl vector in shape of
|
68
|
+
info="Sum pl vector in shape of area",)
|
69
69
|
ds.rtn = self.ss.RTED
|
70
70
|
# check if the shape is correct
|
71
71
|
np.testing.assert_array_equal(ds.v.shape, (self.nR, self.nD))
|