Skip to content

Commit

Permalink
Add radial distribution power flow and test cases. (#5)
Browse files Browse the repository at this point in the history
* Add functions:
    - `calc_v_i_sum`
    - `calc_v_pq_sum`
    - `calc_v_y_sum`
    - `make_vcorr`
    - `make_zpv`
    - `order_radial`
    - `radial_pf`
* Add tests:
    - `t/t_pf_radial`
* Add cases:
    - `case4_dist`
    - `case18`
    - `case22`
    - `case69`
    - `case85`
    - `case141`
* Add MATPOWER options (`mpoption` ver is now 13):
    - `pf.alg` has new values `'PQSUM'`, `'ISUM'`, and `'YSUM'`
    - `pf.radial.max_it` (20)
    - `pf.radial.vcorr`  (0)
* Add section on distribution power flow to User's Manual.
* Add Mirko Todorovski to AUTHORS.
  • Loading branch information
todorovski-m authored and rdzman committed Feb 9, 2017
1 parent ebd0c24 commit 32515e6
Show file tree
Hide file tree
Showing 21 changed files with 2,100 additions and 13 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Expand Up @@ -15,3 +15,4 @@ Other contributors:
- Daniel Molzhan
- Daniel Munoz-Alvarez
- James Thorp
- Mirko Todorovski
16 changes: 16 additions & 0 deletions CHANGES.md
Expand Up @@ -12,6 +12,22 @@ For change history for [MOST][3], see [most/CHANGES.md](most/CHANGES.md).
Since last release
------------------

#### 2/9/17
- Add three new power flow algorithms for radial distribution
systems selected via the three new options for `pf.alg`, namely
`'PQSUM'`, `'ISUM'`, `'YSUM'`. Also includes new MATPOWER options
`pf.radial.max_it` and `pf.radial.vcorr`. See Section 4.3 on
"Distribution Power Flow" in the manual for details.
*Thanks to Mirko Todorovski.*
- Add 6 new radial distribution system cases.
- `case4_dist`
- `case18`
- `case22`
- `case69`
- `case85`
- `case141`
*Thanks to Mirko Todorovski.*

#### 1/26/17
- Add sources for MATPOWER User's Manual to `docs/src`.
- Move MOST User's Manual from `docs` to `most/docs`.
Expand Down
313 changes: 313 additions & 0 deletions data/case141.m

Large diffs are not rendered by default.

67 changes: 67 additions & 0 deletions data/case18.m
@@ -0,0 +1,67 @@
function mpc = case18
%CASE18 Power flow data for 18 bus distribution system
% Please see CASEFORMAT for details on the case file format.
%
% Data from ...
% W. M. Grady, M. J. Samotyj and A. H. Noyola, "The application of
% network objective functions for actively minimizing the impact of
% voltage harmonics in power systems," IEEE Transactions on Power
% Delivery, vol. 7, no. 3, pp. 1379-1386, Jul 1992.
% https://doi.org/10.1109/61.141855

%% MATPOWER Case Format : Version 2
mpc.version = '2';

%% system MVA base
mpc.baseMVA = 1;

%% bus data
% bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
mpc.bus = [
1 3 0.0000 0.0000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
2 1 0.0000 0.0000 0.0000 1.2000 1 1 0 12.5 1 1.1 0.9
3 1 0.0000 0.0000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
4 1 0.2000 0.1200 0.0000 1.0500 1 1 0 12.5 1 1.1 0.9
5 1 0.4000 0.2500 0.0000 0.6000 1 1 0 12.5 1 1.1 0.9
6 1 1.5000 0.9300 0.0000 0.6000 1 1 0 12.5 1 1.1 0.9
7 1 3.0000 2.2600 0.0000 1.8000 1 1 0 12.5 1 1.1 0.9
8 1 0.8000 0.5000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
9 1 0.2000 0.1200 0.0000 0.6000 1 1 0 12.5 1 1.1 0.9
10 1 1.0000 0.6200 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
11 1 0.5000 0.3100 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
12 1 1.0000 0.6200 0.0000 0.6000 1 1 0 12.5 1 1.1 0.9
13 1 0.3000 0.1900 0.0000 1.2000 1 1 0 12.5 1 1.1 0.9
14 1 0.2000 0.1200 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
15 1 0.8000 0.5000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
16 1 0.5000 0.3100 0.0000 1.5000 1 1 0 12.5 1 1.1 0.9
17 1 1.0000 0.6200 0.0000 0.9000 1 1 0 12.5 1 1.1 0.9
18 1 0.2000 0.1200 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
];

%% generator data
% bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf
mpc.gen = [
1 0.0000 0.0000 999 -999 1.0500 100 1 999 0 0 0 0 0 0 0 0 0 0 0 0
];

%% branch data
% fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax
mpc.branch = [
1 2 0.00004998 0.00035398 0.00000000 999 999 999 0 0 1 -360 360
2 3 0.00031200 0.00675302 0.00000000 999 999 999 0 0 1 -360 360
3 4 0.00043098 0.00120403 0.00035000 999 999 999 0 0 1 -360 360
4 5 0.00060102 0.00167699 0.00049000 999 999 999 0 0 1 -360 360
5 6 0.00031603 0.00088198 0.00026000 999 999 999 0 0 1 -360 360
6 7 0.00089600 0.00250202 0.00073000 999 999 999 0 0 1 -360 360
7 8 0.00029498 0.00082400 0.00024000 999 999 999 0 0 1 -360 360
8 9 0.00172000 0.00212000 0.00046000 999 999 999 0 0 1 -360 360
9 10 0.00407002 0.00305299 0.00051000 999 999 999 0 0 1 -360 360
4 11 0.00170598 0.00220902 0.00043000 999 999 999 0 0 1 -360 360
3 12 0.00291002 0.00376800 0.00074000 999 999 999 0 0 1 -360 360
12 13 0.00222202 0.00287699 0.00056000 999 999 999 0 0 1 -360 360
13 14 0.00480301 0.00621798 0.00122000 999 999 999 0 0 1 -360 360
13 15 0.00398502 0.00516000 0.00101000 999 999 999 0 0 1 -360 360
15 16 0.00291002 0.00376800 0.00074000 999 999 999 0 0 1 -360 360
15 17 0.00372698 0.00459302 0.00100000 999 999 999 0 0 1 -360 360
17 18 0.00110400 0.00136000 0.00118000 999 999 999 0 0 1 -360 360
];
75 changes: 75 additions & 0 deletions data/case22.m
@@ -0,0 +1,75 @@
function mpc = case22
%CASE22 Power flow data for 22 bus distribution system
% Please see CASEFORMAT for details on the case file format.
%
% Data from ...
% M. Ramalinga Raju, K.V.S. Ramachandra Murthy, K. Ravindra,
% Direct search algorithm for capacitive compensation in radial
% distribution systems, International Journal of Electrical Power &
% Energy Systems, Volume 42, Issue 1, November 2012, Pages 24-30
% http://dx.doi.org/10.1016/j.ijepes.2012.03.006

%% MATPOWER Case Format : Version 2
mpc.version = '2';

%% system MVA base
mpc.baseMVA = 10;

%% bus data
% bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
mpc.bus = [
1 3 0.0000 0.0000 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
2 1 0.0168 0.0209 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
3 1 0.0168 0.0209 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
4 1 0.0338 0.0373 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
5 1 0.0146 0.0125 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
6 1 0.0105 0.0142 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
7 1 0.0088 0.0117 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
8 1 0.0144 0.0186 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
9 1 0.0193 0.0259 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
10 1 0.0144 0.0186 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
11 1 0.0163 0.0195 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
12 1 0.0163 0.0195 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
13 1 0.0821 0.0717 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
14 1 0.0347 0.0301 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
15 1 0.0347 0.0301 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
16 1 0.0803 0.0701 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
17 1 0.0496 0.0478 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
18 1 0.0496 0.0478 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
19 1 0.0438 0.0389 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
20 1 0.0373 0.0360 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
21 1 0.0373 0.0360 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
22 1 0.0310 0.0294 0.0000 0.0000 1 1 0 11.0 1 1.1 0.9
];

%% generator data
% bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf
mpc.gen = [
1 0.0000 0.0000 999 -999 1.0000 100 1 999 0 0 0 0 0 0 0 0 0 0 0 0
];

%% branch data
% fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax
mpc.branch = [
1 2 0.03028099 0.01493388 0.00000000 999 999 999 0 0 1 -360 360
2 3 0.00452066 0.00233058 0.00000000 999 999 999 0 0 1 -360 360
2 4 0.04476033 0.02304959 0.00000000 999 999 999 0 0 1 -360 360
4 5 0.01595041 0.00818182 0.00000000 999 999 999 0 0 1 -360 360
5 6 0.10834711 0.05580165 0.00000000 999 999 999 0 0 1 -360 360
6 7 0.00494215 0.00254545 0.00000000 999 999 999 0 0 1 -360 360
6 8 0.02400826 0.01236364 0.00000000 999 999 999 0 0 1 -360 360
4 9 0.06141322 0.03162810 0.00000000 999 999 999 0 0 1 -360 360
9 10 0.00452066 0.00233058 0.00000000 999 999 999 0 0 1 -360 360
9 11 0.05578512 0.02876860 0.00000000 999 999 999 0 0 1 -360 360
11 12 0.00452066 0.00233058 0.00000000 999 999 999 0 0 1 -360 360
11 13 0.03257851 0.01677686 0.00000000 999 999 999 0 0 1 -360 360
13 14 0.08644628 0.04452893 0.00000000 999 999 999 0 0 1 -360 360
14 15 0.00181818 0.00095868 0.00000000 999 999 999 0 0 1 -360 360
14 16 0.00452066 0.00233058 0.00000000 999 999 999 0 0 1 -360 360
16 17 0.02654545 0.01366942 0.00000000 999 999 999 0 0 1 -360 360
17 18 0.00784298 0.00403306 0.00000000 999 999 999 0 0 1 -360 360
17 19 0.04743802 0.02445455 0.00000000 999 999 999 0 0 1 -360 360
19 20 0.01067769 0.00545455 0.00000000 999 999 999 0 0 1 -360 360
20 21 0.00719835 0.00371901 0.00000000 999 999 999 0 0 1 -360 360
20 22 0.04404132 0.02267769 0.00000000 999 999 999 0 0 1 -360 360
];
35 changes: 35 additions & 0 deletions data/case4_dist.m
@@ -0,0 +1,35 @@
function mpc = case4_dist
%CASE4_DIST Power flow data for 4 bus radial distribution system
% Please see CASEFORMAT for details on the case file format.

% MATPOWER

%% MATPOWER Case Format : Version 2
mpc.version = '2';

%% system MVA base
mpc.baseMVA = 1;

%% bus data
% bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin
mpc.bus = [
1 3 0.0000 0.0000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
2 1 0.4000 0.2000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
3 1 0.4000 0.2000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
400 2 0.4000 0.2000 0.0000 0.0000 1 1 0 12.5 1 1.1 0.9
];

%% generator data
% bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf
mpc.gen = [
1 0.0000 0.0000 999 -999 1.0500 100 1 999 0 0 0 0 0 0 0 0 0 0 0 0
400 0.0000 0.0000 999 -999 1.0500 100 1 999 0 0 0 0 0 0 0 0 0 0 0 0
];

%% branch data
% fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax
mpc.branch = [
2 3 0.003 0.006 0.00000000 999 999 999 0 0 1 -360 360
1 2 0.003 0.006 0.00000000 999 999 999 0 0 1 -360 360
400 1 0.003 0.006 0.00000000 999 999 999 1.025 0 1 -360 360
];

0 comments on commit 32515e6

Please sign in to comment.