Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Psse: import update substation data without conversion #2972

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b0c2d98
copy of the imported PSSE model to make the updates and export (deep …
marqueslanauja Mar 21, 2024
7947a24
Merge branch 'main' into psse_copy
marqueslanauja Mar 27, 2024
3d106ed
Merge branch 'main' into psse_copy
marqueslanauja Apr 10, 2024
362d13f
Import and update substation data
marqueslanauja Apr 11, 2024
5e93847
Remove duplicated code
marqueslanauja Apr 11, 2024
cab4aa1
Fix code smells
marqueslanauja Apr 11, 2024
67ff326
Fix code smells
marqueslanauja Apr 11, 2024
5c2376a
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Apr 22, 2024
4f1ac9e
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Apr 23, 2024
d4e6601
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Apr 25, 2024
55c0b8e
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja May 2, 2024
66994d7
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja May 22, 2024
d1a5e2f
pretty code
marqueslanauja May 22, 2024
bd5804c
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja May 22, 2024
eefa3e6
Add new test
marqueslanauja May 22, 2024
4568e32
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Jun 3, 2024
fe60c96
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Jun 7, 2024
8bd69c7
switching device type must be an integer
marqueslanauja Jun 11, 2024
c115adb
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Jun 17, 2024
0b807a5
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Jul 2, 2024
c1401a3
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Jul 12, 2024
b81dc0e
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Aug 5, 2024
299d8e4
Fix FileDataSource
marqueslanauja Aug 5, 2024
8e4a04b
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Aug 5, 2024
e59802b
Minor adjustments after testing a real case
marqueslanauja Aug 6, 2024
c98d04d
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Sep 2, 2024
3eb8652
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Sep 12, 2024
b29497c
Merge branch 'main' into psse_import_update_substation_data_without_c…
marqueslanauja Sep 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ private static Terminal defineRegulatingTerminal(PsseGenerator psseGenerator, Ne
regulatingTerminal = bus.getConnectedTerminalStream().findFirst().orElse(null);
}
}
if (regulatingTerminal == null) {
if (regulatingTerminal == null && psseGenerator.getI() != psseGenerator.getIreg()) {
String generatorId = getGeneratorId(defaultRegulatingBusId, psseGenerator);
LOGGER.warn("Generator {}. Regulating terminal is not assigned as the bus is isolated", generatorId);
}
Expand Down
3 changes: 2 additions & 1 deletion psse/psse-model-test/src/main/resources/IEEE_14_bus.json
Original file line number Diff line number Diff line change
Expand Up @@ -1348,5 +1348,6 @@
"facts" : [ ],
"switchedShunts" : [ ],
"gneDevice" : [ ],
"inductionMachines" : [ ]
"inductionMachines" : [ ],
"substations" : [ ]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
0, 100.0, 35, 0, 0, 60.00 / October 01, 2013 18:37:53
08/19/93 UW ARCHIVE 100.0 1962 W IEEE 14 Bus Test Case

0 / END OF SYSTEM-WIDE DATA, BEGIN BUS DATA
1,'Bus 1 ', 138.0000,3, 1, 1, 1,1.06000, 0.0000
2,'Bus 2 ', 138.0000,2, 1, 1, 1,1.04500, -4.9826
3,'Bus 3 ', 138.0000,2, 1, 1, 1,1.01000, -12.7250
4,'Bus 4 ', 138.0000,1, 1, 1, 1,1.01767, -10.3128
5,'Bus 5 ', 138.0000,1, 1, 1, 1,1.01951, -8.7738
6,'Bus 6 ', 138.0000,2, 1, 1, 1,1.07000, -14.2209
7,'Bus 7 ', 138.0000,1, 1, 1, 1,1.06152, -13.3596
8,'Bus 8 ', 138.0000,2, 1, 1, 1,1.09000, -13.3596
9,'Bus 9 ', 138.0000,1, 1, 1, 1,1.05593, -14.9385
10,'Bus 10 ', 138.0000,1, 1, 1, 1,1.05099, -15.0972
11,'Bus 11 ', 138.0000,1, 1, 1, 1,1.05691, -14.7906
12,'Bus 12 ', 138.0000,1, 1, 1, 1,1.05519, -15.0755
13,'Bus 13 ', 138.0000,1, 1, 1, 1,1.05038, -15.1562
14,'Bus 14 ', 138.0000,1, 1, 1, 1,1.03553, -16.0336
0 / END OF BUS DATA, BEGIN LOAD DATA
2,'1 ',1, 1, 1, 21.700, 12.700, 0.000, 0.000, 0.000, -0.000, 1,1
3,'1 ',1, 1, 1, 94.200, 19.000, 0.000, 0.000, 0.000, -0.000, 1,1
4,'1 ',1, 1, 1, 47.800, -3.900, 0.000, 0.000, 0.000, -0.000, 1,1
5,'1 ',1, 1, 1, 7.600, 1.600, 0.000, 0.000, 0.000, -0.000, 1,1
6,'1 ',1, 1, 1, 11.200, 7.500, 0.000, 0.000, 0.000, -0.000, 1,1
9,'1 ',1, 1, 1, 29.500, 16.600, 0.000, 0.000, 0.000, -0.000, 1,1
10,'1 ',1, 1, 1, 9.000, 5.800, 0.000, 0.000, 0.000, -0.000, 1,1
11,'1 ',1, 1, 1, 3.500, 1.800, 0.000, 0.000, 0.000, -0.000, 1,1
12,'1 ',1, 1, 1, 6.100, 1.600, 0.000, 0.000, 0.000, -0.000, 1,1
13,'1 ',1, 1, 1, 13.500, 5.800, 0.000, 0.000, 0.000, -0.000, 1,1
14,'1 ',1, 1, 1, 14.900, 5.000, 0.000, 0.000, 0.000, -0.000, 1,1
0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
9,' 1', 1, 0.000, 19.000
0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
1,'1 ', 232.392, -16.549, 0.000, 0.000,1.06000, 0, 0, 615.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 10000.000,-10000.000, 0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000
2,'1 ', 40.000, 43.556, 50.000, -40.000,1.04500, 0, 0, 60.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 10000.000,-10000.000, 0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000
3,'1 ', 0.000, 25.075, 40.000, 0.000,1.01000, 0, 0, 60.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 10000.000,-10000.000, 0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000
6,'1 ', 0.000, 12.730, 24.000, -6.000,1.07000, 0, 0, 25.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 10000.000,-10000.000, 0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000
8,'1 ', 0.000, 17.623, 24.000, -6.000,1.09000, 0, 0, 25.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 10000.000,-10000.000, 0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000
0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
1, 2,'1 ', 0.01938, 0.05917,0.05280, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
1, 5,'1 ', 0.05403, 0.22304,0.04920, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
2, 3,'1 ', 0.04699, 0.19797,0.04380, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
2, 4,'1 ', 0.05811, 0.17632,0.03400, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
2, 5,'1 ', 0.05695, 0.17388,0.03460, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
3, 4,'1 ', 0.06701, 0.17103,0.01280, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
4, 5,'1 ', 0.01335, 0.04211,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
6, 11,'1 ', 0.09498, 0.19890,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
6, 12,'1 ', 0.12291, 0.25581,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
6, 13,'1 ', 0.06615, 0.13027,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
7, 8,'1 ', 0.00000, 0.17615,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
7, 9,'1 ', 0.00000, 0.11001,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
9, 10,'1 ', 0.03181, 0.08450,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
9, 14,'1 ', 0.12711, 0.27038,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
10, 11,'1 ', 0.08205, 0.19207,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
12, 13,'1 ', 0.22092, 0.19988,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
13, 14,'1 ', 0.17093, 0.34802,0.00000, '', 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.0, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
0 / END OF BRANCH DATA, BEGIN SYSTEM SWITCHING DEVICE DATA
0 / END OF SYSTEM SWITCHING DEVICE DATA, BEGIN TRANSFORMER DATA
4, 7, 0,'1 ',1,1,1, 0.00000, 0.00000,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
0.00000, 0.20912, 100.00
0.97800, 0.000, 0.000, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,0, 0, 0, 1.50000, 0.51000, 1.50000, 0.51000,159, 0, 0.00000, 0.00000
1.00000, 0.000
4, 9, 0,'1 ',1,1,1, 0.00000, 0.00000,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
0.00000, 0.55618, 100.00
0.96900, 0.000, 0.000, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,0, 0, 0, 1.50000, 0.51000, 1.50000, 0.51000,159, 0, 0.00000, 0.00000
1.00000, 0.000
5, 6, 0,'1 ',1,1,1, 0.00000, 0.00000,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000
0.00000, 0.25202, 100.00
0.93200, 0.000, 0.000, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,0, 0, 0, 1.50000, 0.51000, 1.50000, 0.51000,159, 0, 0.00000, 0.00000
1.00000, 0.000
0 / END OF TRANSFORMER DATA, BEGIN AREA DATA
1, 2, 0.000, 999.990,'IEEE14 '
0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA
0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA
0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA
0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA
0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA
0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA
0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA
0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA
1,'1'
0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA
0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA
0 /END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA
0 /END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA
0 /END OF INDUCTION MACHINE DATA, BEGIN SUBSTATION DATA
1, 'STATION 1', 0.0, 0.0, 0.1
/ BEGIN SUBSTATION NODE DATA
1, 'NB1', 1, 1, 1.0, 0.0
2, 'NB2', 1, 1, 1.0, 0.0
3, 'NL2', 1, 1, 1.0, 0.0
4, 'NL5', 1, 1, 1.0, 0.0
5, 'NG1', 1, 1, 1.0, 0.0
0 / END OF SUBSTATION NODE DATA, BEGIN SUBSTATION SWITCHING DEVICE DATA
1, 2, '1 ', 'Sw-BusBars', 2, 1, 1, 0, 0, 0, 0
1, 3, '1 ', 'Sw-BranchToBus2', 2, 1, 1, 0, 0, 0, 0
2, 4, '1 ', 'Sw-BranchToBus5', 2, 1, 1, 0, 0, 0, 0
2, 5, '1 ', 'Sw-Gen1', 2, 1, 1, 0, 0, 0, 0
0 / END OF SUBSTATION SWITCHING DEVICE DATA, BEGIN SUBSTATION TERMINAL DATA
1, 5, 'M', '1 '
1, 3, 'B', 2, '1 '
1, 4, 'B', 5, '1 '
0 / END OF SUBSTATION TERMINAL DATA
2, 'STATION 5', 0.0, 0.0, 0.1
/ BEGIN SUBSTATION NODE DATA
1, 'NB1', 2, 1, 1.0, 0.0
2, 'NB2', 2, 1, 1.0, 0.0
3, 'NL3', 2, 1, 1.0, 0.0
4, 'NL4', 2, 1, 1.0, 0.0
5, 'NL5', 2, 1, 1.0, 0.0
6, 'NL1', 2, 1, 1.0, 0.0
7, 'NG1', 2, 1, 1.0, 0.0
8, 'NLd1', 2, 1, 1.0, 0.0
0 / END OF SUBSTATION NODE DATA, BEGIN SUBSTATION SWITCHING DEVICE DATA
1, 2, '1 ', 'Sw-BusBars', 2, 1, 1, 0, 0, 0, 0
1, 6, '1 ', 'Sw-BranchToBus1', 2, 1, 1, 0, 0, 0, 0
1, 7, '1 ', 'Sw-Gen1', 2, 1, 1, 0, 0, 0, 0
1, 8, '1 ', 'Sw-Load1', 2, 1, 1, 0, 0, 0, 0
2, 3, '1 ', 'Sw-BranchToBus3', 2, 1, 1, 0, 0, 0, 0
2, 4, '1 ', 'Sw-BranchToBus4', 2, 1, 1, 0, 0, 0, 0
2, 5, '1 ', 'Sw-BranchToBus5', 2, 1, 1, 0, 0, 0, 0
0 / END OF SUBSTATION SWITCHING DEVICE DATA, BEGIN SUBSTATION TERMINAL DATA
2, 7, 'M', '1 '
2, 8, 'L', '1 '
2, 6, 'B', 1, '1 '
2, 3, 'B', 3, '1 '
2, 4, 'B', 4, '1 '
2, 5, 'B', 5, '1 '
0 / END OF SUBSTATION TERMINAL DATA
0 /END OF SUBSTATION DATA
Q
3 changes: 2 additions & 1 deletion psse/psse-model-test/src/main/resources/IEEE_24_bus.json
Original file line number Diff line number Diff line change
Expand Up @@ -2526,5 +2526,6 @@
"b8" : 0.0
} ],
"gneDevice" : [ ],
"inductionMachines" : [ ]
"inductionMachines" : [ ],
"substations" : [ ]
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,24 @@ public String readLine() throws IOException {
return reader.readLine();
}

public String readUntilFindingARecordLineNotEmpty() throws IOException {
String line = readRecordLine();
while (emptyLine(line)) {
line = readRecordLine();
}
return line;
}

// Read a line that contains a record
// Removes comments and normalizes spaces in unquoted areas
public String readRecordLine() throws IOException {
String line = reader.readLine();
if (line == null) {
throw new PsseException("PSSE. Unexpected end of file");
}
if (isRecordLineDefiningTheAttributeFields(line)) {
return ""; // an empty line must be returned
}
StringBuilder newLine = new StringBuilder();
Matcher m = FileFormat.LEGACY_TEXT_QUOTED_OR_WHITESPACE.matcher(removeComment(line));
while (m.find()) {
Expand All @@ -112,6 +123,11 @@ public String readRecordLine() throws IOException {
return newLine.toString().trim();
}

// all the lines beginning with "@!" are record lines defining the attribute fields
private static boolean isRecordLineDefiningTheAttributeFields(String line) {
return line.length() >= 2 && line.substring(0, 2).equals("@!");
}

private static String removeComment(String line) {
// Only outside quotes
return line.replaceAll("('[^']*')|(^/[^/]*)|(/[^/]*)", "$1$2");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,14 @@ public static void writeEnd(String legacyTextName, OutputStream outputStream) {
write(String.format("0 / END OF %s DATA", legacyTextName), outputStream);
}

public static void writeComment(String comment, OutputStream outputStream) {
write(String.format(" / %s%n", comment), outputStream);
}

public static void writeEndComment(String comment, OutputStream outputStream) {
write(String.format("0 / %s%n", comment), outputStream);
}

public static void writeQ(OutputStream outputStream) {
write(String.format("%nQ%n"), outputStream);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public class PssePowerFlowModel {

private final List<PsseInductionMachine> inductionMachines = new ArrayList<>();

private final List<PsseSubstation> substations = new ArrayList<>();

public PssePowerFlowModel(PsseCaseIdentification caseIdentification) {
this.caseIdentification = Objects.requireNonNull(caseIdentification);
}
Expand Down Expand Up @@ -220,6 +222,14 @@ public List<PsseInductionMachine> getInductionMachines() {
return Collections.unmodifiableList(inductionMachines);
}

public void addSubstations(List<PsseSubstation> substations) {
this.substations.addAll(substations);
}

public List<PsseSubstation> getSubstations() {
return Collections.unmodifiableList(substations);
}

public PssePowerFlowModel referenceAndCopyPssePowerFlowModel() {
PssePowerFlowModel newPsseModel = new PssePowerFlowModel(this.getCaseIdentification());
referencePermanentBlocks(this, newPsseModel);
Expand All @@ -243,6 +253,8 @@ private static void referencePermanentBlocks(PssePowerFlowModel psseModel, PsseP
}

private static void copyModifiedBlocks(PssePowerFlowModel psseModel, PssePowerFlowModel newPsseModel) {
psseModel.getSubstations().forEach(psseSubstation -> newPsseModel.substations.add(psseSubstation.copy()));

psseModel.getBuses().forEach(psseBus -> newPsseModel.buses.add(psseBus.copy()));
psseModel.getLoads().forEach(psseLoad -> newPsseModel.loads.add(psseLoad.copy()));

Expand Down
Loading