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.
Files changed (52) hide show
  1. ams/_version.py +3 -3
  2. ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
  3. ams/cases/5bus/pjm5bus_ev.xlsx +0 -0
  4. ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
  5. ams/cases/ieee14/ieee14_uced.xlsx +0 -0
  6. ams/cases/ieee39/ieee39_uced.xlsx +0 -0
  7. ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
  8. ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
  9. ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
  10. ams/core/matprocessor.py +7 -16
  11. ams/core/service.py +4 -3
  12. ams/interface.py +17 -4
  13. ams/io/matpower.py +7 -0
  14. ams/models/__init__.py +1 -1
  15. ams/models/cost.py +2 -0
  16. ams/models/group.py +2 -2
  17. ams/models/line.py +2 -2
  18. ams/models/renewable/regc.py +1 -5
  19. ams/models/reserve.py +2 -2
  20. ams/models/static/gen.py +2 -2
  21. ams/models/static/pq.py +2 -2
  22. ams/models/timeslot.py +1 -1
  23. ams/routines/dcopf.py +6 -6
  24. ams/routines/dcopf2.py +2 -2
  25. ams/routines/dopf.py +10 -10
  26. ams/routines/ed.py +4 -6
  27. ams/routines/pflow.py +9 -10
  28. ams/routines/rted.py +20 -29
  29. ams/routines/uc.py +5 -7
  30. ams/shared.py +1 -1
  31. ams/system.py +11 -11
  32. docs/source/api.rst +2 -0
  33. docs/source/conf.py +1 -1
  34. docs/source/examples/index.rst +0 -4
  35. docs/source/release-notes.rst +18 -0
  36. {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/METADATA +1 -1
  37. {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/RECORD +48 -51
  38. tests/test_1st_system.py +31 -0
  39. tests/test_andes_mats.py +1 -1
  40. tests/test_case.py +54 -19
  41. tests/test_io.py +9 -0
  42. tests/test_rtn_ed.py +4 -4
  43. tests/test_rtn_rted.py +4 -4
  44. tests/test_rtn_uc.py +4 -4
  45. tests/test_service.py +2 -2
  46. ams/cases/5bus/pjm5bus_uced.json +0 -1062
  47. ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
  48. ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
  49. ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
  50. {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/WHEEL +0 -0
  51. {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/entry_points.txt +0 -0
  52. {ltbams-1.0.5.dist-info → ltbams-1.0.7.dist-info}/top_level.txt +0 -0
@@ -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
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ltbams
3
- Version: 1.0.5
3
+ Version: 1.0.7
4
4
  Summary: Python software for scheduling modeling and co-simulation with dynamics.
5
5
  Home-page: https://github.com/CURENT/ams
6
6
  Author: Jinning Wang
@@ -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=fHaf3d1VKT7Y8k0GYj2TxX2ZeGzQ92qYr2or0jwPTXM,497
3
+ ams/_version.py,sha256=OAPUdjEgjrXQonMYZMpBIDd9aovta238shZS3_AbAQ8,497
4
4
  ams/cli.py,sha256=EyNFXn565gFCppTxpyTZviBdPgUuKtgAPZ4WE6xewRk,6164
5
- ams/interface.py,sha256=PCR9geO-pvCxXxljWP4u3M-BAdVD5DjA3xvf338g9x8,44487
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=Zdy4-kHKc0_3CzyZKmGyCvpmrJz4Wzs9qnFlk8eyzq0,4159
9
- ams/system.py,sha256=PbJE5JPc9_O8cXTC10HPdvlD6MyxuL8z6q9dxKHWtCc,25917
10
- ams/cases/5bus/pjm5bus_demo.xlsx,sha256=srKTX4AkDRUVg_ygChyrQjeX7o0KKPJ9q9zU69xJqdU,31112
11
- ams/cases/5bus/pjm5bus_jumper.xlsx,sha256=IfcSZ3V2ZgfFqpaPMBMqitUQMgoxKRnyFyMEtqdeysI,28375
12
- ams/cases/5bus/pjm5bus_uced.json,sha256=0RvkZwZwzXKqr8y9shjEr3qCPGlrBrh6VpGhvYa4pMM,18256
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=QeGO6tGiv2gdgJQe6SEiqiwf4hsgKqChgY79Suf04Nc,33043
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=wHz2mUU67VMgxj0v5u0L0Dqy7dhk9yAanOE0_ni4MDQ,41644
24
- ams/cases/ieee39/ieee39_uced_esd1.xlsx,sha256=Ar-XFwQE_4x2Uo2NKw2fPqveAmcciDS8dDqdAr1tVPM,40797
25
- ams/cases/ieee39/ieee39_uced_pvd1.xlsx,sha256=X7PhzfqdLOcfPqcGdxA_Tly1jVdIM0QOl4GksYQlK2I,40737
26
- ams/cases/ieee39/ieee39_uced_vis.xlsx,sha256=P2iKKPpHfieNnNtigCIXNuXgsVumhUs6-au-dVEpaEI,44899
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=fkfEE2-PcIuwgeDujyWdW-KNf-JUFhIAOkoWqMAHbnw,26700
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=bCeBKoVBd42UVGvjP1dU6DpP6LBW5FGWq3bbOHYSlCI,27984
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=40Ga2TPs57Kysm-dirjos-rnZ47aZHMfj7FXpd6eB08,14064
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=Y1Igq3AByDI6QjqjWxNDMeTAa2-fdnk2ZX5HtdJO6lY,703
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=xD_UQCnc4WvVH_sU-JUKi6vgY2h7iFa3cLJZVH4GGx0,5860
59
- ams/models/group.py,sha256=byAp-sfsS7WhCL8L9y6wqljO6zO_u_JomgIv4syvbJA,5602
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=6t0_Y6rlD8riHiljThwluiZMtshu9kgd9ti_Px81KgU,8083
62
- ams/models/reserve.py,sha256=6sOPBtPklvS2EIUyWwmUZ5XPXzsx-EWTieQp9noa4WM,2817
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=WKIso2br8K4Ev4_ANzQnuUIYPBgo2LYxAttvez4txKI,1972
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=zoYZWuEWtIPl1rDwveLQdrZlBz1zkfa46xz-dBn8Iys,3683
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=CZepvqhjmlGWkUwP3goiimvhZx04L2ADzzx1aVbfdDg,6685
74
- ams/models/static/pq.py,sha256=Ky6vcc_G7K46azn4-xBJD-6Rht_3y6r7gkSpFNXWIx0,2583
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=6qI1nDf8LepgaHL9HnP1y6a5lGsJAWKQaL7wD7WLbJU,11070
109
- ams/routines/dcopf2.py,sha256=EtzA1ZQVO4KGVoRdhagV8aIipecWJnXvHYeYTCfgMos,3620
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=yIn4tdxgb_phdvlHn4kMT9dUP0c_0Lu5kFfyCAUG-tk,6241
113
- ams/routines/ed.py,sha256=eNo-edm8qNrQCl9aHqBoIPDF6ltH65L7IobghoK7uH4,11646
114
- ams/routines/pflow.py,sha256=I4lyXDyprkg_0j3gY5bdkkBA5ImSjnouMzRnuG1yKb8,9435
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=BWq2XCYP99siBiLNMF0oKiUmxsCAypBPYxTNeCsjz8Y,22197
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=kkYicT1zjD_JmL3HQFe4iBedri1OAHO9-skzjiW21Fc,15625
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=gDix4Vg_SNUqtijlSmfBktpOrWQMdaj4xsBKrO22dfw,1402
126
- docs/source/conf.py,sha256=ozLsGWVbFOZZfruXlvL6ou8i-R8kyCYZedtDzSQVRoU,6688
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=se_oKj_P3jyvKEDmnttAv78pmSpvKBjpZLMUg7B8_Q0,13125
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=6yYgETu_4VQ9x8Jmff5i6pXX4_DLrLpSIRIidhVvqPA,912
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=5PQgI1DeM5yQTFagOPCMbk0eItTH6-M6FC8TMCv-CRY,1007
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=3JQ2xK5B4s42EHxjCcUjJbt1VY3rZPwjkq81ubFlsLQ,1674
163
- tests/test_case.py,sha256=uR2bP1g9PO812W9tVmBwWGmyBN5ltMynOZz0ZeI82iE,7808
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=ABEtSc7-5aHZZrdVorARRhWIxfSBEzkb5fsiSJluGHA,1087
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=2CO0kg3LEN8q75_4Z0cgGz4DTOPUjRHur6Dbfw2tRLQ,10173
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=AyW5B4A51L_nIVLX1eYeu9ZUboOh1CH2FVj2C1XJjSc,9769
184
- tests/test_rtn_uc.py,sha256=vdG2ss3q91CXLZ2sUgzoUr1NU-63ue7nOxAYywMordE,8286
185
- tests/test_service.py,sha256=8YIa_PXurwgOzsWvUqoyqS_AzlpdrKHIMxAln5fIqCU,2438
186
- ltbams-1.0.5.dist-info/METADATA,sha256=Ozov3I100t3YStip3CYXb56cb96APz1juduPF1P2YnY,14023
187
- ltbams-1.0.5.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
188
- ltbams-1.0.5.dist-info/entry_points.txt,sha256=FA56FlhO_yVNeEf810SrorVQb7_Xsmo3_EW-W-ijUfA,37
189
- ltbams-1.0.5.dist-info/top_level.txt,sha256=pyKDqG2kj13F9-BYd_wkruRdBSqLXw8Nwc-cmljqrxg,15
190
- ltbams-1.0.5.dist-info/RECORD,,
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('5bus/pjm5bus_demo.xlsx'),
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/pjm5bus_uced.xlsx"),
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, 5)
33
- self.assertEqual(self.ss.PQ.n, 3)
34
- self.assertEqual(self.ss.PV.n, 3)
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, 2)
38
- self.assertEqual(self.ss.SFR.n, 2)
39
- self.assertEqual(self.ss.SR.n, 2)
40
- self.assertEqual(self.ss.NSR.n, 2)
41
- self.assertEqual(self.ss.GCost.n, 4)
42
- self.assertEqual(self.ss.SFRCost.n, 4)
43
- self.assertEqual(self.ss.SRCost.n, 4)
44
- self.assertEqual(self.ss.NSRCost.n, 4)
45
- self.assertEqual(self.ss.EDTSlot.n, 24)
46
- self.assertEqual(self.ss.UCTSlot.n, 24)
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, ['Bus_1', 'Bus_2', 'Bus_3', 'Bus_4', 'Bus_5'])
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/pjm5bus_uced_esd1.xlsx"),
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=3, value=0)
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=3)
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=3, value=1)
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/pjm5bus_uced_esd1.xlsx"),
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=3, value=0)
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=3),
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=3, value=1)
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/pjm5bus_uced_esd1.xlsx"),
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=3, value=0)
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=3)
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=3, value=1)
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="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 zone",)
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))