-
Notifications
You must be signed in to change notification settings - Fork 70
/
PowerSystems.jl
584 lines (523 loc) · 12.9 KB
/
PowerSystems.jl
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
isdefined(Base, :__precompile__) && __precompile__()
"""
Module for constructing self-contained power system objects.
"""
module PowerSystems
#################################################################################
# Exports
export System
export Topology
export Bus
export ACBus
export DCBus
export Arc
export AggregationTopology
export Area
export LoadZone
export get_aggregation_topology_accessor
export Component
export Device
export get_max_active_power
export get_max_reactive_power
export Branch
export StaticInjection
export StaticInjectionSubsystem
export ACBranch
export Line
export MonitoredLine
export DCBranch
export TwoTerminalHVDCLine
export TwoTerminalVSCDCLine
export TModelHVDCLine
export Transformer2W
export TapTransformer
export PhaseShiftingTransformer
export ThreePartCost
export TwoPartCost
export VariableCost
export MultiStartCost
export MarketBidCost
export StorageManagementCost
export get_slopes
export get_breakpoint_upperbounds
export Generator
export HydroGen
export HydroDispatch
export HydroEnergyReservoir
export HydroPumpedStorage
export InterconnectingConverter
export RenewableGen
export RenewableFix
export RenewableDispatch
export ThermalGen
export ThermalStandard
export ThermalMultiStart
export ElectricLoad
export StaticLoad
export PowerLoad
export StandardLoad
export FixedAdmittance
export ControllableLoad
export InterruptiblePowerLoad
export Storage
export GenericBattery
export BatteryEMS
export DynamicComponent
export DynamicInjection
export DynamicGenerator
export DynamicInverter
export DynamicBranch
export HybridSystem
export RegulationDevice
export GenericDER
export AggregateDistributedGenerationA
export SingleCageInductionMachine
export SimplifiedSingleCageInductionMachine
export ActiveConstantPowerLoad
export DynamicExponentialLoad
#AVR Exports
export AVR
export AVRFixed
export AVRSimple
export AVRTypeI
export AVRTypeII
export IEEET1
export ESDC1A
export ESDC2A
export ESAC1A
export ESAC6A
export EXAC1
export EXAC1A
export EXAC2
export EXPIC1
export ESST1A
export ESST4B
export SCRX
export SEXS
#Machine Exports
export Machine
export BaseMachine
export RoundRotorMachine
export SalientPoleMachine
export RoundRotorQuadratic
export SalientPoleQuadratic
export RoundRotorExponential
export SalientPoleExponential
export OneDOneQMachine
export SauerPaiMachine
export MarconatoMachine
export SimpleMarconatoMachine
export AndersonFouadMachine
export SimpleAFMachine
export FullMachine
export SimpleFullMachine
#PSS Exports
export PSS
export PSSFixed
export PSSSimple
export IEEEST
export STAB1
export PSS2A
export PSS2B
export PSS2C
export CSVGN1
#Shaft Exports
export Shaft
export SingleMass
export FiveMassShaft
#TG Exports
export TurbineGov
export TGFixed
export TGTypeI
export TGTypeII
export GasTG
export GeneralGovModel
export HydroTurbineGov
export IEEETurbineGov1
export SteamTurbineGov1
export DEGOV
# Converter Exports
export Converter
export AverageConverter
export RenewableEnergyConverterTypeA
export RenewableEnergyVoltageConverterTypeA
# DC Source Exports
export DCSource
export FixedDCSource
export ZeroOrderBESS
# Filter Exports
export Filter
export LCLFilter
export LCFilter
export RLFilter
# FrequencyEstimator Exports
export FrequencyEstimator
export KauraPLL
export ReducedOrderPLL
export FixedFrequency
# Outer Control Exports
export OuterControl
export VirtualInertia
export ReactivePowerDroop
export ActivePowerDroop
export ActivePowerPI
export ReactivePowerPI
export ActiveVirtualOscillator
export ReactiveVirtualOscillator
export ActiveRenewableControllerAB
export ReactiveRenewableControllerAB
# InnerControl Export
export InnerControl
export VoltageModeControl
export CurrentModeControl
export RECurrentControlB
# InverterLimiters Export
export MagnitudeCurrentLimiter
export InstantaneousCurrentLimiter
export PriorityCurrentLimiter
export Source
export PeriodicVariableSource
export Service
export AbstractReserve
export Reserve
export ReserveNonSpinning
export ReserveDirection
export ReserveUp
export ReserveDown
export ReserveSymmetric
export StaticReserve
export VariableReserve
export AGC
export ReserveDemandCurve
export Transfer
export StaticReserveGroup
export StaticReserveNonSpinning
export VariableReserveNonSpinning
export TransmissionInterface
export AngleUnits
export ACBusTypes
export PrimeMovers
export ThermalFuels
export StateTypes
export TimeSeriesData
export StaticTimeSeries
export Forecast
export AbstractDeterministic
export Deterministic
export Probabilistic
export SingleTimeSeries
export DeterministicSingleTimeSeries
export Scenarios
export ForecastCache
export StaticTimeSeriesCache
export NormalizationFactor
export NormalizationTypes
export get_dynamic_components
export parse_file
export add_time_series!
export remove_time_series!
export check_time_series_consistency
export clear_time_series!
export copy_time_series!
export copy_subcomponent_time_series!
export add_component!
export add_components!
export remove_component!
export remove_components!
export clear_components!
export add_service!
export remove_service!
export clear_services!
export get_services
export has_service
export has_time_series
export get_buses
export get_components_in_aggregation_topology
export get_aggregation_topology_mapping
export get_contributing_devices
export get_contributing_device_mapping
export ServiceContributingDevices
export ServiceContributingDevicesKey
export ServiceContributingDevicesMapping
export get_component
export get_components
export show_components
export get_subcomponents
export get_components_by_name
export get_available_components
export get_existing_device_types
export get_existing_component_types
export get_forecast_horizon
export get_forecast_initial_timestamp
export get_forecast_interval
export get_forecast_window_count
export get_time_series
export get_time_series_array
export get_time_series_resolution
export get_time_series_timestamps
export get_time_series_values
export get_time_series_names
export get_time_series_counts
export get_scenario_count
export get_percentiles
export get_next_time_series_array!
export get_next_time
export get_horizon
export get_forecast_initial_times
export get_forecast_total_period
export get_resolution
export get_data
export iterate_components
export get_time_series_multiple
export get_variable_cost
export get_services_bid
export set_variable_cost!
export set_service_bid!
export iterate_windows
export get_window
export transform_single_time_series!
export sanitize_component!
export validate_component
export validate_component_with_system
export get_compression_settings
export CompressionSettings
export CompressionTypes
#export make_time_series
export get_bus_numbers
export get_name
export set_name!
export get_description
export set_description!
export get_base_power
export get_frequency
export set_units_base_system!
export to_json
export from_json
export serialize
export deserialize
export clear_ext!
export convert_component!
export set_area!
export set_load_zone!
export TamuSystem
export PowerModelsData
export PowerSystemTableData
export add_dyn_injectors!
export get_machine
export get_shaft
export get_avr
export get_prime_mover
export get_pss
export get_converter
export get_outer_control
export get_inner_control
export get_dc_source
export get_freq_estimator
export get_filter
export get_V_ref
export get_P_ref
export get_saturation_coeffs
export set_droop!
export set_participation_factor!
export set_inertia!
export set_reserve_limit_up!
export set_reserve_limit_dn!
export set_cost!
export get_droop
export get_inertia
export get_reserve_limit_up
export get_reserve_limit_dn
export get_participation_factor
export get_cost
export get_units_base
export get_runchecks
export get_thermal_unit
export get_electric_load
export get_storage
export get_renewable_unit
export get_interconnection_rating
export get_interconnection_impedance
export set_runchecks!
export check
export check_component
export check_components
export check_sil_values
export configure_logging
export open_file_logger
export make_logging_config_file
export MultiLogger
export LogEventTracker
export UnitSystem
export StructField
export StructDefinition
export generate_struct_file
export generate_struct_files
#################################################################################
# Imports
import LinearAlgebra
import Unicode: normalize
import Logging
import Dates
import TimeSeries
import DataFrames
import DataStructures: OrderedDict
import JSON3
import CSV
import YAML
import UUIDs
import Base.to_index
import InteractiveUtils
import PrettyTables
import PowerFlowData
import InfrastructureSystems
import InfrastructureSystems:
Components,
TimeSeriesData,
StaticTimeSeries,
Forecast,
AbstractDeterministic,
Deterministic,
Probabilistic,
SingleTimeSeries,
DeterministicSingleTimeSeries,
Scenarios,
ForecastCache,
StaticTimeSeriesCache,
InfrastructureSystemsComponent,
InfrastructureSystemsType,
InfrastructureSystemsInternal,
DeviceParameter,
FlattenIteratorWrapper,
LazyDictFromIterator,
DataFormatError,
InvalidRange,
InvalidValue,
copy_time_series!,
get_count,
get_data,
get_horizon,
get_resolution,
get_window,
get_name,
set_name!,
get_internal,
set_internal!,
get_time_series_container,
iterate_windows,
get_time_series,
has_time_series,
get_time_series_array,
get_time_series_timestamps,
get_time_series_values,
get_time_series_names,
get_scenario_count, # Scenario Forecast Exports
get_percentiles, # Probabilistic Forecast Exports
get_next_time_series_array!,
get_next_time,
get_units_info,
set_units_info!,
to_json,
from_json,
serialize,
deserialize,
get_time_series_multiple,
compare_values,
CompressionSettings,
CompressionTypes,
NormalizationFactor,
NormalizationTypes,
UnitSystem,
SystemUnitsSettings,
open_file_logger,
make_logging_config_file,
validate_struct,
MultiLogger,
LogEventTracker,
StructField,
StructDefinition
const IS = InfrastructureSystems
#################################################################################
using DocStringExtensions
@template (FUNCTIONS, METHODS) = """
$(TYPEDSIGNATURES)
$(DOCSTRING)
"""
#################################################################################
# Includes
"""
Supertype for all PowerSystems components.
All subtypes must include a InfrastructureSystemsInternal member.
Subtypes should call InfrastructureSystemsInternal() by default, but also must
provide a constructor that allows existing values to be deserialized.
"""
abstract type Component <: IS.InfrastructureSystemsComponent end
""" Supertype for "devices" (bus, line, etc.) """
abstract type Device <: Component end
# Include utilities
include("utils/logging.jl")
include("utils/IO/base_checks.jl")
include("utils/generate_struct_files.jl")
include("definitions.jl")
include("models/static_models.jl")
include("models/dynamic_models.jl")
include("models/injection.jl")
include("models/static_injection_subsystem.jl")
# PowerSystems models
include("models/topological_elements.jl")
include("models/branches.jl")
include("models/operational_cost.jl")
#include("models/network.jl")
# Static types
include("models/services.jl")
include("models/reserves.jl")
include("models/generation.jl")
include("models/storage.jl")
include("models/loads.jl")
include("models/dynamic_generator_components.jl")
include("models/dynamic_inverter_components.jl")
include("models/OuterControl.jl")
# Include all auto-generated structs.
include("models/generated/includes.jl")
include("models/regulation_device.jl")
include("models/HybridSystem.jl")
#Methods for devices
include("models/components.jl")
include("models/devices.jl")
# Dynamic Composed types
include("models/dynamic_generator.jl")
include("models/dynamic_inverter.jl")
include("models/dynamic_loads.jl")
include("models/dynamic_machines.jl")
include("models/RoundRotorExponential.jl")
include("models/RoundRotorQuadratic.jl")
include("models/SalientPoleExponential.jl")
include("models/SalientPoleQuadratic.jl")
include("models/dynamic_branch.jl")
include("models/supplemental_constructors.jl")
include("models/supplemental_accessors.jl")
# Definitions of PowerSystem
include("base.jl")
include("data_format_conversions.jl")
#Data Checks
include("utils/IO/system_checks.jl")
include("utils/IO/branchdata_checks.jl")
# cost function TimeSeries convertion
include("models/cost_function_timeseries.jl")
#Conversions
include("utils/conversion.jl")
# Include Parsing files
include("parsers/common.jl")
include("parsers/enums.jl")
include("parsers/pm_io.jl")
include("parsers/im_io.jl")
include("parsers/power_system_table_data.jl")
include("parsers/power_models_data.jl")
include("parsers/powerflowdata_data.jl")
include("parsers/psse_dynamic_data.jl")
include("parsers/TAMU_data.jl")
# Better printing
include("utils/print.jl")
include("models/serialization.jl")
#Deprecated
include("deprecated.jl")
end # module