-
Notifications
You must be signed in to change notification settings - Fork 148
/
t_node_test.m
95 lines (82 loc) · 2.33 KB
/
t_node_test.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
function [pf_, opf_] = t_node_test(quiet)
% t_node_test - Tests for network model with multipe node-creating elements.
% MATPOWER
% Copyright (c) 2021-2024, Power Systems Engineering Research Center (PSERC)
% by Ray Zimmerman, PSERC Cornell
%
% This file is part of MATPOWER.
% Covered by the 3-clause BSD License (see LICENSE file for details).
% See https://matpower.org for more info.
if nargin < 1
quiet = 0;
end
cases = {'t_case9_gizmo', 'case4gs', 'case4_dist', 'case9', 'case14', 'case57', 'case300'};
t_begin(12*length(cases), quiet);
define_constants;
if quiet
verbose = 0;
else
verbose = 1;
end
mpopt = mpoption('out.all', 0, 'verbose', 0, 'pf.tol', 1e-10);
mpopt = mpoption(mpopt, 'opf.ignore_angle_lim', 1);
mpopt0 = mpopt;
mpopt0.exp.use_legacy_core = 1;
mpopt.exp.mpx = mp.xt_node_test();
for k = 1:length(cases)
t = sprintf('PF - %s - ', cases{k});
mpc = loadcase(cases{k});
if strcmp(cases{k}, 't_case9_gizmo')
mpc.bus(2, BS) = 1;
end
if ~isfield(mpc, 'gencost')
ng = size(mpc.gen, 1);
mpc.gencost = ones(ng, 1) * [2 0 0 2 1 0];
if strcmp(cases{k}, 'case4gs')
mpc.gen(:, PMAX) = 320;
mpc.gen(:, QMAX) = 200;
end
end
r = runpf(mpc, mpopt0);
evm = r.bus(:, VM);
eva = r.bus(:, VA);
epg = r.gen(:, PG);
eqg = r.gen(:, QG);
t_ok(r.success, [t 'success 1']);
pf = run_pf(mpc, mpopt);
r2 = pf.dmc.export(pf.dm, pf.dm.source);
va = r2.bus(:, VA);
vm = r2.bus(:, VM);
pg = r2.gen(:, PG);
qg = r2.gen(:, QG);
t_ok(pf.success, [t 'success 2']);
t_is(va, eva, 9, [t 'va']);
t_is(vm, evm, 9, [t 'vm']);
t_is(pg, epg, 9, [t 'pg']);
t_is(qg, eqg, 9, [t 'qg']);
t = sprintf('OPF - %s - ', cases{k});
r = runopf(mpc, mpopt0);
t_ok(r.success, [t 'success 1']);
evm = r.bus(:, VM);
eva = r.bus(:, VA);
epg = r.gen(:, PG);
eqg = r.gen(:, QG);
opf = run_opf(mpc, mpopt);
r2 = opf.dmc.export(opf.dm, opf.dm.source);
va = r2.bus(:, VA);
vm = r2.bus(:, VM);
pg = r2.gen(:, PG);
qg = r2.gen(:, QG);
t_ok(opf.success, [t 'success 2']);
t_is(va, eva, 9, [t 'va']);
t_is(vm, evm, 9, [t 'vm']);
t_is(pg, epg, 9, [t 'pg']);
t_is(qg, eqg, 9, [t 'qg']);
end
t_end;
if nargout
pf_ = pf;
if nargout > 1
opf_ = opf;
end
end