The next step is to populate our model with power flow results generated from GridCal. For simplicity, we will create a power flow model from an accompanying PSS/E .raw. However, it is possible to run the power flows from a native GridCal model.
SMIB_Example/models/SMIB folder.
SMIB_Base_Case.raw within the PSSE_Files folder. Copy and paste the following text inside the file and save it:
0, 100.00, 33, 0, 1, 50.00 / PSS(R)E-33.4 FRI, FEB 26 2021 16:31
SMIB
1,'B01 ', 100.0000,2, 1, 1, 1,1.00000, 4.0463,1.10000,0.90000,1.10000,0.90000
2,'B02 ', 100.0000,3, 1, 1, 1,1.00000, 0.0000,1.10000,0.90000,1.10000,0.90000
3,'B03 ', 100.0000,1, 1, 1, 1,0.99598, -0.2870,1.10000,0.90000,1.10000,0.90000
4,'B04 ', 100.0000,1, 1, 1, 1,0.99199, -0.5763,1.10000,0.90000,1.10000,0.90000
0 / END OF BUS DATA, BEGIN LOAD DATA
4,'1 ',1, 1, 1, 50.000, 10.000, 0.000, 0.000, 0.000, 0.000, 1,1,0
0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
1,'1 ', 40.000, 5.417, 60.000, 0.000,1.00000, 0, 100.000, 0.00000E+0, 2.00000E-1, 0.00000E+0, 0.00000E+0,1.00000,1, 100.0, 80.000, 0.000, 1,1.0000
2,'1 ', 10.017, 8.007, 60.000, 0.000,1.00000, 0, 100.000, 0.00000E+0, 2.00000E-1, 0.00000E+0, 0.00000E+0,1.00000,1, 100.0, 80.000, 0.000, 1,1.0000
0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
1, 4,'1 ', 1.00000E-3, 2.00000E-1, 0.00000, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.00, 1,1.0000
2, 3,'1 ', 5.00000E-4, 1.00000E-1, 0.00000, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,2, 0.00, 1,1.0000
2, 4,'1 ', 1.00000E-3, 2.00000E-1, 0.00000, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,2, 0.00, 1,1.0000
3, 4,'1 ', 5.00000E-4, 1.00000E-1, 0.00000, 0.00, 0.00, 0.00, 0.00000, 0.00000, 0.00000, 0.00000,1,2, 0.00, 1,1.0000
0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA
0 / END OF TRANSFORMER DATA, BEGIN AREA DATA
0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA
0 / END OF TWO-TERMINAL DC DATA, BEGIN VSC DC LINE DATA
0 / END OF VSC DC LINE 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
0 / END OF OWNER DATA, BEGIN FACTS DEVICE DATA
0 / END OF FACTS DEVICE DATA, BEGIN SWITCHED SHUNT DATA
0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DATA
0 / END OF GNE DATA, BEGIN INDUCTION MACHINE DATA
0 / END OF INDUCTION MACHINE DATA
Q
run_pf.py from a terminal.
python run_pf.py SMIB
(openipsl_tutorial) c:\Users\Miguel\SMIB_Example>python run_pf.py SMIB
It 0, error 0.5, converged False, x [0. 0. 0. 1. 1.], dx not computed yet
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Iter: 1
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
It 1, error 0.016918884074426793, converged False, x [ 0.07000175 -0.00498304 -0.00996608 0.99658333 0.99316667], dx [ 0.07000175 -0.00498304 -0.00996608 -0.00341667 -0.00683333]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Iter: 2
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
It 2, error 2.1358057256101737e-05, converged False, x [ 0.07061997 -0.00500866 -0.01005764 0.99598493 0.99199502], dx [ 0.00061822 -0.00002562 -0.00009156 -0.00059841 -0.00117164]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Iter: 3
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
It 3, error 3.453681785003937e-11, converged False, x [ 0.0706208 -0.00500868 -0.01005778 0.99598418 0.99199354], dx [ 0.00000083 -0.00000002 -0.00000014 -0.00000075 -0.00000148]
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Iter: 4
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
It 4, error 3.802513859341161e-15, converged True, x [ 0.0706208 -0.00500868 -0.01005778 0.99598418 0.99199354], dx [ 0. -0. -0. -0. -0.]
(openipsl_tutorial) c:\Users\Miguel\SMIB_Example>
📌 A new power flow record called PF00000 should be generated inside the PFData subfolder.
PF0000.mo inside your PFData folder. In fact, there should be a new file in every subfolder too.
pf. Select the newly created power flow PF00000 as the value for the PowerFlow field. By doing so, we are specifying that the model will initialize using the power flow results in that specific container.
📌 You can alternatively modify the Modelica Text of the SMIB Experiment model as follows:
model SMIB
extends Modelica.Icons.Example;
extends BaseModels.BaseNetwork.SMIBPartial(pf(redeclare record PowerFlow = PFData.PF00000));
replaceable BaseModels.GeneratingUnits.GeneratorOnly genunit...
equation
...
annotation ...
end SMIB;
To see the power flow values in Dymola, click on the square button
on the left of the PowerFlow selection menu.
You should see that the power flow record is composed of four fields: bus, load, machine and transformer.
Inside each field, we can detail the power flow results