-
Notifications
You must be signed in to change notification settings - Fork 2
/
powerflow.cpp
2225 lines (2135 loc) · 148 KB
/
powerflow.cpp
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
class billdump {
char32 group; // the group ID to output data for (all nodes if empty)
timestamp runtime; // the time to check voltage data
char256 filename; // the file to dump the voltage data into
int32 runcount; // the number of times the file has been written to
enumeration {METER=1, TRIPLEX_METER=0} meter_type; // describes whether to collect from 3-phase or S-phase meters
}
class capacitor {
parent node;
class node {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {SWING=2, PV=1, PQ=0} bustype; // defines whether the node is a PQ, PV, or SWING node
set {HASSOURCE=1} busflags; // flag indicates node has a source for voltage, i.e. connects to the swing node
object reference_bus; // reference bus from which frequency is defined
double maximum_voltage_error[V]; // convergence voltage limit or convergence criteria
complex voltage_A[V]; // bus voltage, Phase A to ground
complex voltage_B[V]; // bus voltage, Phase B to ground
complex voltage_C[V]; // bus voltage, Phase C to ground
complex voltage_AB[V]; // line voltages, Phase AB
complex voltage_BC[V]; // line voltages, Phase BC
complex voltage_CA[V]; // line voltages, Phase CA
complex current_A[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_B[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_C[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex power_A[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_B[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_C[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_A[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_B[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_C[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex current_AB[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BC[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CA[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_AN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AB[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BC[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CA[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_AB[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BC[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CA[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_AN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
enumeration {OUT_OF_SERVICE=0, IN_SERVICE=1} service_status; // In and out of service flag
double service_status_double; // In and out of service flag - type double - will indiscriminately override service_status - useful for schedules
double previous_uptime[min]; // Previous time between disconnects of node in minutes
double current_uptime[min]; // Current time since last disconnect of node in minutes
bool Norton_dynamic; // Flag to indicate a Norton-equivalent connection -- used for generators and deltamode
object topological_parent; // topological parent as per GLM configuration
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
set {N=8, D=256, C=4, B=2, A=1} pt_phase; // Phase(s) that the PT is on, used as measurement points for control
set {N=8, D=256, C=4, B=2, A=1} phases_connected; // phases capacitors connected to
enumeration {CLOSED=1, OPEN=0} switchA; // capacitor A switch open or close
enumeration {CLOSED=1, OPEN=0} switchB; // capacitor B switch open or close
enumeration {CLOSED=1, OPEN=0} switchC; // capacitor C switch open or close
enumeration {CURRENT=4, VARVOLT=3, VOLT=2, VAR=1, MANUAL=0} control; // control operation strategy
double cap_A_switch_count; // number of switch operations on Phase A
double cap_B_switch_count; // number of switch operations on Phase B
double cap_C_switch_count; // number of switch operations on Phase C
double voltage_set_high[V]; // Turn off if voltage is above this set point
double voltage_set_low[V]; // Turns on if voltage is below this set point
double VAr_set_high[VAr]; // high VAR set point for VAR control (turn off)
double VAr_set_low[VAr]; // low VAR set point for VAR control (turn on)
double current_set_low[A]; // high current set point for current control mode (turn on)
double current_set_high[A]; // low current set point for current control mode (turn off)
double capacitor_A[VAr]; // Capacitance value for phase A or phase AB
double capacitor_B[VAr]; // Capacitance value for phase B or phase BC
double capacitor_C[VAr]; // Capacitance value for phase C or phase CA
double cap_nominal_voltage[V]; // Nominal voltage for the capacitor. Used for calculation of capacitance value
double time_delay[s]; // control time delay
double dwell_time[s]; // Time for system to remain constant before a state change will be passed
double lockout_time[s]; // Time for capacitor to remain locked out from further switching operations (VARVOLT control)
object remote_sense; // Remote object for sensing values used for control schemes
object remote_sense_B; // Secondary Remote object for sensing values used for control schemes (VARVOLT uses two)
enumeration {INDIVIDUAL=1, BANK=0} control_level; // define bank or individual control
}
class currdump {
char32 group; // the group ID to output data for (all links if empty)
timestamp runtime; // the time to check current data
char256 filename; // the file to dump the current data into
int32 runcount; // the number of times the file has been written to
enumeration {polar=1, rect=0} mode;
}
class emissions {
double Nuclear_Order;
double Hydroelectric_Order;
double Solarthermal_Order;
double Biomass_Order;
double Wind_Order;
double Coal_Order;
double Naturalgas_Order;
double Geothermal_Order;
double Petroleum_Order;
double Naturalgas_Max_Out[kWh];
double Coal_Max_Out[kWh];
double Biomass_Max_Out[kWh];
double Geothermal_Max_Out[kWh];
double Hydroelectric_Max_Out[kWh];
double Nuclear_Max_Out[kWh];
double Wind_Max_Out[kWh];
double Petroleum_Max_Out[kWh];
double Solarthermal_Max_Out[kWh];
double Naturalgas_Out[kWh];
double Coal_Out[kWh];
double Biomass_Out[kWh];
double Geothermal_Out[kWh];
double Hydroelectric_Out[kWh];
double Nuclear_Out[kWh];
double Wind_Out[kWh];
double Petroleum_Out[kWh];
double Solarthermal_Out[kWh];
double Naturalgas_Conv_Eff[Btu/kWh];
double Coal_Conv_Eff[Btu/kWh];
double Biomass_Conv_Eff[Btu/kWh];
double Geothermal_Conv_Eff[Btu/kWh];
double Hydroelectric_Conv_Eff[Btu/kWh];
double Nuclear_Conv_Eff[Btu/kWh];
double Wind_Conv_Eff[Btu/kWh];
double Petroleum_Conv_Eff[Btu/kWh];
double Solarthermal_Conv_Eff[Btu/kWh];
double Naturalgas_CO2[lb/Btu];
double Coal_CO2[lb/Btu];
double Biomass_CO2[lb/Btu];
double Geothermal_CO2[lb/Btu];
double Hydroelectric_CO2[lb/Btu];
double Nuclear_CO2[lb/Btu];
double Wind_CO2[lb/Btu];
double Petroleum_CO2[lb/Btu];
double Solarthermal_CO2[lb/Btu];
double Naturalgas_SO2[lb/Btu];
double Coal_SO2[lb/Btu];
double Biomass_SO2[lb/Btu];
double Geothermal_SO2[lb/Btu];
double Hydroelectric_SO2[lb/Btu];
double Nuclear_SO2[lb/Btu];
double Wind_SO2[lb/Btu];
double Petroleum_SO2[lb/Btu];
double Solarthermal_SO2[lb/Btu];
double Naturalgas_NOx[lb/Btu];
double Coal_NOx[lb/Btu];
double Biomass_NOx[lb/Btu];
double Geothermal_NOx[lb/Btu];
double Hydroelectric_NOx[lb/Btu];
double Nuclear_NOx[lb/Btu];
double Wind_NOx[lb/Btu];
double Petroleum_NOx[lb/Btu];
double Solarthermal_NOx[lb/Btu];
double Naturalgas_emissions_CO2[lb];
double Naturalgas_emissions_SO2[lb];
double Naturalgas_emissions_NOx[lb];
double Coal_emissions_CO2[lb];
double Coal_emissions_SO2[lb];
double Coal_emissions_NOx[lb];
double Biomass_emissions_CO2[lb];
double Biomass_emissions_SO2[lb];
double Biomass_emissions_NOx[lb];
double Geothermal_emissions_CO2[lb];
double Geothermal_emissions_SO2[lb];
double Geothermal_emissions_NOx[lb];
double Hydroelectric_emissions_CO2[lb];
double Hydroelectric_emissions_SO2[lb];
double Hydroelectric_emissions_NOx[lb];
double Nuclear_emissions_CO2[lb];
double Nuclear_emissions_SO2[lb];
double Nuclear_emissions_NOx[lb];
double Wind_emissions_CO2[lb];
double Wind_emissions_SO2[lb];
double Wind_emissions_NOx[lb];
double Petroleum_emissions_CO2[lb];
double Petroleum_emissions_SO2[lb];
double Petroleum_emissions_NOx[lb];
double Solarthermal_emissions_CO2[lb];
double Solarthermal_emissions_SO2[lb];
double Solarthermal_emissions_NOx[lb];
double Total_emissions_CO2[lb];
double Total_emissions_SO2[lb];
double Total_emissions_NOx[lb];
double Total_energy_out[kWh];
double Region;
double cycle_interval[s];
}
class fault_check {
function reliability_alterations();
function handle_sectionalizer();
enumeration {ALL=2, ONCHANGE=1, SINGLE=0} check_mode; // Frequency of fault checks
char1024 output_filename; // Output filename for list of unsupported nodes
bool reliability_mode; // General flag indicating if fault_check is operating under faulting or restoration mode -- reliability set this
bool strictly_radial; // Flag to indicate if a system is known to be strictly radial -- uses radial assumptions for reliability alterations
object eventgen_object; // Link to generic eventgen object to handle unexpected faults
}
class frequency_gen {
enumeration {AUTO=1, OFF=0} Frequency_Mode; // Frequency object operations mode
double Frequency[Hz]; // Instantaneous frequency value
double FreqChange[Hz/s]; // Frequency change from last timestep
double Deadband[Hz]; // Frequency deadband of the governor
double Tolerance[%]; // % threshold a power difference must be before it is cared about
double M[pu*s]; // Inertial constant of the system
double D[%]; // Load-damping constant
double Rated_power[W]; // Rated power of system (base power)
double Gen_power[W]; // Mechanical power equivalent
double Load_power[W]; // Last sensed load value
double Gov_delay[s]; // Governor delay time
double Ramp_rate[W/s]; // Ramp ideal ramp rate
double Low_Freq_OI[Hz]; // Low frequency setpoint for GFA devices
double High_Freq_OI[Hz]; // High frequency setpoint for GFA devices
double avg24[Hz]; // Average of last 24 hourly instantaneous measurements
double std24[Hz]; // Standard deviation of last 24 hourly instantaneous measurements
double avg168[Hz]; // Average of last 168 hourly instantaneous measurements
double std168[Hz]; // Standard deviation of last 168 hourly instantaneous measurements
int32 Num_Resp_Eqs; // Total number of equations the response can contain
}
class fuse {
parent link;
class link {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
enumeration {OPEN=0, CLOSED=1} status; //
object from; // from_node - source node
object to; // to_node - load node
complex power_in[VA]; // power flow in (w.r.t from node)
complex power_out[VA]; // power flow out (w.r.t to node)
double power_out_real[W]; // power flow out (w.r.t to node), real
complex power_losses[VA]; // power losses
complex power_in_A[VA]; // power flow in (w.r.t from node), phase A
complex power_in_B[VA]; // power flow in (w.r.t from node), phase B
complex power_in_C[VA]; // power flow in (w.r.t from node), phase C
complex power_out_A[VA]; // power flow out (w.r.t to node), phase A
complex power_out_B[VA]; // power flow out (w.r.t to node), phase B
complex power_out_C[VA]; // power flow out (w.r.t to node), phase C
complex power_losses_A[VA]; // power losses, phase A
complex power_losses_B[VA]; // power losses, phase B
complex power_losses_C[VA]; // power losses, phase C
complex current_out_A[A]; // current flow out of link (w.r.t. to node), phase A
complex current_out_B[A]; // current flow out of link (w.r.t. to node), phase B
complex current_out_C[A]; // current flow out of link (w.r.t. to node), phase C
complex current_in_A[A]; // current flow to link (w.r.t from node), phase A
complex current_in_B[A]; // current flow to link (w.r.t from node), phase B
complex current_in_C[A]; // current flow to link (w.r.t from node), phase C
complex fault_current_in_A[A]; // fault current flowing in, phase A
complex fault_current_in_B[A]; // fault current flowing in, phase B
complex fault_current_in_C[A]; // fault current flowing in, phase C
complex fault_current_out_A[A]; // fault current flowing out, phase A
complex fault_current_out_B[A]; // fault current flowing out, phase B
complex fault_current_out_C[A]; // fault current flowing out, phase C
set {CN=768, CR=512, CF=256, BN=48, BR=32, BF=16, AN=3, AR=2, AF=1, UNKNOWN=0} flow_direction; // flag used for describing direction of the flow of power
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
double continuous_rating[A]; // Continuous rating for this link object (set individual line segments
double emergency_rating[A]; // Emergency rating for this link object (set individual line segments
}
function change_fuse_state();
function reliability_operation();
function create_fault();
function fix_fault();
function change_fuse_faults();
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
enumeration {GOOD=1, BLOWN=0} phase_A_status;
enumeration {GOOD=1, BLOWN=0} phase_B_status;
enumeration {GOOD=1, BLOWN=0} phase_C_status;
enumeration {EXPONENTIAL=1, NONE=0} repair_dist_type;
double current_limit[A];
double mean_replacement_time[s];
double fuse_resistance[Ohm]; // The resistance value of the fuse when it is not blown.
}
class line {
parent link;
class link {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
enumeration {OPEN=0, CLOSED=1} status; //
object from; // from_node - source node
object to; // to_node - load node
complex power_in[VA]; // power flow in (w.r.t from node)
complex power_out[VA]; // power flow out (w.r.t to node)
double power_out_real[W]; // power flow out (w.r.t to node), real
complex power_losses[VA]; // power losses
complex power_in_A[VA]; // power flow in (w.r.t from node), phase A
complex power_in_B[VA]; // power flow in (w.r.t from node), phase B
complex power_in_C[VA]; // power flow in (w.r.t from node), phase C
complex power_out_A[VA]; // power flow out (w.r.t to node), phase A
complex power_out_B[VA]; // power flow out (w.r.t to node), phase B
complex power_out_C[VA]; // power flow out (w.r.t to node), phase C
complex power_losses_A[VA]; // power losses, phase A
complex power_losses_B[VA]; // power losses, phase B
complex power_losses_C[VA]; // power losses, phase C
complex current_out_A[A]; // current flow out of link (w.r.t. to node), phase A
complex current_out_B[A]; // current flow out of link (w.r.t. to node), phase B
complex current_out_C[A]; // current flow out of link (w.r.t. to node), phase C
complex current_in_A[A]; // current flow to link (w.r.t from node), phase A
complex current_in_B[A]; // current flow to link (w.r.t from node), phase B
complex current_in_C[A]; // current flow to link (w.r.t from node), phase C
complex fault_current_in_A[A]; // fault current flowing in, phase A
complex fault_current_in_B[A]; // fault current flowing in, phase B
complex fault_current_in_C[A]; // fault current flowing in, phase C
complex fault_current_out_A[A]; // fault current flowing out, phase A
complex fault_current_out_B[A]; // fault current flowing out, phase B
complex fault_current_out_C[A]; // fault current flowing out, phase C
set {CN=768, CR=512, CF=256, BN=48, BR=32, BF=16, AN=3, AR=2, AF=1, UNKNOWN=0} flow_direction; // flag used for describing direction of the flow of power
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
double continuous_rating[A]; // Continuous rating for this link object (set individual line segments
double emergency_rating[A]; // Emergency rating for this link object (set individual line segments
}
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
object configuration;
double length[ft];
}
class line_configuration {
object conductor_A;
object conductor_B;
object conductor_C;
object conductor_N;
object spacing;
complex z11[Ohm/mile];
complex z12[Ohm/mile];
complex z13[Ohm/mile];
complex z21[Ohm/mile];
complex z22[Ohm/mile];
complex z23[Ohm/mile];
complex z31[Ohm/mile];
complex z32[Ohm/mile];
complex z33[Ohm/mile];
double c11[nF/mile];
double c12[nF/mile];
double c13[nF/mile];
double c21[nF/mile];
double c22[nF/mile];
double c23[nF/mile];
double c31[nF/mile];
double c32[nF/mile];
double c33[nF/mile];
}
class line_spacing {
double distance_AB[ft];
double distance_BC[ft];
double distance_AC[ft];
double distance_AN[ft];
double distance_BN[ft];
double distance_CN[ft];
double distance_AE[ft]; // distance between phase A wire and earth
double distance_BE[ft]; // distance between phase B wire and earth
double distance_CE[ft]; // distance between phase C wire and earth
double distance_NE[ft]; // distance between neutral wire and earth
}
class link {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
enumeration {OPEN=0, CLOSED=1} status; //
object from; // from_node - source node
object to; // to_node - load node
complex power_in[VA]; // power flow in (w.r.t from node)
complex power_out[VA]; // power flow out (w.r.t to node)
double power_out_real[W]; // power flow out (w.r.t to node), real
complex power_losses[VA]; // power losses
complex power_in_A[VA]; // power flow in (w.r.t from node), phase A
complex power_in_B[VA]; // power flow in (w.r.t from node), phase B
complex power_in_C[VA]; // power flow in (w.r.t from node), phase C
complex power_out_A[VA]; // power flow out (w.r.t to node), phase A
complex power_out_B[VA]; // power flow out (w.r.t to node), phase B
complex power_out_C[VA]; // power flow out (w.r.t to node), phase C
complex power_losses_A[VA]; // power losses, phase A
complex power_losses_B[VA]; // power losses, phase B
complex power_losses_C[VA]; // power losses, phase C
complex current_out_A[A]; // current flow out of link (w.r.t. to node), phase A
complex current_out_B[A]; // current flow out of link (w.r.t. to node), phase B
complex current_out_C[A]; // current flow out of link (w.r.t. to node), phase C
complex current_in_A[A]; // current flow to link (w.r.t from node), phase A
complex current_in_B[A]; // current flow to link (w.r.t from node), phase B
complex current_in_C[A]; // current flow to link (w.r.t from node), phase C
complex fault_current_in_A[A]; // fault current flowing in, phase A
complex fault_current_in_B[A]; // fault current flowing in, phase B
complex fault_current_in_C[A]; // fault current flowing in, phase C
complex fault_current_out_A[A]; // fault current flowing out, phase A
complex fault_current_out_B[A]; // fault current flowing out, phase B
complex fault_current_out_C[A]; // fault current flowing out, phase C
set {CN=768, CR=512, CF=256, BN=48, BR=32, BF=16, AN=3, AR=2, AF=1, UNKNOWN=0} flow_direction; // flag used for describing direction of the flow of power
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
double continuous_rating[A]; // Continuous rating for this link object (set individual line segments
double emergency_rating[A]; // Emergency rating for this link object (set individual line segments
}
class load {
parent node;
class node {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {SWING=2, PV=1, PQ=0} bustype; // defines whether the node is a PQ, PV, or SWING node
set {HASSOURCE=1} busflags; // flag indicates node has a source for voltage, i.e. connects to the swing node
object reference_bus; // reference bus from which frequency is defined
double maximum_voltage_error[V]; // convergence voltage limit or convergence criteria
complex voltage_A[V]; // bus voltage, Phase A to ground
complex voltage_B[V]; // bus voltage, Phase B to ground
complex voltage_C[V]; // bus voltage, Phase C to ground
complex voltage_AB[V]; // line voltages, Phase AB
complex voltage_BC[V]; // line voltages, Phase BC
complex voltage_CA[V]; // line voltages, Phase CA
complex current_A[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_B[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_C[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex power_A[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_B[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_C[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_A[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_B[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_C[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex current_AB[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BC[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CA[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_AN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AB[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BC[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CA[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_AB[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BC[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CA[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_AN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
enumeration {OUT_OF_SERVICE=0, IN_SERVICE=1} service_status; // In and out of service flag
double service_status_double; // In and out of service flag - type double - will indiscriminately override service_status - useful for schedules
double previous_uptime[min]; // Previous time between disconnects of node in minutes
double current_uptime[min]; // Current time since last disconnect of node in minutes
bool Norton_dynamic; // Flag to indicate a Norton-equivalent connection -- used for generators and deltamode
object topological_parent; // topological parent as per GLM configuration
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {A=4, I=3, C=2, R=1, U=0} load_class; // Flag to track load type, not currently used for anything except sorting
complex constant_power_A[VA]; // constant power load on phase A, specified as VA
complex constant_power_B[VA]; // constant power load on phase B, specified as VA
complex constant_power_C[VA]; // constant power load on phase C, specified as VA
double constant_power_A_real[W]; // constant power load on phase A, real only, specified as W
double constant_power_B_real[W]; // constant power load on phase B, real only, specified as W
double constant_power_C_real[W]; // constant power load on phase C, real only, specified as W
double constant_power_A_reac[VAr]; // constant power load on phase A, imaginary only, specified as VAr
double constant_power_B_reac[VAr]; // constant power load on phase B, imaginary only, specified as VAr
double constant_power_C_reac[VAr]; // constant power load on phase C, imaginary only, specified as VAr
complex constant_current_A[A]; // constant current load on phase A, specified as Amps
complex constant_current_B[A]; // constant current load on phase B, specified as Amps
complex constant_current_C[A]; // constant current load on phase C, specified as Amps
double constant_current_A_real[A]; // constant current load on phase A, real only, specified as Amps
double constant_current_B_real[A]; // constant current load on phase B, real only, specified as Amps
double constant_current_C_real[A]; // constant current load on phase C, real only, specified as Amps
double constant_current_A_reac[A]; // constant current load on phase A, imaginary only, specified as Amps
double constant_current_B_reac[A]; // constant current load on phase B, imaginary only, specified as Amps
double constant_current_C_reac[A]; // constant current load on phase C, imaginary only, specified as Amps
complex constant_impedance_A[Ohm]; // constant impedance load on phase A, specified as Ohms
complex constant_impedance_B[Ohm]; // constant impedance load on phase B, specified as Ohms
complex constant_impedance_C[Ohm]; // constant impedance load on phase C, specified as Ohms
double constant_impedance_A_real[Ohm]; // constant impedance load on phase A, real only, specified as Ohms
double constant_impedance_B_real[Ohm]; // constant impedance load on phase B, real only, specified as Ohms
double constant_impedance_C_real[Ohm]; // constant impedance load on phase C, real only, specified as Ohms
double constant_impedance_A_reac[Ohm]; // constant impedance load on phase A, imaginary only, specified as Ohms
double constant_impedance_B_reac[Ohm]; // constant impedance load on phase B, imaginary only, specified as Ohms
double constant_impedance_C_reac[Ohm]; // constant impedance load on phase C, imaginary only, specified as Ohms
complex constant_power_AN[VA]; // constant power wye-connected load on phase A, specified as VA
complex constant_power_BN[VA]; // constant power wye-connected load on phase B, specified as VA
complex constant_power_CN[VA]; // constant power wye-connected load on phase C, specified as VA
double constant_power_AN_real[W]; // constant power wye-connected load on phase A, real only, specified as W
double constant_power_BN_real[W]; // constant power wye-connected load on phase B, real only, specified as W
double constant_power_CN_real[W]; // constant power wye-connected load on phase C, real only, specified as W
double constant_power_AN_reac[VAr]; // constant power wye-connected load on phase A, imaginary only, specified as VAr
double constant_power_BN_reac[VAr]; // constant power wye-connected load on phase B, imaginary only, specified as VAr
double constant_power_CN_reac[VAr]; // constant power wye-connected load on phase C, imaginary only, specified as VAr
complex constant_current_AN[A]; // constant current wye-connected load on phase A, specified as Amps
complex constant_current_BN[A]; // constant current wye-connected load on phase B, specified as Amps
complex constant_current_CN[A]; // constant current wye-connected load on phase C, specified as Amps
double constant_current_AN_real[A]; // constant current wye-connected load on phase A, real only, specified as Amps
double constant_current_BN_real[A]; // constant current wye-connected load on phase B, real only, specified as Amps
double constant_current_CN_real[A]; // constant current wye-connected load on phase C, real only, specified as Amps
double constant_current_AN_reac[A]; // constant current wye-connected load on phase A, imaginary only, specified as Amps
double constant_current_BN_reac[A]; // constant current wye-connected load on phase B, imaginary only, specified as Amps
double constant_current_CN_reac[A]; // constant current wye-connected load on phase C, imaginary only, specified as Amps
complex constant_impedance_AN[Ohm]; // constant impedance wye-connected load on phase A, specified as Ohms
complex constant_impedance_BN[Ohm]; // constant impedance wye-connected load on phase B, specified as Ohms
complex constant_impedance_CN[Ohm]; // constant impedance wye-connected load on phase C, specified as Ohms
double constant_impedance_AN_real[Ohm]; // constant impedance wye-connected load on phase A, real only, specified as Ohms
double constant_impedance_BN_real[Ohm]; // constant impedance wye-connected load on phase B, real only, specified as Ohms
double constant_impedance_CN_real[Ohm]; // constant impedance wye-connected load on phase C, real only, specified as Ohms
double constant_impedance_AN_reac[Ohm]; // constant impedance wye-connected load on phase A, imaginary only, specified as Ohms
double constant_impedance_BN_reac[Ohm]; // constant impedance wye-connected load on phase B, imaginary only, specified as Ohms
double constant_impedance_CN_reac[Ohm]; // constant impedance wye-connected load on phase C, imaginary only, specified as Ohms
complex constant_power_AB[VA]; // constant power delta-connected load on phase A, specified as VA
complex constant_power_BC[VA]; // constant power delta-connected load on phase B, specified as VA
complex constant_power_CA[VA]; // constant power delta-connected load on phase C, specified as VA
double constant_power_AB_real[W]; // constant power delta-connected load on phase A, real only, specified as W
double constant_power_BC_real[W]; // constant power delta-connected load on phase B, real only, specified as W
double constant_power_CA_real[W]; // constant power delta-connected load on phase C, real only, specified as W
double constant_power_AB_reac[VAr]; // constant power delta-connected load on phase A, imaginary only, specified as VAr
double constant_power_BC_reac[VAr]; // constant power delta-connected load on phase B, imaginary only, specified as VAr
double constant_power_CA_reac[VAr]; // constant power delta-connected load on phase C, imaginary only, specified as VAr
complex constant_current_AB[A]; // constant current delta-connected load on phase A, specified as Amps
complex constant_current_BC[A]; // constant current delta-connected load on phase B, specified as Amps
complex constant_current_CA[A]; // constant current delta-connected load on phase C, specified as Amps
double constant_current_AB_real[A]; // constant current delta-connected load on phase A, real only, specified as Amps
double constant_current_BC_real[A]; // constant current delta-connected load on phase B, real only, specified as Amps
double constant_current_CA_real[A]; // constant current delta-connected load on phase C, real only, specified as Amps
double constant_current_AB_reac[A]; // constant current delta-connected load on phase A, imaginary only, specified as Amps
double constant_current_BC_reac[A]; // constant current delta-connected load on phase B, imaginary only, specified as Amps
double constant_current_CA_reac[A]; // constant current delta-connected load on phase C, imaginary only, specified as Amps
complex constant_impedance_AB[Ohm]; // constant impedance delta-connected load on phase A, specified as Ohms
complex constant_impedance_BC[Ohm]; // constant impedance delta-connected load on phase B, specified as Ohms
complex constant_impedance_CA[Ohm]; // constant impedance delta-connected load on phase C, specified as Ohms
double constant_impedance_AB_real[Ohm]; // constant impedance delta-connected load on phase A, real only, specified as Ohms
double constant_impedance_BC_real[Ohm]; // constant impedance delta-connected load on phase B, real only, specified as Ohms
double constant_impedance_CA_real[Ohm]; // constant impedance delta-connected load on phase C, real only, specified as Ohms
double constant_impedance_AB_reac[Ohm]; // constant impedance delta-connected load on phase A, imaginary only, specified as Ohms
double constant_impedance_BC_reac[Ohm]; // constant impedance delta-connected load on phase B, imaginary only, specified as Ohms
double constant_impedance_CA_reac[Ohm]; // constant impedance delta-connected load on phase C, imaginary only, specified as Ohms
complex measured_voltage_A; // current measured voltage on phase A
complex measured_voltage_B; // current measured voltage on phase B
complex measured_voltage_C; // current measured voltage on phase C
complex measured_voltage_AB; // current measured voltage on phases AB
complex measured_voltage_BC; // current measured voltage on phases BC
complex measured_voltage_CA; // current measured voltage on phases CA
bool phase_loss_protection; // Trip all three phases of the load if a fault occurs
double base_power_A[VA]; // in similar format as ZIPload, this represents the nominal power on phase A before applying ZIP fractions
double base_power_B[VA]; // in similar format as ZIPload, this represents the nominal power on phase B before applying ZIP fractions
double base_power_C[VA]; // in similar format as ZIPload, this represents the nominal power on phase C before applying ZIP fractions
double power_pf_A[pu]; // in similar format as ZIPload, this is the power factor of the phase A constant power portion of load
double current_pf_A[pu]; // in similar format as ZIPload, this is the power factor of the phase A constant current portion of load
double impedance_pf_A[pu]; // in similar format as ZIPload, this is the power factor of the phase A constant impedance portion of load
double power_pf_B[pu]; // in similar format as ZIPload, this is the power factor of the phase B constant power portion of load
double current_pf_B[pu]; // in similar format as ZIPload, this is the power factor of the phase B constant current portion of load
double impedance_pf_B[pu]; // in similar format as ZIPload, this is the power factor of the phase B constant impedance portion of load
double power_pf_C[pu]; // in similar format as ZIPload, this is the power factor of the phase C constant power portion of load
double current_pf_C[pu]; // in similar format as ZIPload, this is the power factor of the phase C constant current portion of load
double impedance_pf_C[pu]; // in similar format as ZIPload, this is the power factor of the phase C constant impedance portion of load
double power_fraction_A[pu]; // this is the constant power fraction of base power on phase A
double current_fraction_A[pu]; // this is the constant current fraction of base power on phase A
double impedance_fraction_A[pu]; // this is the constant impedance fraction of base power on phase A
double power_fraction_B[pu]; // this is the constant power fraction of base power on phase B
double current_fraction_B[pu]; // this is the constant current fraction of base power on phase B
double impedance_fraction_B[pu]; // this is the constant impedance fraction of base power on phase B
double power_fraction_C[pu]; // this is the constant power fraction of base power on phase C
double current_fraction_C[pu]; // this is the constant current fraction of base power on phase C
double impedance_fraction_C[pu]; // this is the constant impedance fraction of base power on phase C
}
class load_tracker {
object target; // target object to track the load of
char256 target_property; // property on the target object representing the load
enumeration {ANGLE=3, MAGNITUDE=2, IMAGINARY=1, REAL=0} operation; // operation to perform on complex property types
double full_scale; // magnitude of the load at full load, used for feed-forward control
double setpoint; // load setpoint to track to
double deadband; // percentage deadband
double damping; // load setpoint to track to
double output; // output scaling value
double feedback; // the feedback signal, for reference purposes
}
class meter {
parent node;
class node {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {SWING=2, PV=1, PQ=0} bustype; // defines whether the node is a PQ, PV, or SWING node
set {HASSOURCE=1} busflags; // flag indicates node has a source for voltage, i.e. connects to the swing node
object reference_bus; // reference bus from which frequency is defined
double maximum_voltage_error[V]; // convergence voltage limit or convergence criteria
complex voltage_A[V]; // bus voltage, Phase A to ground
complex voltage_B[V]; // bus voltage, Phase B to ground
complex voltage_C[V]; // bus voltage, Phase C to ground
complex voltage_AB[V]; // line voltages, Phase AB
complex voltage_BC[V]; // line voltages, Phase BC
complex voltage_CA[V]; // line voltages, Phase CA
complex current_A[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_B[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_C[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex power_A[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_B[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_C[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_A[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_B[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_C[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex current_AB[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BC[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CA[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_AN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AB[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BC[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CA[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_AB[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BC[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CA[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_AN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
enumeration {OUT_OF_SERVICE=0, IN_SERVICE=1} service_status; // In and out of service flag
double service_status_double; // In and out of service flag - type double - will indiscriminately override service_status - useful for schedules
double previous_uptime[min]; // Previous time between disconnects of node in minutes
double current_uptime[min]; // Current time since last disconnect of node in minutes
bool Norton_dynamic; // Flag to indicate a Norton-equivalent connection -- used for generators and deltamode
object topological_parent; // topological parent as per GLM configuration
}
function reset();
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
double measured_real_energy[Wh]; // metered real energy consumption, cummalitive
double measured_reactive_energy[VAh]; // metered reactive energy consumption, cummalitive
complex measured_power[VA]; // metered real power
complex measured_power_A[VA]; // metered complex power on phase A
complex measured_power_B[VA]; // metered complex power on phase B
complex measured_power_C[VA]; // metered complex power on phase C
double measured_demand[W]; // greatest metered real power during simulation
double measured_real_power[W]; // metered real power
double measured_reactive_power[VAr]; // metered reactive power
complex meter_power_consumption[VA]; // metered power used for operating the meter; standby and communication losses
complex measured_voltage_A[V]; // measured line-to-neutral voltage on phase A
complex measured_voltage_B[V]; // measured line-to-neutral voltage on phase B
complex measured_voltage_C[V]; // measured line-to-neutral voltage on phase C
complex measured_voltage_AB[V]; // measured line-to-line voltage on phase AB
complex measured_voltage_BC[V]; // measured line-to-line voltage on phase BC
complex measured_voltage_CA[V]; // measured line-to-line voltage on phase CA
complex measured_current_A[A]; // measured current on phase A
complex measured_current_B[A]; // measured current on phase B
complex measured_current_C[A]; // measured current on phase C
bool customer_interrupted; // Reliability flag - goes active if the customer is in an 'interrupted' state
bool customer_interrupted_secondary; // Reliability flag - goes active if the customer is in an 'secondary interrupted' state - i.e., momentary
double monthly_bill[$]; // Accumulator for the current month's bill
double previous_monthly_bill[$]; // Total monthly bill for the previous month
double previous_monthly_energy[kWh]; // Total monthly energy for the previous month
double monthly_fee[$]; // Once a month flat fee for customer hook-up
double monthly_energy[kWh]; // Accumulator for the current month's energy consumption
enumeration {TIERED_RTP=4, HOURLY=3, TIERED=2, UNIFORM=1, NONE=0} bill_mode; // Billing structure desired
object power_market; // Market (auction object) where the price is being received from
int32 bill_day; // day of month bill is to be processed (currently limited to days 1-28)
double price[$/kWh]; // current price of electricity
double price_base[$/kWh]; // Used only in TIERED_RTP mode to describe the price before the first tier
double first_tier_price[$/kWh]; // price of electricity between first tier and second tier energy usage
double first_tier_energy[kWh]; // switching point between base price and first tier price
double second_tier_price[$/kWh]; // price of electricity between second tier and third tier energy usage
double second_tier_energy[kWh]; // switching point between first tier price and second tier price
double third_tier_price[$/kWh]; // price of electricity when energy usage exceeds third tier energy usage
double third_tier_energy[kWh]; // switching point between second tier price and third tier price
}
class motor {
parent node;
class node {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {SWING=2, PV=1, PQ=0} bustype; // defines whether the node is a PQ, PV, or SWING node
set {HASSOURCE=1} busflags; // flag indicates node has a source for voltage, i.e. connects to the swing node
object reference_bus; // reference bus from which frequency is defined
double maximum_voltage_error[V]; // convergence voltage limit or convergence criteria
complex voltage_A[V]; // bus voltage, Phase A to ground
complex voltage_B[V]; // bus voltage, Phase B to ground
complex voltage_C[V]; // bus voltage, Phase C to ground
complex voltage_AB[V]; // line voltages, Phase AB
complex voltage_BC[V]; // line voltages, Phase BC
complex voltage_CA[V]; // line voltages, Phase CA
complex current_A[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_B[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_C[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex power_A[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_B[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_C[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_A[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_B[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_C[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex current_AB[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BC[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CA[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_AN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AB[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BC[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CA[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_AB[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BC[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CA[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_AN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
enumeration {OUT_OF_SERVICE=0, IN_SERVICE=1} service_status; // In and out of service flag
double service_status_double; // In and out of service flag - type double - will indiscriminately override service_status - useful for schedules
double previous_uptime[min]; // Previous time between disconnects of node in minutes
double current_uptime[min]; // Current time since last disconnect of node in minutes
bool Norton_dynamic; // Flag to indicate a Norton-equivalent connection -- used for generators and deltamode
object topological_parent; // topological parent as per GLM configuration
}
}
class node {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {SWING=2, PV=1, PQ=0} bustype; // defines whether the node is a PQ, PV, or SWING node
set {HASSOURCE=1} busflags; // flag indicates node has a source for voltage, i.e. connects to the swing node
object reference_bus; // reference bus from which frequency is defined
double maximum_voltage_error[V]; // convergence voltage limit or convergence criteria
complex voltage_A[V]; // bus voltage, Phase A to ground
complex voltage_B[V]; // bus voltage, Phase B to ground
complex voltage_C[V]; // bus voltage, Phase C to ground
complex voltage_AB[V]; // line voltages, Phase AB
complex voltage_BC[V]; // line voltages, Phase BC
complex voltage_CA[V]; // line voltages, Phase CA
complex current_A[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_B[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_C[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex power_A[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_B[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_C[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_A[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_B[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_C[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex current_AB[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BC[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CA[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_AN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AB[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BC[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CA[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_AB[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BC[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CA[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_AN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
enumeration {OUT_OF_SERVICE=0, IN_SERVICE=1} service_status; // In and out of service flag
double service_status_double; // In and out of service flag - type double - will indiscriminately override service_status - useful for schedules
double previous_uptime[min]; // Previous time between disconnects of node in minutes
double current_uptime[min]; // Current time since last disconnect of node in minutes
bool Norton_dynamic; // Flag to indicate a Norton-equivalent connection -- used for generators and deltamode
object topological_parent; // topological parent as per GLM configuration
}
class overhead_line {
parent line;
class line {
parent link;
class link {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
enumeration {OPEN=0, CLOSED=1} status; //
object from; // from_node - source node
object to; // to_node - load node
complex power_in[VA]; // power flow in (w.r.t from node)
complex power_out[VA]; // power flow out (w.r.t to node)
double power_out_real[W]; // power flow out (w.r.t to node), real
complex power_losses[VA]; // power losses
complex power_in_A[VA]; // power flow in (w.r.t from node), phase A
complex power_in_B[VA]; // power flow in (w.r.t from node), phase B
complex power_in_C[VA]; // power flow in (w.r.t from node), phase C
complex power_out_A[VA]; // power flow out (w.r.t to node), phase A
complex power_out_B[VA]; // power flow out (w.r.t to node), phase B
complex power_out_C[VA]; // power flow out (w.r.t to node), phase C
complex power_losses_A[VA]; // power losses, phase A
complex power_losses_B[VA]; // power losses, phase B
complex power_losses_C[VA]; // power losses, phase C
complex current_out_A[A]; // current flow out of link (w.r.t. to node), phase A
complex current_out_B[A]; // current flow out of link (w.r.t. to node), phase B
complex current_out_C[A]; // current flow out of link (w.r.t. to node), phase C
complex current_in_A[A]; // current flow to link (w.r.t from node), phase A
complex current_in_B[A]; // current flow to link (w.r.t from node), phase B
complex current_in_C[A]; // current flow to link (w.r.t from node), phase C
complex fault_current_in_A[A]; // fault current flowing in, phase A
complex fault_current_in_B[A]; // fault current flowing in, phase B
complex fault_current_in_C[A]; // fault current flowing in, phase C
complex fault_current_out_A[A]; // fault current flowing out, phase A
complex fault_current_out_B[A]; // fault current flowing out, phase B
complex fault_current_out_C[A]; // fault current flowing out, phase C
set {CN=768, CR=512, CF=256, BN=48, BR=32, BF=16, AN=3, AR=2, AF=1, UNKNOWN=0} flow_direction; // flag used for describing direction of the flow of power
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
double continuous_rating[A]; // Continuous rating for this link object (set individual line segments
double emergency_rating[A]; // Emergency rating for this link object (set individual line segments
}
function interupdate_pwr_object();
function update_power_pwr_object();
function check_limits_pwr_object();
object configuration;
double length[ft];
}
function create_fault();
function fix_fault();
function interupdate_pwr_object();
function recalc_distribution_line();
function update_power_pwr_object();
function check_limits_pwr_object();
}
class overhead_line_conductor {
double geometric_mean_radius[ft]; // radius of the conductor
double resistance[Ohm/mile]; // resistance in Ohms/mile of the conductor
double diameter[in]; // Diameter of line for capacitance calculations
double rating.summer.continuous[A]; // Continuous summer amp rating
double rating.summer.emergency[A]; // Emergency summer amp rating
double rating.winter.continuous[A]; // Continuous winter amp rating
double rating.winter.emergency[A]; // Emergency winter amp rating
}
class power_metrics {
function calc_metrics();
function reset_interval_metrics();
function reset_annual_metrics();
function init_reliability();
function logfile_extra();
double SAIFI; // Displays annual SAIFI values as per IEEE 1366-2003
double SAIFI_int; // Displays SAIFI values over the period specified by base_time_value as per IEEE 1366-2003
double SAIDI; // Displays annual SAIDI values as per IEEE 1366-2003
double SAIDI_int; // Displays SAIDI values over the period specified by base_time_value as per IEEE 1366-2003
double CAIDI; // Displays annual CAIDI values as per IEEE 1366-2003
double CAIDI_int; // Displays SAIDI values over the period specified by base_time_value as per IEEE 1366-2003
double ASAI; // Displays annual AISI values as per IEEE 1366-2003
double ASAI_int; // Displays AISI values over the period specified by base_time_value as per IEEE 1366-2003
double MAIFI; // Displays annual MAIFI values as per IEEE 1366-2003
double MAIFI_int; // Displays MAIFI values over the period specified by base_time_value as per IEEE 1366-2003
double base_time_value[s]; // time period over which _int values are claculated
}
class powerflow_library {
}
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
class pqload {
parent load;
class load {
parent node;
class node {
parent powerflow_object;
class powerflow_object {
set {A=1, B=2, C=4, D=256, N=8, S=112, G=128} phases;
double nominal_voltage[V];
}
function delta_linkage_node();
function interupdate_pwr_object();
function delta_freq_pwr_object();
enumeration {SWING=2, PV=1, PQ=0} bustype; // defines whether the node is a PQ, PV, or SWING node
set {HASSOURCE=1} busflags; // flag indicates node has a source for voltage, i.e. connects to the swing node
object reference_bus; // reference bus from which frequency is defined
double maximum_voltage_error[V]; // convergence voltage limit or convergence criteria
complex voltage_A[V]; // bus voltage, Phase A to ground
complex voltage_B[V]; // bus voltage, Phase B to ground
complex voltage_C[V]; // bus voltage, Phase C to ground
complex voltage_AB[V]; // line voltages, Phase AB
complex voltage_BC[V]; // line voltages, Phase BC
complex voltage_CA[V]; // line voltages, Phase CA
complex current_A[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_B[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex current_C[A]; // bus current injection (in = positive), this an accumulator only, not a output or input variable
complex power_A[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_B[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex power_C[VA]; // bus power injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_A[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_B[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex shunt_C[S]; // bus shunt admittance, this an accumulator only, not a output or input variable
complex current_AB[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BC[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CA[A]; // bus current delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_AN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_BN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex current_CN[A]; // bus current wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AB[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BC[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CA[VA]; // bus power delta-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_AN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_BN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex power_CN[VA]; // bus power wye-connected injection (in = positive), this an accumulator only, not a output or input variable
complex shunt_AB[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BC[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CA[S]; // bus shunt delta-connected admittance, this an accumulator only, not a output or input variable
complex shunt_AN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_BN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
complex shunt_CN[S]; // bus shunt wye-connected admittance, this an accumulator only, not a output or input variable
double mean_repair_time[s]; // Time after a fault clears for the object to be back in service
enumeration {OUT_OF_SERVICE=0, IN_SERVICE=1} service_status; // In and out of service flag
double service_status_double; // In and out of service flag - type double - will indiscriminately override service_status - useful for schedules
double previous_uptime[min]; // Previous time between disconnects of node in minutes
double current_uptime[min]; // Current time since last disconnect of node in minutes
bool Norton_dynamic; // Flag to indicate a Norton-equivalent connection -- used for generators and deltamode
object topological_parent; // topological parent as per GLM configuration
}