diff --git a/stable b/stable index bc4c9fd45a..e682ea4299 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v3.2.3 \ No newline at end of file +v3.3.0 \ No newline at end of file diff --git a/v3 b/v3 index bc4c9fd45a..e682ea4299 120000 --- a/v3 +++ b/v3 @@ -1 +1 @@ -v3.2.3 \ No newline at end of file +v3.3.0 \ No newline at end of file diff --git a/v3.3 b/v3.3 new file mode 120000 index 0000000000..e682ea4299 --- /dev/null +++ b/v3.3 @@ -0,0 +1 @@ +v3.3.0 \ No newline at end of file diff --git a/v3.3.0/api/internal/index.html b/v3.3.0/api/internal/index.html new file mode 100644 index 0000000000..4e90ca5abd --- /dev/null +++ b/v3.3.0/api/internal/index.html @@ -0,0 +1,824 @@ + +Internal API Reference · PowerSystems.jl

Internal API

PowerSystems._pti_dtypesConstant

lookup array of data types for PTI file sections given by field_name, as enumerated by PSS/E Program Operation Manual.

source
PowerSystems.EX4VSAType
mutable struct EX4VSA <: AVR
+    Iflim::Float64
+    d::Float64
+    f::Float64
+    Spar::Float64
+    K1::Float64
+    K2::Float64
+    Oel_lim::MinMax
+    G::Float64
+    Ta::Float64
+    Tb::Float64
+    Te::Float64
+    E_lim::MinMax
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

IEEE Excitation System for Voltage Security Assesment

Arguments

  • Iflim::Float64: OEL Field current limit, validation range: (0, nothing), action if invalid: warn
  • d::Float64: OEL parameter d, validation range: (0, nothing), action if invalid: warn
  • f::Float64: OEL parameter f, validation range: (0, nothing), action if invalid: warn
  • Spar::Float64: OEL parameter Spar, validation range: (0, nothing), action if invalid: warn
  • K1::Float64: OEL delay time constant, validation range: (0, nothing), action if invalid: warn
  • K2::Float64: OEL parameter K2, validation range: (0, nothing), action if invalid: warn
  • Oel_lim::MinMax: Oel integrator limits (Oelmin, Oelmax)
  • G::Float64: AVR Exciter Gain, validation range: (0, nothing), action if invalid: warn
  • Ta::Float64: Numerator lead-lag (lag) time constant in s, validation range: (0, nothing), action if invalid: warn
  • Tb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing), action if invalid: warn
  • Te::Float64: Exciter Time Constant in s, validation range: (0, nothing), action if invalid: warn
  • E_lim::MinMax: Voltage regulator limits (regulator output) (Emin, Emax)
  • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
  • ext::Dict{String, Any}
  • states::Vector{Symbol}: The states are:
Vll: Lead-lag internal state,
+Vex: Exciter Output, 
+oel: OEL integrator state
  • n_states::Int: The EX4VSA has 3 states
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
PowerSystems.EXST1Type
mutable struct EXST1 <: AVR
+    Tr::Float64
+    Vi_lim::MinMax
+    Tc::Float64
+    Tb::Float64
+    Ka::Float64
+    Ta::Float64
+    Vr_lim::MinMax
+    Kc::Float64
+    Kf::Float64
+    Tf::Float64
+    V_ref::Float64
+    ext::Dict{String, Any}
+    states::Vector{Symbol}
+    n_states::Int
+    internal::InfrastructureSystemsInternal
+end

IEEE Type ST1 Excitation System (PTI version)

Arguments

  • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing), action if invalid: warn
  • Vi_lim::MinMax: Voltage input limits (Vimin, Vimax)
  • Tc::Float64: Numerator lead-lag (lead) time constant in s, validation range: (0, nothing), action if invalid: warn
  • Tb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing), action if invalid: warn
  • Ka::Float64: Amplifier Gain, validation range: (0, nothing), action if invalid: warn
  • Ta::Float64: Amplifier Time Constant in s, validation range: (0, nothing), action if invalid: warn
  • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vrmin, Vrmax)
  • Kc::Float64: Current field constant limiter multiplier, validation range: (0, nothing)
  • Kf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3), action if invalid: warn
  • Tf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing), action if invalid: error
  • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
  • ext::Dict{String, Any}
  • states::Vector{Symbol}: The states are:
Vm: Sensed Terminal Voltage,
+Vrll: Lead-Lag state,
+Vr: Regulator Output, 
+Vfb: Feedback state
  • n_states::Int: The EXST1 has 4 states
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
PowerSystems.ExponentialLoadType
mutable struct ExponentialLoad <: StaticLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    active_power::Float64
+    reactive_power::Float64
+    active_power_coefficient::Float64
+    reactive_power_coefficient::Float64
+    base_power::Float64
+    max_active_power::Float64
+    max_reactive_power::Float64
+    services::Vector{Service}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    ext::Dict{String, Any}
+    time_series_container::InfrastructureSystems.TimeSeriesContainer
+    internal::InfrastructureSystemsInternal
+end

Data structure for a static exponential load.

Arguments

  • name::String
  • available::Bool
  • bus::ACBus
  • active_power::Float64
  • reactive_power::Float64
  • active_power_coefficient::Float64: Coefficient relating voltage dependence for power P = P0 * V^α, validation range: (0, nothing), action if invalid: warn
  • reactive_power_coefficient::Float64: Coefficient relating voltage dependence for power Q = Q0 * V^β, validation range: (0, nothing), action if invalid: warn
  • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
  • max_active_power::Float64
  • max_reactive_power::Float64
  • services::Vector{Service}: Services that this device contributes to
  • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
  • ext::Dict{String, Any}
  • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
PowerSystems.PowerFlowDataNetworkMethod
PowerFlowDataNetwork(
+    file::Union{IO, String};
+    kwargs...
+) -> PowerSystems.PowerFlowDataNetwork
+

Constructs PowerFlowDataNetwork from a raw file. Currently Supports PSSE data files v30, v32 and v33

source
PowerSystems.SwitchedAdmittanceType
mutable struct SwitchedAdmittance <: ElectricLoad
+    name::String
+    available::Bool
+    bus::ACBus
+    Y::Complex{Float64}
+    number_of_steps::Int
+    Y_increase::Complex{Float64}
+    dynamic_injector::Union{Nothing, DynamicInjection}
+    services::Vector{Service}
+    ext::Dict{String, Any}
+    time_series_container::InfrastructureSystems.TimeSeriesContainer
+    internal::InfrastructureSystemsInternal
+end

Arguments

  • name::String
  • available::Bool
  • bus::ACBus
  • Y::Complex{Float64}: Initial impedance at N = 0
  • number_of_steps::Int: Number of steps for adjustable shunt
  • Y_increase::Complex{Float64}: Admittance increment for each of step increase
  • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection model for admittance
  • services::Vector{Service}: Services that this device contributes to
  • ext::Dict{String, Any}
  • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
  • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
source
Base.convertMethod
convert(
+    _::Type{@NamedTuple{min::Float64, max::Float64}},
+    input::Tuple{Float64, Float64}
+) -> @NamedTuple{min::Float64, max::Float64}
+

Convert Tuple to Min Max Named Tuple

source
Base.convertMethod
convert(
+    _::Type{@NamedTuple{up::Float64, down::Float64}},
+    input::Tuple{Float64, Float64}
+) -> @NamedTuple{up::Float64, down::Float64}
+

Convert Tuple to Up Down Named Tuple

source
PowerSystems._convert_argument_types!Method
_convert_argument_types!(
+    str::AbstractString,
+    struct_args::Vector
+) -> Any
+

Convert specific parameters to types that are not Float64 for specific inverter components

source
PowerSystems._create_starbus_from_transformerMethod
_create_starbus_from_transformer(
+    pm_data::Dict,
+    transformer::Dict,
+    starbus_id::Int64
+) -> Dict{String, Any}
+
create_starbus(pm_data, transformer)

Creates a starbus from a given three-winding transformer. "sourceid" is given by `["busi", "name", "I", "J", "K", "CKT"]` where "bus_i" and "name" are the modified names for the starbus, and "I", "J", "K" and "CKT" come from the originating transformer, in the PSS(R)E transformer specification.

source
PowerSystems._float2stringMethod
_float2string(
+    v::AbstractFloat,
+    float_precision::Int64
+) -> Union{String, WeakRefStrings.PosLenString}
+

converts a float value into a string of fixed precision

sprintf would do the job but this work around is needed because sprintf cannot take format strings during runtime

source
PowerSystems._get_bus_valueMethod
_get_bus_value(bus_i, field, pm_data) -> Any
+
_get_bus_value(bus_i, field, pm_data)

Returns the value of field of bus_i from the PowerModels data. Requires "bus" Dict to already be populated.

source
PowerSystems._get_line_elementsMethod
_get_line_elements(
+    line::AbstractString
+) -> Tuple{Vector{T} where T<:SubString, Union{String, SubString}}
+
_get_line_elements(line)

Internal function. Uses regular expressions to extract all separate data elements from a line of a PTI file and populate them into an Array{String}. Comments, typically indicated at the end of a line with a '/' character, are also extracted separately, and Array{Array{String}, String} is returned.

source
PowerSystems._greyMethod
_grey(s::String) -> String
+

Makes a string grey in the terminal, does not seem to work well on Windows terminals more info can be found at https://en.wikipedia.org/wiki/ANSIescapecode

source
PowerSystems._import_remaining_comps!Method
_import_remaining_comps!(
+    data_out::Dict,
+    data_in::Dict;
+    exclude
+)
+

Imports remaining top level component lists from data_in into data_out, excluding keys in exclude

source
PowerSystems._import_remaining_keys!Method
_import_remaining_keys!(
+    comp_dest::Dict,
+    comp_src::Dict;
+    exclude
+)
+

Imports remaining keys from a source component into detestation component, excluding keys in exclude

source
PowerSystems._init_bus!Method
_init_bus!(bus::Dict{String, Any}, id::Int64)
+
_init_bus!(bus, id)

Initializes a bus of id id with default values given in the PSS(R)E specification.

source
PowerSystems._instantiate_param_vector_sizeMethod
_instantiate_param_vector_size(
+    str::AbstractString,
+    param_map::Dict
+) -> Any
+

Construct appropiate vector size for components that collect parameters from more than 2 PSS/E components

source
PowerSystems._merge_cost_data!Method
_merge_cost_data!(
+    data::Dict{String, Any}
+) -> Union{Nothing, Dict{String, Any}}
+

merges generator cost functions into generator data, if costs exist

source
PowerSystems._parse_dyr_componentsMethod
_parse_dyr_components(
+    dyr_file::AbstractString
+) -> Dict{Int64, Any}
+

Parse a .dyr file directly from its name by constructing its dictionary of dictionaries.

source
PowerSystems._parse_dyr_componentsMethod
_parse_dyr_components(data::Dict) -> Dict{Int64, Any}
+

Parse dictionary of dictionaries of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator and dynamic inverter components (indexed via its id).

For Generators, each dictionary indexed by id contains a vector with 5 of its components:

  • Machine
  • Shaft
  • AVR
  • TurbineGov
  • PSS

For Inverters, each dictionary indexed by id contains a vector with 7 of its components:

  • Converter
  • ActivePowerControl
  • ReactivePowerControl
  • InnerControl
  • DCSource
  • FrequencyEstimator
  • Filter
source
PowerSystems._parse_dyr_fileMethod
_parse_dyr_file(file::AbstractString) -> Dict{Int64, Dict}
+

Parse .dyr file into a dictionary indexed by bus number. Each bus number key has a dictionary indexed by component type and id.

Comments in .dyr files are not supported (beginning of lines with //).

source
PowerSystems._parse_dyr_generator_components!Method
_parse_dyr_generator_components!(
+    bus_dict::Dict,
+    componentID,
+    componentValues,
+    gen_map::Dict,
+    param_map::Dict
+)
+

Parse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator indexed by its id.

source
PowerSystems._parse_dyr_inverter_components!Method
_parse_dyr_inverter_components!(
+    bus_dict::Dict,
+    inv_dict::Dict,
+    componentID::Tuple{String, String},
+    inv_map::Dict
+)
+

Parse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic inverter indexed by its id.

source
PowerSystems._parse_elementsMethod
_parse_elements(
+    elements::Array,
+    dtypes::Array,
+    defaults::Dict,
+    section::AbstractString
+) -> Dict{String, Any}
+

This is an experimental method for parsing elements and setting defaults at the same time. It is not currently working but would reduce memory allocations if implemented correctly.

source
PowerSystems._parse_line_element!Method
_parse_line_element!(
+    data::Dict,
+    elements::Array,
+    section::AbstractString
+)
+
_parse_line_element!(data, elements, section)

Internal function. Parses a single "line" of data elements from a PTI file, as given by elements which is an array of the line, typically split at ,. Elements are parsed into data types given by section and saved into data::Dict.

source
PowerSystems._parse_pti_dataMethod
_parse_pti_data(data_io::IO) -> Dict{String, Array{Dict}}
+
_parse_pti_data(data_string, sections)

Internal function. Parse a PTI raw file into a Dict, given the data_string of the file and a list of the sections in the PTI file (typically given by default by get_pti_sections().

source
PowerSystems._populate_argsMethod
_populate_args(param_map::Vector, val) -> Vector{Any}
+

Populate arguments in a vector for each dynamic component (except Shafts). Returns a vector with the parameter values of the argument of each component.

source
PowerSystems._psse2pm_branch!Method
_psse2pm_branch!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_branch!(pm_data, pti_data)

Parses PSS(R)E-style Branch data into a PowerModels-style Dict. "source_id" is given by ["I", "J", "CKT"] in PSS(R)E Branch specification.

source
PowerSystems._psse2pm_bus!Method
_psse2pm_bus!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_bus!(pm_data, pti_data)

Parses PSS(R)E-style Bus data into a PowerModels-style Dict. "source_id" is given by ["I", "NAME"] in PSS(R)E Bus specification.

source
PowerSystems._psse2pm_dcline!Method
_psse2pm_dcline!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_dcline!(pm_data, pti_data)

Parses PSS(R)E-style Two-Terminal and VSC DC Lines data into a PowerModels compatible Dict structure by first converting them to a simple DC Line Model. For Two-Terminal DC lines, "sourceid" is given by ["IPR", "IPI", "NAME"] in the PSS(R)E Two-Terminal DC specification. For Voltage Source Converters, "sourceid" is given by ["IBUS1", "IBUS2", "NAME"], where "IBUS1" is "IBUS" of the first converter bus, and "IBUS2" is the "IBUS" of the second converter bus, in the PSS(R)E Voltage Source Converter specification.

source
PowerSystems._psse2pm_generator!Method
_psse2pm_generator!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_generator!(pm_data, pti_data)

Parses PSS(R)E-style Generator data in a PowerModels-style Dict. "source_id" is given by ["I", "ID"] in PSS(R)E Generator specification.

source
PowerSystems._psse2pm_load!Method
_psse2pm_load!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_load!(pm_data, pti_data)

Parses PSS(R)E-style Load data into a PowerModels-style Dict. "source_id" is given by ["I", "ID"] in the PSS(R)E Load specification.

source
PowerSystems._psse2pm_shunt!Method
_psse2pm_shunt!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_shunt!(pm_data, pti_data)

Parses PSS(R)E-style Fixed and Switched Shunt data into a PowerModels-style Dict. "source_id" is given by ["I", "ID"] for Fixed Shunts, and ["I", "SWREM"] for Switched Shunts, as given by the PSS(R)E Fixed and Switched Shunts specifications.

source
PowerSystems._psse2pm_transformer!Method
_psse2pm_transformer!(
+    pm_data::Dict,
+    pti_data::Dict,
+    import_all::Bool
+)
+
_psse2pm_transformer!(pm_data, pti_data)

Parses PSS(R)E-style Transformer data into a PowerModels-style Dict. "source_id" is given by ["I", "J", "K", "CKT", "winding"], where "winding" is 0 if transformer is two-winding, and 1, 2, or 3 for three-winding, and the remaining keys are defined in the PSS(R)E Transformer specification.

source
PowerSystems._pti_to_powermodels!Method
_pti_to_powermodels!(
+    pti_data::Dict;
+    import_all,
+    validate,
+    correct_branch_rating
+) -> Dict{String, Any}
+
_pti_to_powermodels!(pti_data)

Converts PSS(R)E-style data parsed from a PTI raw file, passed by pti_data into a format suitable for use internally in PowerModels. Imports all remaining data from the PTI file if import_all is true (Default: false).

source
PowerSystems._read_data_rowMethod
_read_data_row(
+    data::PowerSystemTableData,
+    row,
+    field_infos;
+    na_to_nothing
+) -> NamedTuple
+

Reads values from dataframe row and performs necessary conversions.

source
PowerSystems._remove_pwl_cost_duplicates!Function
_remove_pwl_cost_duplicates!(id, comp, type_name) -> Bool
+_remove_pwl_cost_duplicates!(
+    id,
+    comp,
+    type_name,
+    tolerance
+) -> Bool
+

checks that each point in the a pwl function is unqiue, simplifies the function if duplicates appear

source
PowerSystems._simplify_pwl_cost!Function
_simplify_pwl_cost!(id, comp, type_name) -> Bool
+_simplify_pwl_cost!(id, comp, type_name, tolerance) -> Bool
+

checks the slope of each segment in a pwl function, simplifies the function if the slope changes is below a tolerance

source
PowerSystems._split_loads_shunts!Method
_split_loads_shunts!(data::Dict{String, Any})
+
_split_loads_shunts!(data)

Seperates Loads and Shunts in data under separate "load" and "shunt" keys in the PowerModels data format. Includes references to originating bus via "loadbus" and "shuntbus" keys, respectively.

source
PowerSystems._standardize_cost_terms!Method
_standardize_cost_terms!(
+    components::Dict{String},
+    comp_order::Int64,
+    cost_comp_name::String
+) -> Set{Int64}
+

ensures all polynomial costs functions have at exactly comp_order terms

source
PowerSystems._type_arrayMethod
_type_array(
+    string_array::Array{T<:AbstractString, 1}
+) -> Vector
+

Attempts to determine the type of an array of strings extracted from a matlab file

source
PowerSystems._type_valueMethod
_type_value(value_string::AbstractString) -> Any
+

Attempts to determine the type of a string extracted from a matlab file

source
PowerSystems.add_service_internal!Method
add_service_internal!(device::Device, service::Service)
+

This function add a service to the component without checking if the component and the service are attached to the same system

source
PowerSystems.adequacy_checkMethod
adequacy_check(sys::System)
+
adequacy_check(sys::System)

Checks the system for sum(generator ratings) >= sum(load ratings).

Arguments

  • sys::System: system
source
PowerSystems.bus_gen_lookupMethod
bus_gen_lookup(
+    gen_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what generators are connected to a given bus

source
PowerSystems.bus_load_lookupMethod
bus_load_lookup(
+    load_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what loads are connected to a given bus

source
PowerSystems.bus_shunt_lookupMethod
bus_shunt_lookup(
+    shunt_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what shunts are connected to a given bus

source
PowerSystems.bus_storage_lookupMethod
bus_storage_lookup(
+    storage_data::Dict{String},
+    bus_data::Dict{String}
+) -> Dict
+

builds a lookup list of what storage is connected to a given bus

source
PowerSystems.calc_branch_flow_acMethod
calc_branch_flow_ac(data::Dict{String}) -> Dict{String, Any}
+

assumes a vaild ac solution is included in the data and computes the branch flow values

source
PowerSystems.calc_branch_flow_dcMethod
calc_branch_flow_dc(data::Dict{String}) -> Dict{String, Any}
+

assumes a vaild dc solution is included in the data and computes the branch flow values

source
PowerSystems.calc_connected_componentsMethod
calc_connected_components(
+    pm_data::Dict{String};
+    edges
+) -> Set{Set{Int64}}
+

computes the connected components of the network graph returns a set of sets of bus ids, each set is a connected component

source
PowerSystems.calc_cost_pwl_linesMethod
calc_cost_pwl_lines(comp_dict::Dict) -> Dict{Any, Any}
+

compute lines in m and b from from pwl cost models data is a list of components.

Can be run on data or ref data structures

source
PowerSystems.calc_power_balanceMethod
calc_power_balance(data::Dict{String}) -> Dict{String, Any}
+

assumes a vaild solution is included in the data and computes the power balance at each bus

source
PowerSystems.calculate_saturation_coefficientsMethod
calculate_saturation_coefficients(
+    E::Tuple{Float64, Float64},
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients (A, B) of the function Se(x) = B(x - A)^2/x for Se(E1) = B(E1 - A)^2/E1 and Se(E2) = B(E2 - A)^2/E2 and uses the negative solution of the quadratic equation

source
PowerSystems.check_component_additionMethod
check_component_addition(
+    sys::System,
+    component::Component;
+    kwargs...
+)
+

Throws ArgumentError if a PowerSystems rule blocks addition to the system.

This method is tied with handlecomponentaddition!. If the methods are re-implemented for a subtype then whatever is added in handlecomponentaddition! must be checked here.

source
PowerSystems.check_statusMethod
check_status(data::Dict{String})
+

checks that active components are not connected to inactive buses, otherwise prints warnings

source
PowerSystems.check_typeMethod
check_type(typ, value) -> Any
+

Checks if the given value is of a given type, if not tries to make it that type

source
PowerSystems.correct_network_data!Method
correct_network_data!(
+    data::Dict{String};
+    correct_branch_rating
+) -> Dict{String, Dict{Symbol, Set{Int64}}}
+

Runs various data quality checks on a PowerModels data dictionary. Applies modifications in some cases. Reports modified component ids.

source
PowerSystems.correct_transformer_parameters!Method
correct_transformer_parameters!(
+    data::Dict{String}
+) -> Set{Int64}
+

checks that each branch has a reasonable transformer parameters

this is important because setting tap == 0.0 leads to NaN computations, which are hard to debug

source
PowerSystems.correct_voltage_angle_differences!Function
correct_voltage_angle_differences!(
+    data::Dict{String}
+) -> Set{Int64}
+correct_voltage_angle_differences!(
+    data::Dict{String},
+    default_pad
+) -> Set{Int64}
+

checks that voltage angle differences are within 90 deg., if not tightens

source
PowerSystems.deactivate_isolated_components!Method
deactivate_isolated_components!(data::Dict{String}) -> Bool
+

removes buses with single branch connections and without any other attached components. Also removes connected components without suffuceint generation or loads.

also deactivates 0 valued loads and shunts.

source
PowerSystems.get_avr_saturationMethod
get_avr_saturation(
+    E::Tuple{Float64, Float64},
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients for an AVR

source
PowerSystems.get_dataframeMethod
get_dataframe(
+    data::PowerSystemTableData,
+    category::PowerSystems.InputCategoryModule.InputCategory
+) -> DataFrames.DataFrame
+

Return the dataframe for the category.

source
PowerSystems.get_exponential_saturationMethod
get_exponential_saturation(
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients (A, B) of the function Se = Bx^A for Se(1.2) = B(1.2)^A and Se(1.0) = B(1.0)^A as: B = Se(1.0) and hence (1.2)^A = Se(1.2)/B -> A = log(Se(1.2)/B) / log(1.2)

source
PowerSystems.get_generator_mappingFunction
get_generator_mapping() -> Dict{NamedTuple, DataType}
+get_generator_mapping(
+    filename
+) -> Dict{NamedTuple, DataType}
+

Return a dict where keys are a tuple of input parameters (fuel, unit_type) and values are generator types.

source
PowerSystems.get_generator_typeMethod
get_generator_type(
+    fuel,
+    unit_type,
+    mappings::Dict{NamedTuple, DataType}
+) -> Union{Nothing, DataType}
+

Return the PowerSystems generator type for this fuel and unit_type.

source
PowerSystems.get_quadratic_saturationMethod
get_quadratic_saturation(
+    Se::Tuple{Float64, Float64}
+) -> Tuple{Float64, Float64}
+

Obtain coefficients (A, B) of the function Se = B(x - A)^2/x for Se(1.2) = B(1.2 - A)^2/1.2 and Se(1.0) = B(1.0 - A)^2/1.0 as: Se(1.0) = (Se(1.2) * 1.2) /(1.2 - A)^2 * (1.0 - A)^2/1.0 that yields (1.2 - A)^2 Se(1.0) = Se(1.2) * 1.2 * (1.0 - A)^2 or expanding: (1.2 * Se(1.2) - Se(1.0)) A^2 + (2.4 Se(1.0) - 2 * 1.2 * Se(1.2)) A + (1.2 * Se(1.2) - 1.44 Se(1.0)) = 0 and uses the negative solution of the quadratic equation.

source
PowerSystems.get_series_susceptanceMethod
get_series_susceptance(
+    b::Union{PhaseShiftingTransformer, TapTransformer}
+) -> Float64
+

Returns the series susceptance of a controllable transformer following the convention in power systems to define susceptance as the inverse of the imaginary part of the impedance. In the case of phase shifter transformers the angle is ignored.

source
PowerSystems.get_user_fieldMethod
get_user_field(
+    data::PowerSystemTableData,
+    category::PowerSystems.InputCategoryModule.InputCategory,
+    field::AbstractString
+) -> Any
+

Return the custom name stored in the user descriptor file.

Throws DataFormatError if a required value is not found in the file.

source
PowerSystems.get_user_fieldsMethod
get_user_fields(
+    data::PowerSystemTableData,
+    category::PowerSystems.InputCategoryModule.InputCategory
+) -> Any
+

Return a vector of user-defined fields for the category.

source
PowerSystems.has_componentMethod
has_component(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+) -> Bool
+

Check to see if the component of type T with name exists.

source
PowerSystems.im_replicateMethod
im_replicate(
+    sn_data::Dict{String},
+    count::Int64,
+    global_keys::Set{String}
+) -> Dict{String, Any}
+

Transforms a single network into a multinetwork with several deepcopies of the original network

source
PowerSystems.is_attachedMethod
is_attached(component::Component, sys::System) -> Bool
+

Return true if the component is attached to the system.

source
PowerSystems.isafieldMethod
isafield(component::Component, field::Symbol) -> Any
+

Checks if a PowerSystemDevice has a field or subfield name.

source
PowerSystems.iterate_rowsMethod
iterate_rows(
+    data::PowerSystemTableData,
+    category;
+    na_to_nothing
+) -> Channel{Any}
+

Return a NamedTuple of parameters from the descriptor file for each row of a dataframe, making type conversions as necessary.

Refer to the PowerSystems descriptor file for field names that will be created.

source
PowerSystems.load_csv_parser!Method
load_csv_parser!(sys::System, data::PowerSystemTableData)
+
load_csv_parser!(sys::System, data::PowerSystemTableData)

Add loads to the System from the raw load data.

source
PowerSystems.loadzone_csv_parser!Method
loadzone_csv_parser!(
+    sys::System,
+    data::PowerSystemTableData
+)
+
loadzone_csv_parser!(sys::System, data::PowerSystemTableData)

Add branches to the System from the raw data.

source
PowerSystems.make_busMethod
make_bus(bus_dict::Dict{String, Any}) -> ACBus
+

Creates a PowerSystems.ACBus from a PowerSystems bus dictionary

source
PowerSystems.make_generatorMethod
make_generator(
+    data::PowerSystemTableData,
+    gen,
+    cost_colnames,
+    bus,
+    gen_storage
+) -> Any
+

Creates a generator of any type.

source
PowerSystems.make_thermal_genMethod
make_thermal_gen(
+    gen_name::AbstractString,
+    d::Dict,
+    bus::ACBus,
+    sys_mbase::Number
+) -> ThermalStandard
+

The polynomial term follows the convention that for an n-degree polynomial, at least n + 1 components are needed. c(p) = cn*p^n+...+c1p+c0 co is stored in the field in of the Econ Struct

source
PowerSystems.parse_psseMethod
parse_psse(io::IO; kwargs...) -> Dict{String, Any}
+
function parse_psse(io::IO; kwargs...)::Dict

Parses directly from iostream

source
PowerSystems.parse_psseMethod
parse_psse(filename::String; kwargs...) -> Dict{String, Any}
+
parse_psse(filename::String; kwargs...)::Dict

Parses directly from file

source
PowerSystems.parse_ptiMethod
parse_pti(io::IO) -> Dict{String, Array{Dict}}
+
parse_pti(io::IO)

Reads PTI data in io::IO, returning a Dict of the data parsed into the proper types.

source
PowerSystems.parse_ptiMethod
parse_pti(filename::String) -> Dict{String, Array{Dict}}
+
parse_pti(filename::String)

Open PTI raw file given by filename, returning a Dict of the data parsed into the proper types.

source
PowerSystems.propagate_topology_status!Method
propagate_topology_status!(
+    data::Dict{String}
+) -> Union{Nothing, Bool}
+

finds active network buses and branches that are not necessary for the computation and sets their status to off.

Works on a PowerModels data dict, so that a it can be used without a GenericPowerModel object

Warning: this implementation has quadratic complexity, in the worst case

source
PowerSystems.read_gen!Method
read_gen!(
+    sys::System,
+    data::Dict,
+    bus_number_to_bus::Dict{Int64, ACBus};
+    kwargs...
+)
+

Transfer generators to ps_dict according to their classification

source
PowerSystems.replicateMethod
replicate(
+    sn_data::Dict{String},
+    count::Int64;
+    global_keys
+) -> Dict{String, Any}
+

Turns in given single network data in multinetwork data with a count replicate of the given network. Note that this function performs a deepcopy of the network data. Significant multinetwork space savings can often be achieved by building application specific methods of building multinetwork with minimal data replication.

source
PowerSystems.resolve_swithces!Method
resolve_swithces!(data::Dict{String})
+

given a network data dict merges buses that are connected by closed switches converting the dataset into a pure bus-branch model.

source
PowerSystems.simplify_network!Method
simplify_network!(data::Dict{String}) -> Bool
+

attempts to deactive components that are not needed in the network by repeated calls to propagate_topology_status! and deactivate_isolated_components!

warning: this implementation has quadratic complexity, in the worst case

source
PowerSystems.total_capacity_ratingMethod
total_capacity_rating(sys::System) -> Any
+
total_capacity_rating(sys::System)

Sum of system generator and storage ratings.

Arguments

  • sys::System: system
source
PowerSystems.total_load_ratingMethod
total_load_rating(sys::System) -> Any
+
total_load_rating(sys::System)

Checks the system for sum(generator ratings) >= sum(load ratings).

Arguments

  • sys::System: system
source
PowerSystems.update_bus_ids!Method
update_bus_ids!(
+    data::Dict{String},
+    bus_id_map::Dict{Int64, Int64};
+    injective
+)
+

given a network data dict and a mapping of current-bus-ids to new-bus-ids modifies the data dict to reflect the proposed new bus ids.

source
PowerSystems.update_data!Method
update_data!(data::Dict{String}, new_data::Dict{String})
+

recursively applies new_data to data, overwriting information

source
PowerSystems.verify_device_eligibilityMethod
verify_device_eligibility(
+    sys::System,
+    component::StaticInjection,
+    service::Service
+)
+

Validates if a device is eligible to contribute to a service.

Arguments

  • sys::System: PowerSystem System
  • component::StaticInjection: Static injection device
  • service::Service,: Service for which the device is eligible to contribute
source
diff --git a/v3.3.0/api/public/index.html b/v3.3.0/api/public/index.html new file mode 100644 index 0000000000..c075cf36d9 --- /dev/null +++ b/v3.3.0/api/public/index.html @@ -0,0 +1,701 @@ + +Public API Reference · PowerSystems.jl

Public API Reference

Modeling

PowerSystems.ComponentType

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.

source
PowerSystems.get_base_powerMethod
get_base_power(c::Component) -> Float64
+
Default behavior of a component. If there is no base_power field, assume is in the system's base power.
source
PowerSystems.set_dynamic_injector!Method
set_dynamic_injector!(
+    static_injector::StaticInjection,
+    dynamic_injector::Union{Nothing, DynamicInjection}
+)
+

Any StaticInjection struct that wants to support dynamic injectors must implement this method to set the value.

The method is only for internal uses.

source
PowerSystems.has_serviceMethod
has_service(device::Device, _::Type{T<:Service}) -> Bool
+

Return true if a service with type T is attached to the device.

source
PowerSystems.remove_service!Method
remove_service!(device::Device, service::Service)
+

Remove a service from a device.

Throws ArgumentError if the service is not attached to the device.

source
PowerSystems.RenewableGenType

Supertype for all renewable generation technologies Requires the implementation of get_ratingand get_power_factor methods

source
PowerSystems.get_dynamic_componentsMethod
get_dynamic_components(
+    device::DynamicInjection
+) -> Base.Generator{I, F} where {I<:(Base.Iterators.Filter{PowerSystems.var"#6#8", I} where I<:(Base.Iterators.Zip{Is} where Is<:Tuple{Any, Tuple})), F<:(PowerSystems.var"#5#7"{<:DynamicInjection})}
+

Return all the dynamic components of a DynamicInjection device

source
PowerSystems.get_states_typesMethod
get_states_types(d::DynamicComponent) -> Vector{StateTypes}
+
Default implementation of get_state_types for dynamic components. Assumes all states are
+Differential
source
PowerSystems.get_breakpoint_upperboundsMethod
get_breakpoint_upperbounds(
+    vc::VariableCost{Vector{Tuple{Float64, Float64}}}
+) -> Vector{Float64}
+

Calculates the upper bounds of a variable cost function represented as a collection of piece-wise linear segments.

source
PowerSystems.get_slopesMethod
get_slopes(
+    vc::VariableCost{Vector{Tuple{Float64, Float64}}}
+) -> Vector{Float64}
+

Calculates the slopes for the variable cost represented as a piece wise linear cost function. This function returns n - slopes for n - piecewise linear elements in the function. The first element of the return array corresponds to the average cost at the minimum operating point. If your formulation uses n -1 slopes, you can disregard the first component of the array. If the first point in the variable cost has a quantity of 0.0, the first slope returned will be 0.0, otherwise, the first slope represents the trajectory to get from the origin to the first point in the variable cost.

source

TimeSeries

InfrastructureSystems.TimeSeriesDataType

Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.

InfrastructureSystems.DeterministicType
mutable struct Deterministic <: AbstractDeterministic
+    name::String
+    data::Union{
+        SortedDict{Dates.DateTime, Vector{CONSTANT}},
+        SortedDict{Dates.DateTime, Vector{POLYNOMIAL}},
+        SortedDict{Dates.DateTime, Vector{PWL}},
+    }
+    resolution::Dates.Period
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • data::Union{SortedDict{Dates.DateTime, Vector{CONSTANT}}, SortedDict{Dates.DateTime, Vector{POLYNOMIAL}}, SortedDict{Dates.DateTime, Vector{PWL}}}: timestamp - scalingfactor
  • resolution::Dates.Period: forecast resolution
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
InfrastructureSystems.DeterministicMethod
Deterministic(
+    name::AbstractString,
+    input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
InfrastructureSystems.DeterministicMethod
Deterministic(
+    name::AbstractString,
+    filename::AbstractString,
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
InfrastructureSystems.DeterministicMethod
Deterministic(
+    name::AbstractString,
+    series_data::InfrastructureSystems.RawTimeSeries,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Deterministic
+

Construct Deterministic from RawTimeSeries.

InfrastructureSystems.DeterministicMethod
Deterministic(
+    forecast::Deterministic,
+    data
+) -> Deterministic
+

Construct a new Deterministic from an existing instance and a subset of data.

InfrastructureSystems.get_dataMethod
get_data(
+    value::Deterministic
+) -> Union{DataStructures.SortedDict{Dates.DateTime, Vector{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Vector{Float64}}, DataStructures.SortedDict{Dates.DateTime, Vector{Tuple{Float64, Float64}}}}
+

Get Deterministic data.

InfrastructureSystems.ProbabilisticType
mutable struct Probabilistic <: Forecast
+    name::String
+    resolution::Dates.Period
+    percentiles::Vector{Float64}
+    data::Union{
+        SortedDict{Dates.DateTime, Matrix{CONSTANT}},
+        SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}},
+        SortedDict{Dates.DateTime, Matrix{PWL}},
+    }
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A Probabilistic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • percentiles::Vector{Float64}: Percentiles for the probabilistic forecast
  • data::Union{SortedDict{Dates.DateTime, Matrix{CONSTANT}}, SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}}, SortedDict{Dates.DateTime, Matrix{PWL}}}: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    name::AbstractString,
+    input_data::AbstractDict,
+    percentiles::Vector,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct Probabilistic from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    name::AbstractString,
+    input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},
+    percentiles::Vector{Float64};
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct Probabilistic from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • percentiles: Percentiles represented in the probabilistic forecast
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
InfrastructureSystems.ProbabilisticMethod
Probabilistic(
+    name::AbstractString,
+    series_data::InfrastructureSystems.RawTimeSeries,
+    percentiles::Vector,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Probabilistic
+

Construct Deterministic from RawTimeSeries.

InfrastructureSystems.get_dataMethod
get_data(
+    value::Probabilistic
+) -> Union{DataStructures.SortedDict{Dates.DateTime, Matrix{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Float64}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Tuple{Float64, Float64}}}}
+

Get Probabilistic data.

InfrastructureSystems.ScenariosType
mutable struct Scenarios <: Forecast
+    name::String
+    resolution::Dates.Period
+    scenario_count::Int64
+    data::Union{
+        SortedDict{Dates.DateTime, Matrix{CONSTANT}},
+        SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}},
+        SortedDict{Dates.DateTime, Matrix{PWL}},
+    }
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A Discrete Scenario Based time series for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • resolution::Dates.Period: forecast resolution
  • scenario_count::Int64: Number of scenarios
  • data::Union{SortedDict{Dates.DateTime, Matrix{CONSTANT}}, SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}}, SortedDict{Dates.DateTime, Matrix{PWL}}}: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
InfrastructureSystems.ScenariosMethod
Scenarios(
+    name::AbstractString,
+    input_data::AbstractDict,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Scenarios
+

Construct Scenarios from a SortedDict of Arrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.
  • resolution::Dates.Period: The resolution of the forecast in Dates.Period`
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
InfrastructureSystems.ScenariosMethod
Scenarios(
+    name::AbstractString,
+    input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};
+    normalization_factor,
+    scaling_factor_multiplier
+) -> Scenarios
+

Construct Scenarios from a Dict of TimeArrays.

Arguments

  • name::AbstractString: user-defined name
  • input_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.
InfrastructureSystems.get_dataMethod
get_data(
+    value::Scenarios
+) -> Union{DataStructures.SortedDict{Dates.DateTime, Matrix{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Float64}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Tuple{Float64, Float64}}}}
+

Get Scenarios data.

InfrastructureSystems.DeterministicSingleTimeSeriesType
mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic
+    single_time_series::SingleTimeSeries
+    initial_timestamp::Dates.DateTime
+    interval::Dates.Period
+    count::Int
+    horizon::Int
+end

A deterministic forecast for a particular data field in a Component that wraps a SingleTimeSeries.

Arguments

  • single_time_series::SingleTimeSeries: wrapped SingleTimeSeries object
  • initial_timestamp::Dates.DateTime: time series availability time
  • interval::Dates.Period: time step between forecast windows
  • count::Int: number of forecast windows
  • horizon::Int: length of this time series
InfrastructureSystems.SingleTimeSeriesType
mutable struct SingleTimeSeries <: StaticTimeSeries
+    name::String
+    data::TimeSeries.TimeArray
+    scaling_factor_multiplier::Union{Nothing, Function}
+    internal::InfrastructureSystemsInternal
+end

A deterministic forecast for a particular data field in a Component.

Arguments

  • name::String: user-defined name
  • data::TimeSeries.TimeArray: timestamp - scalingfactor
  • scaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.
  • internal::InfrastructureSystemsInternal
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    name::AbstractString,
+    filename::AbstractString,
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    resolution::Dates.Period;
+    normalization_factor,
+    scaling_factor_multiplier
+) -> SingleTimeSeries
+

Construct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.

Arguments

  • name::AbstractString: user-defined name
  • filename::AbstractString: name of CSV file containing data
  • component::InfrastructureSystemsComponent: component associated with the data
  • resolution::Dates.Period: resolution of the time series
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    name::AbstractString,
+    data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};
+    normalization_factor,
+    scaling_factor_multiplier,
+    timestamp
+) -> SingleTimeSeries
+

Construct SingleTimeSeries from a TimeArray or DataFrame.

Arguments

  • name::AbstractString: user-defined name
  • data::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data
  • normalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry
  • scaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.
  • timestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.
InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    time_series::SingleTimeSeries,
+    data::TimeSeries.TimeArray
+) -> Any
+

Creates a new SingleTimeSeries from an existing instance and a subset of data.

InfrastructureSystems.SingleTimeSeriesMethod
SingleTimeSeries(
+    name::String,
+    resolution::Dates.Period,
+    initial_time::Dates.DateTime,
+    time_steps::Int64
+) -> SingleTimeSeries
+

Construct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.

InfrastructureSystems.fromMethod
from(
+    time_series::SingleTimeSeries,
+    timestamp
+) -> SingleTimeSeries
+

Return a time_series truncated starting with timestamp.

InfrastructureSystems.headMethod
head(time_series::SingleTimeSeries) -> Any
+

Return a time_series with only the first num values.

InfrastructureSystems.tailMethod
tail(time_series::SingleTimeSeries) -> Any
+

Return a time_series with only the ending num values.

InfrastructureSystems.toMethod
to(
+    time_series::SingleTimeSeries,
+    timestamp
+) -> SingleTimeSeries
+

Return a time_series truncated after timestamp.

InfrastructureSystems.whenMethod
when(
+    time_series::SingleTimeSeries,
+    period::Function,
+    t::Integer
+) -> Any
+

Refer to TimeSeries.when(). Underlying data is copied.

InfrastructureSystems.get_windowMethod
get_window(forecast::Forecast, index::Int64; len) -> Any
+

Return the forecast window corresponsing to interval index.

InfrastructureSystems.make_time_arrayMethod
make_time_array(
+    forecast::Forecast,
+    start_time::Dates.DateTime;
+    len
+) -> Any
+

Return a TimeSeries.TimeArray for one forecast window.

InfrastructureSystems.get_next_time_series_array!Method
get_next_time_series_array!(
+    cache::InfrastructureSystems.TimeSeriesCache
+) -> Any
+

Return the next TimeSeries.TimeArray.

Returns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.

Reads from storage if the data is not already in cache.

Arguments

  • cache::StaticTimeSeriesCache: cached instance

System

PowerSystems.SystemType

System

A power system defined by fields for base_power, components, and time series.

System(base_power)
+System(base_power, buses, components...)
+System(base_power, buses, generators, loads, branches, storage, services; kwargs...)
+System(base_power, buses, generators, loads; kwargs...)
+System(file; kwargs...)
+System(; buses, generators, loads, branches, storage, base_power, services, kwargs...)
+System(; kwargs...)

Arguments

  • base_power::Float64: the base power value for the system
  • buses::Vector{ACBus}: an array of buses
  • components...: Each element must be an iterable containing subtypes of Component.

Keyword arguments

  • ext::Dict: Contains user-defined parameters. Should only contain standard types.
  • runchecks::Bool: Run available checks on input fields and when add_component! is called. Throws InvalidValue if an error is found.
  • time_series_in_memory::Bool=false: Store time series data in memory instead of HDF5.
  • enable_compression::Bool=false: Enable compression of time series data in HDF5.
  • compression::CompressionSettings: Allows customization of HDF5 compression settings.
  • config_path::String: specify path to validation config file
source
PowerSystems.SystemMethod
System(
+    sys_file::AbstractString,
+    dyr_file::AbstractString;
+    kwargs...
+) -> Any
+

Parse static and dynamic data directly from PSS/e text files. Automatically generates all the relationships between the available dynamic injection models and the static counterpart

Each dictionary indexed by id contains a vector with 5 of its components:

  • Machine
  • Shaft
  • AVR
  • TurbineGov
  • PSS

Files must be parsed from a .raw file (PTI data format) and a .dyr file.

Examples:

raw_file = "Example.raw"
+dyr_file = "Example.dyr"
+sys = System(raw_file, dyr_file)
source
PowerSystems.SystemMethod
System(
+    file_path::AbstractString;
+    assign_new_uuids,
+    kwargs...
+) -> Any
+

Constructs a System from a file path ending with .m, .RAW, or .json

If the file is JSON then assignnewuuids = true will generate new UUIDs for the system and all components.

source
PowerSystems.SystemMethod
System(
+    data,
+    base_power::Number;
+    internal,
+    kwargs...
+) -> System
+

Construct a System from InfrastructureSystems.SystemData

source
PowerSystems.SystemMethod
System(
+    base_power::Float64,
+    buses::Vector{ACBus},
+    components...;
+    kwargs...
+) -> System
+

System constructor when components are constructed externally.

source
PowerSystems.SystemMethod
System(
+    ::Nothing;
+    buses,
+    generators,
+    loads,
+    branches,
+    storage,
+    base_power,
+    services,
+    kwargs...
+) -> System
+

Constructs a non-functional System for demo purposes.

source
PowerSystems.SystemMethod
System(base_power::Number; kwargs...) -> System
+

Construct an empty System. Useful for building a System while parsing raw data.

source
PowerSystems.SystemMethod
System(
+    data::PowerSystemTableData;
+    time_series_resolution,
+    time_series_in_memory,
+    time_series_directory,
+    runchecks,
+    kwargs...
+) -> System
+

Construct a System from PowerSystemTableData data.

Arguments

  • time_series_resolution::Union{DateTime, Nothing}=nothing: only store time_series that match this resolution.
  • time_series_in_memory::Bool=false: Store time series data in memory instead of HDF5 file
  • time_series_directory=nothing: Store time series data in directory instead of tmpfs
  • runchecks::Bool=true: Validate struct fields.

Throws DataFormatError if time_series with multiple resolutions are detected.

  • A time_series has a different resolution than others.
  • A time_series has a different horizon than others.
source
PowerSystems.SystemMethod
System(pm_data::PowerModelsData; kwargs...) -> Any
+

Constructs a System from PowerModelsData.

Arguments

  • pm_data::Union{PowerModelsData, Union{String, IO}}: PowerModels data object or supported

load flow case (*.m, *.raw)

Keyword arguments

  • ext::Dict: Contains user-defined parameters. Should only contain standard types.
  • runchecks::Bool: Run available checks on input fields and when add_component! is called. Throws InvalidValue if an error is found.
  • time_series_in_memory::Bool=false: Store time series data in memory instead of HDF5.
  • config_path::String: specify path to validation config file
  • pm_data_corrections::Bool=true : Run the PowerModels data corrections (aka :validate in PowerModels)
  • import_all:Bool=false : Import all fields from PTI files

Examples

sys = System(
+    pm_data, config_path = "ACTIVSg25k_validation.json",
+    bus_name_formatter = x->string(x["name"]*"-"*string(x["index"])),
+    load_name_formatter = x->strip(join(x["source_id"], "_"))
+)
source
InfrastructureSystems.get_time_series_multipleFunction
get_time_series_multiple(sys::System; ...) -> Channel{Any}
+get_time_series_multiple(
+    sys::System,
+    filter_func;
+    type,
+    name
+) -> Channel{Any}
+

Return an iterator of time series in order of initial time.

Note that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.

Call collect on the result to get an array.

Arguments

  • data::SystemData: system
  • filter_func = nothing: Only return time series for which this returns true.
  • type = nothing: Only return time series with this type.
  • name = nothing: Only return time series matching this value.

Examples

for time_series in get_time_series_multiple(sys)
+    @show time_series
+end
+
+ts = collect(get_time_series_multiple(sys; type = SingleTimeSeries))
source
InfrastructureSystems.set_name!Method
set_name!(
+    component::Component,
+    name::AbstractString
+) -> AbstractString
+

Set the name of a component.

Throws an exception if the component is attached to a system.

source
InfrastructureSystems.set_name!Method
set_name!(
+    sys::System,
+    component::Component,
+    name::AbstractString
+)
+

Set the name for a component that is attached to the system.

source
InfrastructureSystems.to_jsonMethod
to_json(
+    sys::System,
+    filename::AbstractString;
+    user_data,
+    pretty,
+    force,
+    runchecks
+)
+

Serializes a system to a JSON string.

Arguments

  • sys::System: system
  • filename::AbstractString: filename to write

Keyword arguments

  • user_data::Union{Nothing, Dict} = nothing: optional metadata to record
  • pretty::Bool = false: whether to pretty-print the JSON
  • force::Bool = false: whether to overwrite existing files
  • check::Bool = false: whether to run system validation checks

Refer to check_component for exceptions thrown if check = true.

source
PowerSystems.add_component!Method
add_component!(
+    sys::System,
+    dyn_injector::DynamicInjection,
+    static_injector::StaticInjection;
+    kwargs...
+)
+

Add a dynamic injector to the system.

Throws ArgumentError if the name does not match the staticinjector name. Throws ArgumentError if the staticinjector is not attached to the system.

All rules for the generic add_component! method also apply.

source
PowerSystems.add_component!Method
add_component!(
+    sys::System,
+    component::Component;
+    skip_validation,
+    kwargs...
+)
+

Add a component to the system.

Throws ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.

Examples

sys = System(100.0)
+
+# Add a single component.
+add_component!(sys, bus)
+
+# Add many at once.
+buses = [bus1, bus2, bus3]
+generators = [gen1, gen2, gen3]
+foreach(x -> add_component!(sys, x), Iterators.flatten((buses, generators)))
source
PowerSystems.add_components!Method
add_components!(sys::System, components)
+

Add many components to the system at once.

Throws ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.

Examples

sys = System(100.0)
+
+buses = [bus1, bus2, bus3]
+generators = [gen1, gen2, gen3]
+foreach(x -> add_component!(sys, x), Iterators.flatten((buses, generators)))
source
PowerSystems.add_service!Method
add_service!(device::Device, service::Service, sys::System)
+

Similar to add_service! but for Service and Device already stored in the system. Performs validation checks on the device and the system

Arguments

  • device::Device: Device
  • service::Service: Service
  • sys::System: system
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::Service,
+    contributing_devices;
+    kwargs...
+)
+

Similar to add_component! but for services.

Arguments

  • sys::System: system
  • service::Service: service to add
  • contributing_devices: Must be an iterable of type Device
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::Service,
+    contributing_device::Device;
+    kwargs...
+)
+

Similar to add_component! but for services.

Arguments

  • sys::System: system
  • service::Service: service to add
  • contributing_device::Device: Valid Device
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::StaticReserveGroup,
+    contributing_services::Vector{<:Service};
+    skip_validation,
+    kwargs...
+)
+

Similar to add_component! but for StaticReserveGroup.

Arguments

  • sys::System: system
  • service::StaticReserveGroup: service to add
  • contributing_services: contributing services to the group
source
PowerSystems.add_service!Method
add_service!(
+    sys::System,
+    service::StaticReserveGroup;
+    skip_validation,
+    kwargs...
+)
+

Similar to add_component! but for StaticReserveGroup.

Arguments

  • sys::System: system
  • service::StaticReserveGroup: service to add
source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    metadata_file::AbstractString;
+    resolution
+)
+

Add time series data from a metadata file or metadata descriptors.

Arguments

  • sys::System: system
  • metadata_file::AbstractString: metadata file for timeseries that includes an array of IS.TimeSeriesFileMetadata instances or a vector.
  • resolution::DateTime.Period=nothing: skip time series that don't match this resolution.
source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    components,
+    time_series::TimeSeriesData
+)
+

Add the same time series data to multiple components.

This is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.

Throws ArgumentError if a component is not stored in the system.

source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    component::Component,
+    time_series::TimeSeriesData
+)
+

Add time series data to a component.

Throws ArgumentError if the component is not stored in the system.

source
PowerSystems.add_time_series!Method
add_time_series!(
+    sys::System,
+    file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};
+    resolution
+)
+

Add time series data from a metadata file or metadata descriptors.

Arguments

  • sys::System: system
  • timeseries_metadata::Vector{IS.TimeSeriesFileMetadata}: metadata for timeseries
  • resolution::DateTime.Period=nothing: skip time series that don't match this resolution.
source
PowerSystems.check_componentMethod
check_component(sys::System, component::Component)
+

Check the values of a component.

Throws InvalidValue if any of the component's field values are outside of defined valid range or if the custom validate method for the type fails its check.

source
PowerSystems.check_time_series_consistencyMethod
check_time_series_consistency(
+    sys::System,
+    _::Type{T<:TimeSeriesData}
+) -> Union{Nothing, Tuple{Any, Int64}}
+

Checks time series in the system for inconsistencies.

For SingleTimeSeries, returns a Tuple of initial_timestamp and length.

This is a no-op for subtypes of Forecast because those are already guaranteed to be consistent.

Throws InfrastructureSystems.InvalidValue if any time series is inconsistent.

source
PowerSystems.convert_component!Method
convert_component!(
+    sys::System,
+    line::Line,
+    linetype::Type{MonitoredLine};
+    kwargs...
+)
+

Converts a Line component to a MonitoredLine component and replaces the original in the system

source
PowerSystems.convert_component!Method
convert_component!(
+    sys::System,
+    line::MonitoredLine,
+    linetype::Type{Line};
+    kwargs...
+)
+

Converts a MonitoredLine component to a Line component and replaces the original in the system

source
PowerSystems.convert_component!Method
convert_component!(
+    sys::System,
+    old_load::PowerLoad,
+    new_type::Type{StandardLoad};
+    kwargs...
+)
+

Converts a PowerLoad component to a StandardLoad component and replaces the original in the system. Does not set any fields in StandardLoad that lack a PowerLoad equivalent

source
PowerSystems.get_busMethod
get_bus(
+    sys::System,
+    name::AbstractString
+) -> Union{Nothing, ACBus}
+

Return bus with name.

source
PowerSystems.get_busesMethod
get_buses(
+    sys::System,
+    aggregator::AggregationTopology
+) -> Vector{ACBus}
+

Return a vector of buses contained within the AggregationTopology.

source
PowerSystems.get_busesMethod
get_buses(
+    sys::System,
+    bus_numbers::Set{Int64}
+) -> Vector{ACBus}
+

Return all buses values with bus_numbers.

source
PowerSystems.get_componentMethod
get_component(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+) -> Any
+

Get the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.

See get_components_by_name for abstract types with non-unique names across subtypes.

Throws ArgumentError if T is not a concrete type and there is more than one component with requested name

source
PowerSystems.get_componentsMethod
get_components(
+    _::Type{T<:Component},
+    sys::System
+) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:Component, I<:(Vector)}
+

Returns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.

Examples

iter = PowerSystems.get_components(ThermalStandard, sys)
+iter = PowerSystems.get_components(Generator, sys)
+iter = PowerSystems.get_components(x -> PowerSystems.get_available(x), Generator, sys)
+thermal_gens = get_components(ThermalStandard, sys) do gen
+    get_available(gen)
+end
+generators = collect(PowerSystems.get_components(Generator, sys))
+

See also: iterate_components

source
PowerSystems.get_components_by_nameMethod
get_components_by_name(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+) -> Vector{T} where T<:InfrastructureSystems.InfrastructureSystemsComponent
+

Get the components of abstract type T with name. Note that PowerSystems enforces unique names on each concrete type but not across concrete types.

See get_component if the concrete type is known.

Throws ArgumentError if T is not an abstract type.

source
PowerSystems.get_components_in_aggregation_topologyMethod
get_components_in_aggregation_topology(
+    _::Type{T<:StaticInjection},
+    sys::System,
+    aggregator::AggregationTopology
+) -> Vector{T} where T<:StaticInjection
+

Return a vector of components with buses in the AggregationTopology.

source
PowerSystems.get_extMethod
get_ext(sys::System) -> Union{Nothing, Dict{String, Any}}
+

Return a user-modifiable dictionary to store extra information.

source
PowerSystems.get_time_series_countsMethod
get_time_series_counts(
+    sys::System
+) -> Tuple{Int64, Any, Any}
+

Return a tuple of counts of components with time series and total time series and forecasts.

source
PowerSystems.remove_component!Method
remove_component!(sys::System, component::Component)
+

Remove a component from the system by its value.

Throws ArgumentError if the component is not stored.

source
PowerSystems.remove_component!Method
remove_component!(
+    _::Type{T<:Component},
+    sys::System,
+    name::AbstractString
+)
+

Remove a component from the system by its name.

Throws ArgumentError if the component is not stored.

source
PowerSystems.remove_time_series!Method
remove_time_series!(
+    sys::System,
+    _::Type{T<:TimeSeriesData},
+    component::Component,
+    name::String
+)
+

Remove the time series data for a component and time series type.

source
PowerSystems.set_runchecks!Method
set_runchecks!(sys::System, value::Bool)
+

Enable or disable system checks. Applies to component addition as well as overall system consistency.

source
PowerSystems.set_units_base_system!Method
set_units_base_system!(system::System, settings::String)
+

Sets the units base for the getter functions on the devices. It modifies the behavior of all getter functions

source

Additional Component Methods

PowerSystems.get_max_reactive_powerMethod
get_max_reactive_power(d::RenewableDispatch) -> Any
+

Return the max reactive power for the Renewable Generation calculated as the rating * powerfactor if reactivepower_limits is nothing

source
InfrastructureSystems.get_time_seriesMethod
get_time_series(
+    ::Type{T<:TimeSeriesData},
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    name::AbstractString;
+    start_time,
+    len,
+    count
+) -> Any
+

Return a time series corresponding to the given parameters.

Arguments

  • ::Type{T}: Concrete subtype of TimeSeriesData to return
  • component::InfrastructureSystemsComponent: Component containing the time series
  • name::AbstractString: name of time series
  • start_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timstamp of a window.
  • len::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.
  • count::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.
InfrastructureSystems.get_time_series_arrayFunction
get_time_series_array(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    time_series::StaticTimeSeries;
+    ...
+) -> Any
+get_time_series_array(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    time_series::StaticTimeSeries,
+    start_time::Union{Nothing, Dates.DateTime};
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return a TimeSeries.TimeArray from a cached StaticTimeSeries instance.

If the data are scaling factors then the stored scalingfactormultiplier will be called on the component and applied to the data unless ignorescalingfactors is true.

See also StaticTimeSeriesCache.

InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    forecast::Forecast,
+    start_time::Dates.DateTime;
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return a TimeSeries.TimeArray for one forecast window from a cached Forecast instance.

If the data are scaling factors then the stored scalingfactormultiplier will be called on the component and applied to the data unless ignorescalingfactors is true.

See also ForecastCache.

InfrastructureSystems.get_time_series_arrayMethod
get_time_series_array(
+    ::Type{T<:TimeSeriesData},
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    name::AbstractString;
+    start_time,
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return a TimeSeries.TimeArray from storage for the given time series parameters.

If the data are scaling factors then the stored scalingfactormultiplier will be called on the component and applied to the data unless ignorescalingfactors is true.

InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    time_series::StaticTimeSeries;
+    ...
+) -> Vector{D} where D<:Dates.TimeType
+get_time_series_timestamps(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    time_series::StaticTimeSeries,
+    start_time::Union{Nothing, Dates.DateTime};
+    len
+) -> Vector{D} where D<:Dates.TimeType
+

Return a vector of timestamps from a cached StaticTimeSeries instance.

InfrastructureSystems.get_time_series_timestampsFunction
get_time_series_timestamps(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    forecast::Forecast;
+    ...
+)
+get_time_series_timestamps(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    forecast::Forecast,
+    start_time::Union{Nothing, Dates.DateTime};
+    len
+) -> Vector{D} where D<:Dates.TimeType
+

Return a vector of timestamps from a cached Forecast instance.

InfrastructureSystems.get_time_series_timestampsMethod
get_time_series_timestamps(
+    ::Type{T<:TimeSeriesData},
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    name::AbstractString;
+    start_time,
+    len
+) -> Vector{D} where D<:Dates.TimeType
+

Return a vector of timestamps from storage for the given time series parameters.

InfrastructureSystems.get_time_series_valuesFunction
get_time_series_values(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    time_series::StaticTimeSeries;
+    ...
+) -> Any
+get_time_series_values(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    time_series::StaticTimeSeries,
+    start_time::Union{Nothing, Dates.DateTime};
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return an Array of values from a cached StaticTimeSeries instance for the requested time series parameters.

InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    forecast::Forecast,
+    start_time::Dates.DateTime;
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return an Array of values for one forecast window from a cached Forecast instance.

InfrastructureSystems.get_time_series_valuesMethod
get_time_series_values(
+    ::Type{T<:TimeSeriesData},
+    component::InfrastructureSystems.InfrastructureSystemsComponent,
+    name::AbstractString;
+    start_time,
+    len,
+    ignore_scaling_factors
+) -> Any
+

Return an Array of values from storage for the requested time series parameters.

If the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.

Network Matrices

Power Flow

Parsing

PowerSystems.PowerSystemTableDataMethod
PowerSystemTableData(
+    directory::AbstractString,
+    base_power::Float64,
+    user_descriptor_file::AbstractString;
+    descriptor_file,
+    generator_mapping_file,
+    timeseries_metadata_file
+) -> PowerSystemTableData
+

Reads in all the data stored in csv files The general format for data is folder: gen.csv branch.csv bus.csv .. load.csv

Arguments

  • directory::AbstractString: directory containing CSV files
  • base_power::Float64: base power for System
  • user_descriptor_file::AbstractString: customized input descriptor file
  • descriptor_file=POWER_SYSTEM_DESCRIPTOR_FILE: PowerSystems descriptor file
  • generator_mapping_file=GENERATOR_MAPPING_FILE: generator mapping configuration file
source
PowerSystems.PowerModelsDataMethod
PowerModelsData(
+    file::Union{IO, String};
+    kwargs...
+) -> PowerModelsData
+

Constructs PowerModelsData from a raw file. Currently Supports MATPOWER and PSSE data files parsed by PowerModels.

source
PowerSystems.TamuSystemMethod
TamuSystem(tamu_folder::AbstractString; kwargs...) -> Any
+

Creates a system from a PSS/e .RAW (v33) load flow case, and an associated .csv with MW load time series data. The format is established by the Texas A&M University Test Case Archive

The general format for data is folder: [casename].raw [casename]loadtimeseriesMW.csv

Arguments

  • directory::AbstractString: directory containing RAW and CSV files

Examples

sys = TamuSystem(
+    "./ACTIVSg25k",
+    config_path = "ACTIVSg25k_validation.json",
+    bus_name_formatter = x->string(x["name"]*"-"*string(x["index"])),
+    load_name_formatter = x->strip(join(x["source_id"], "_"))
+)
source
PowerSystems.add_dyn_injectors!Method
add_dyn_injectors!(sys::System, dyr_file::AbstractString)
+

Add to a system already created the dynamic components. The system should already be parsed from a .raw file.

Examples:

dyr_file = "Example.dyr"
+add_dyn_injectors!(sys, dyr_file)
source

Logging

PowerSystems.configure_loggingMethod
configure_logging(
+;
+    console_level,
+    file_level,
+    filename
+) -> MultiLogger
+

Creates console and file loggers.

Note: Log messages may not be written to the file until flush() or close() is called on the returned logger.

Arguments

  • console_level = Logging.Error: level for console messages
  • file_level = Logging.Info: level for file messages
  • filename::Union{Nothing, AbstractString} = "power-systems.log": log file; pass nothing to disable file logging

Example

logger = configure_logging(console_level = Logging.Info)
+@info "log message"
+close(logger)
source
diff --git a/v3.3.0/assets/AbstractTree.png b/v3.3.0/assets/AbstractTree.png new file mode 100644 index 0000000000..ba90123ce7 Binary files /dev/null and b/v3.3.0/assets/AbstractTree.png differ diff --git a/v3.3.0/assets/DynamicInjection.png b/v3.3.0/assets/DynamicInjection.png new file mode 100644 index 0000000000..ee3be082a5 Binary files /dev/null and b/v3.3.0/assets/DynamicInjection.png differ diff --git a/v3.3.0/assets/System.png b/v3.3.0/assets/System.png new file mode 100644 index 0000000000..d9067cc1e0 Binary files /dev/null and b/v3.3.0/assets/System.png differ diff --git a/v3.3.0/assets/ThermalStandard.png b/v3.3.0/assets/ThermalStandard.png new file mode 100644 index 0000000000..f3bdb6ba56 Binary files /dev/null and b/v3.3.0/assets/ThermalStandard.png differ diff --git a/v3.3.0/assets/documenter.js b/v3.3.0/assets/documenter.js new file mode 100644 index 0000000000..6adfbbbf4b --- /dev/null +++ b/v3.3.0/assets/documenter.js @@ -0,0 +1,331 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/headroom.min', + 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min', + 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/contrib/auto-render.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.12.0/jQuery.headroom.min', + 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.13.24/katex.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/languages/julia-repl.min', + }, + shim: { + "highlight-julia": { + "deps": [ + "highlight" + ] + }, + "katex-auto-render": { + "deps": [ + "katex" + ] + }, + "headroom-jquery": { + "deps": [ + "jquery", + "headroom" + ] + }, + "highlight-julia-repl": { + "deps": [ + "highlight" + ] + } +} +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { +$(document).ready(function() { + renderMathInElement( + document.body, + { + "delimiters": [ + { + "left": "$", + "right": "$", + "display": false + }, + { + "left": "$$", + "right": "$$", + "display": true + }, + { + "left": "\\[", + "right": "\\]", + "display": true + } + ] +} + + ); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($) { +$(document).ready(function() { + hljs.highlightAll(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require([], function() { +function addCopyButtonCallbacks() { + for (const el of document.getElementsByTagName("pre")) { + const button = document.createElement("button"); + button.classList.add("copy-button", "fas", "fa-copy"); + el.appendChild(button); + + const success = function () { + button.classList.add("success", "fa-check"); + button.classList.remove("fa-copy"); + }; + + const failure = function () { + button.classList.add("error", "fa-times"); + button.classList.remove("fa-copy"); + }; + + button.addEventListener("click", function () { + copyToClipboard(el.innerText).then(success, failure); + + setTimeout(function () { + button.classList.add("fa-copy"); + button.classList.remove("success", "fa-check", "fa-times"); + }, 5000); + }); + } +} + +function copyToClipboard(text) { + // clipboard API is only available in secure contexts + if (window.navigator && window.navigator.clipboard) { + return window.navigator.clipboard.writeText(text); + } else { + return new Promise(function (resolve, reject) { + try { + const el = document.createElement("textarea"); + el.textContent = text; + el.style.position = "fixed"; + el.style.opacity = 0; + document.body.appendChild(el); + el.select(); + document.execCommand("copy"); + + resolve(); + } catch (err) { + reject(err); + } finally { + document.body.removeChild(el); + } + }); + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", addCopyButtonCallbacks); +} else { + addCopyButtonCallbacks(); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { + +// Manages the top navigation bar (hides it when the user starts scrolling down on the +// mobile). +window.Headroom = Headroom; // work around buggy module loading? +$(document).ready(function() { + $('#documenter .docs-navbar').headroom({ + "tolerance": {"up": 10, "down": 10}, + }); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function() { + var settings = $('#documenter-settings'); + $('#documenter-settings-button').click(function(){ + settings.toggleClass('is-active'); + }); + // Close the dialog if X is clicked + $('#documenter-settings button.delete').click(function(){ + settings.removeClass('is-active'); + }); + // Close dialog if ESC is pressed + $(document).keyup(function(e) { + if (e.keyCode == 27) settings.removeClass('is-active'); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function() { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button") + sidebar_button.click(function(ev) { + ev.preventDefault(); + sidebar.toggleClass('visible'); + if (sidebar.hasClass('visible')) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind('click', function(ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + }); +}) + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function() { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css('max-width'), 10); + var L0 = e.width(); + if(L0 > L) { + var h0 = parseInt(e.css('font-size'), 10); + e.css('font-size', L * h0 / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on('orientationchange', resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function() { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if(typeof active !== 'undefined') { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +function set_theme(theme) { + var active = null; + var disabled = []; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + var themename = ss.ownerNode.getAttribute("data-theme-name"); + if(themename === null) continue; // ignore non-theme stylesheets + // Find the active theme + if(themename === theme) active = ss; + else disabled.push(ss); + } + if(active !== null) { + active.disabled = false; + if(active.ownerNode.getAttribute("data-theme-primary") === null) { + document.getElementsByTagName('html')[0].className = "theme--" + theme; + } else { + document.getElementsByTagName('html')[0].className = ""; + } + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + + // Store the theme in localStorage + if(typeof(window.localStorage) !== "undefined") { + window.localStorage.setItem("documenter-theme", theme); + } else { + console.error("Browser does not support window.localStorage"); + } +} + +// Theme picker setup +$(document).ready(function() { + // onchange callback + $('#documenter-themepicker').change(function themepick_callback(ev){ + var themename = $('#documenter-themepicker option:selected').attr('value'); + set_theme(themename); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if(typeof(window.localStorage) !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if(theme !== null) { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = (e.value === theme); + }) + } else { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = $("html").hasClass(`theme--${e.value}`); + }) + } + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function() { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if (typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === 'boolean' && DOCUMENTER_VERSION_SELECTOR_DISABLED) { + return; + } + + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function(x) { + target_href = version_selector_select.children("option:selected").get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) { + var option = $(""); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== 'undefined') { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function(i,x){return x.text}); + DOC_VERSIONS.forEach(function(each) { + var version_url = documenterBaseURL + "/../" + each; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $(""); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}) + +}) diff --git a/v3.3.0/assets/gen_metamodel.png b/v3.3.0/assets/gen_metamodel.png new file mode 100644 index 0000000000..0f1772db3a Binary files /dev/null and b/v3.3.0/assets/gen_metamodel.png differ diff --git a/v3.3.0/assets/inv_metamodel.png b/v3.3.0/assets/inv_metamodel.png new file mode 100644 index 0000000000..0dbe982737 Binary files /dev/null and b/v3.3.0/assets/inv_metamodel.png differ diff --git a/v3.3.0/assets/logo.png b/v3.3.0/assets/logo.png new file mode 100644 index 0000000000..c0c5d7d594 Binary files /dev/null and b/v3.3.0/assets/logo.png differ diff --git a/v3.3.0/assets/search.js b/v3.3.0/assets/search.js new file mode 100644 index 0000000000..c133f74101 --- /dev/null +++ b/v3.3.0/assets/search.js @@ -0,0 +1,267 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'lunr': 'https://cdnjs.cloudflare.com/ajax/libs/lunr.js/2.3.9/lunr.min', + 'lodash': 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min', + } +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'lunr', 'lodash'], function($, lunr, _) { + +$(document).ready(function() { + // parseUri 1.2.2 + // (c) Steven Levithan + // MIT License + function parseUri (str) { + var o = parseUri.options, + m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), + uri = {}, + i = 14; + + while (i--) uri[o.key[i]] = m[i] || ""; + + uri[o.q.name] = {}; + uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { + if ($1) uri[o.q.name][$1] = $2; + }); + + return uri; + }; + parseUri.options = { + strictMode: false, + key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], + q: { + name: "queryKey", + parser: /(?:^|&)([^&=]*)=?([^&]*)/g + }, + parser: { + strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + } + }; + + $("#search-form").submit(function(e) { + e.preventDefault() + }) + + // list below is the lunr 2.1.3 list minus the intersect with names(Base) + // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) + // ideally we'd just filter the original list but it's not available as a variable + lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'does', + 'either', + 'ever', + 'every', + 'from', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'into', + 'it', + 'its', + 'just', + 'least', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'who', + 'whom', + 'why', + 'will', + 'would', + 'yet', + 'you', + 'your' + ]) + + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!" + // would not find anything if searching for "add!", only for the entire qualification + lunr.tokenizer.separator = /[\s\-\.]+/ + + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '') + }) + } + + lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter') + lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer') + + var index = lunr(function () { + this.ref('location') + this.field('title',{boost: 100}) + this.field('text') + documenterSearchIndex['docs'].forEach(function(e) { + this.add(e) + }, this) + }) + var store = {} + + documenterSearchIndex['docs'].forEach(function(e) { + store[e.location] = {title: e.title, category: e.category, page: e.page} + }) + + $(function(){ + searchresults = $('#documenter-search-results'); + searchinfo = $('#documenter-search-info'); + searchbox = $('#documenter-search-query'); + searchform = $('.docs-search'); + sidebar = $('.docs-sidebar'); + function update_search(querystring) { + tokens = lunr.tokenizer(querystring) + results = index.query(function (q) { + tokens.forEach(function (t) { + q.term(t.toString(), { + fields: ["title"], + boost: 100, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["title"], + boost: 10, + usePipeline: true, + editDistance: 2, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["text"], + boost: 1, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + }) + }) + searchinfo.text("Number of results: " + results.length) + searchresults.empty() + results.forEach(function(result) { + data = store[result.ref] + link = $(''+data.title+'') + link.attr('href', documenterBaseURL+'/'+result.ref) + if (data.category != "page"){ + cat = $('('+data.category+', '+data.page+')') + } else { + cat = $('('+data.category+')') + } + li = $('
  • ').append(link).append(" ").append(cat) + searchresults.append(li) + }) + } + + function update_search_box() { + querystring = searchbox.val() + update_search(querystring) + } + + searchbox.keyup(_.debounce(update_search_box, 250)) + searchbox.change(update_search_box) + + // Disable enter-key form submission for the searchbox on the search page + // and just re-run search rather than refresh the whole page. + searchform.keypress( + function(event){ + if (event.which == '13') { + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + update_search_box(); + event.preventDefault(); + } + } + ); + + search_query_uri = parseUri(window.location).queryKey["q"] + if(search_query_uri !== undefined) { + search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20')) + searchbox.val(search_query) + } + update_search_box(); + }) +}) + +}) diff --git a/v3.3.0/assets/themes/documenter-dark.css b/v3.3.0/assets/themes/documenter-dark.css new file mode 100644 index 0000000000..c94a294dcf --- /dev/null +++ b/v3.3.0/assets/themes/documenter-dark.css @@ -0,0 +1,7 @@ +@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}html.theme--documenter-dark .tabs,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable,html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--documenter-dark .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .list:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .highlight:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:15px;height:2.25em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.375em - 1px);padding-left:calc(0.625em - 1px);padding-right:calc(0.625em - 1px);padding-top:calc(0.375em - 1px);position:relative;vertical-align:top}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus,html.theme--documenter-dark .pagination-ellipsis:focus,html.theme--documenter-dark .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,html.theme--documenter-dark .is-focused.pagination-previous,html.theme--documenter-dark .is-focused.pagination-next,html.theme--documenter-dark .is-focused.pagination-link,html.theme--documenter-dark .is-focused.pagination-ellipsis,html.theme--documenter-dark .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-focused.button,html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active,html.theme--documenter-dark .pagination-ellipsis:active,html.theme--documenter-dark .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,html.theme--documenter-dark .is-active.pagination-previous,html.theme--documenter-dark .is-active.pagination-next,html.theme--documenter-dark .is-active.pagination-link,html.theme--documenter-dark .is-active.pagination-ellipsis,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .is-active.button{outline:none}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-ellipsis[disabled],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--documenter-dark .pagination-next,html.theme--documenter-dark fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--documenter-dark .pagination-link,html.theme--documenter-dark fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--documenter-dark .file-cta,html.theme--documenter-dark fieldset[disabled] .file-cta,fieldset[disabled] html.theme--documenter-dark .file-name,html.theme--documenter-dark fieldset[disabled] .file-name,fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--documenter-dark .button,html.theme--documenter-dark fieldset[disabled] .button{cursor:not-allowed}/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,embed,iframe,object,video{height:auto;max-width:100%}audio{max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:left}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-clipped{overflow:hidden !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:15px !important}.is-size-7,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{font-size:.85em !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:15px !important}.is-size-7-mobile{font-size:.85em !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:15px !important}.is-size-7-tablet{font-size:.85em !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:15px !important}.is-size-7-touch{font-size:.85em !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:15px !important}.is-size-7-desktop{font-size:.85em !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:15px !important}.is-size-7-widescreen{font-size:.85em !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:15px !important}.is-size-7-fullhd{font-size:.85em !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#ecf0f1 !important}a.has-text-light:hover,a.has-text-light:focus{color:#cfd9db !important}.has-background-light{background-color:#ecf0f1 !important}.has-text-dark{color:#282f2f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#111414 !important}.has-background-dark{background-color:#282f2f !important}.has-text-primary{color:#375a7f !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#28415b !important}.has-background-primary{background-color:#375a7f !important}.has-text-link{color:#1abc9c !important}a.has-text-link:hover,a.has-text-link:focus{color:#148f77 !important}.has-background-link{background-color:#1abc9c !important}.has-text-info{color:#024c7d !important}a.has-text-info:hover,a.has-text-info:focus{color:#012d4b !important}.has-background-info{background-color:#024c7d !important}.has-text-success{color:#008438 !important}a.has-text-success:hover,a.has-text-success:focus{color:#005122 !important}.has-background-success{background-color:#008438 !important}.has-text-warning{color:#ad8100 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#7a5b00 !important}.has-background-warning{background-color:#ad8100 !important}.has-text-danger{color:#9e1b0d !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#6f1309 !important}.has-background-danger{background-color:#9e1b0d !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#282f2f !important}.has-background-grey-darker{background-color:#282f2f !important}.has-text-grey-dark{color:#343c3d !important}.has-background-grey-dark{background-color:#343c3d !important}.has-text-grey{color:#5e6d6f !important}.has-background-grey{background-color:#5e6d6f !important}.has-text-grey-light{color:#8c9b9d !important}.has-background-grey-light{background-color:#8c9b9d !important}.has-text-grey-lighter{color:#dbdee0 !important}.has-background-grey-lighter{background-color:#dbdee0 !important}.has-text-white-ter{color:#ecf0f1 !important}.has-background-white-ter{background-color:#ecf0f1 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-relative{position:relative !important}html.theme--documenter-dark{/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/}html.theme--documenter-dark html{background-color:#1f2424;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark article,html.theme--documenter-dark aside,html.theme--documenter-dark figure,html.theme--documenter-dark footer,html.theme--documenter-dark header,html.theme--documenter-dark hgroup,html.theme--documenter-dark section{display:block}html.theme--documenter-dark body,html.theme--documenter-dark button,html.theme--documenter-dark input,html.theme--documenter-dark select,html.theme--documenter-dark textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--documenter-dark code,html.theme--documenter-dark pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark body{color:#fff;font-size:1em;font-weight:400;line-height:1.5}html.theme--documenter-dark a{color:#1abc9c;cursor:pointer;text-decoration:none}html.theme--documenter-dark a strong{color:currentColor}html.theme--documenter-dark a:hover{color:#1dd2af}html.theme--documenter-dark code{background-color:rgba(255,255,255,0.05);color:#ececec;font-size:.875em;font-weight:normal;padding:.1em}html.theme--documenter-dark hr{background-color:#282f2f;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--documenter-dark img{height:auto;max-width:100%}html.theme--documenter-dark input[type="checkbox"],html.theme--documenter-dark input[type="radio"]{vertical-align:baseline}html.theme--documenter-dark small{font-size:.875em}html.theme--documenter-dark span{font-style:inherit;font-weight:inherit}html.theme--documenter-dark strong{color:#f2f2f2;font-weight:700}html.theme--documenter-dark fieldset{border:none}html.theme--documenter-dark pre{-webkit-overflow-scrolling:touch;background-color:#282f2f;color:#fff;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--documenter-dark pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--documenter-dark table td,html.theme--documenter-dark table th{vertical-align:top}html.theme--documenter-dark table td:not([align]),html.theme--documenter-dark table th:not([align]){text-align:left}html.theme--documenter-dark table th{color:#f2f2f2}html.theme--documenter-dark .box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}html.theme--documenter-dark a.box:hover,html.theme--documenter-dark a.box:focus{box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px #1abc9c}html.theme--documenter-dark a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1abc9c}html.theme--documenter-dark .button{background-color:#282f2f;border-color:#4c5759;border-width:1px;color:#375a7f;cursor:pointer;justify-content:center;padding-bottom:calc(0.375em - 1px);padding-left:.75em;padding-right:.75em;padding-top:calc(0.375em - 1px);text-align:center;white-space:nowrap}html.theme--documenter-dark .button strong{color:inherit}html.theme--documenter-dark .button .icon,html.theme--documenter-dark .button .icon.is-small,html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--documenter-dark .button .icon.is-medium,html.theme--documenter-dark .button .icon.is-large{height:1.5em;width:1.5em}html.theme--documenter-dark .button .icon:first-child:not(:last-child){margin-left:calc(-0.375em - 1px);margin-right:0.1875em}html.theme--documenter-dark .button .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:calc(-0.375em - 1px)}html.theme--documenter-dark .button .icon:first-child:last-child{margin-left:calc(-0.375em - 1px);margin-right:calc(-0.375em - 1px)}html.theme--documenter-dark .button:hover,html.theme--documenter-dark .button.is-hovered{border-color:#8c9b9d;color:#f2f2f2}html.theme--documenter-dark .button:focus,html.theme--documenter-dark .button.is-focused{border-color:#8c9b9d;color:#17a689}html.theme--documenter-dark .button:focus:not(:active),html.theme--documenter-dark .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button:active,html.theme--documenter-dark .button.is-active{border-color:#343c3d;color:#f2f2f2}html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}html.theme--documenter-dark .button.is-text:hover,html.theme--documenter-dark .button.is-text.is-hovered,html.theme--documenter-dark .button.is-text:focus,html.theme--documenter-dark .button.is-text.is-focused{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .button.is-text:active,html.theme--documenter-dark .button.is-text.is-active{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .button.is-text[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:hover,html.theme--documenter-dark .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus,html.theme--documenter-dark .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus:not(:active),html.theme--documenter-dark .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--documenter-dark .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-white.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus:not(:active),html.theme--documenter-dark .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light:hover,html.theme--documenter-dark .button.is-light.is-hovered{background-color:#e5eaec;border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light:focus,html.theme--documenter-dark .button.is-light.is-focused{border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light:focus:not(:active),html.theme--documenter-dark .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light.is-active{background-color:#dde4e6;border-color:transparent;color:#282f2f}html.theme--documenter-dark .button.is-light[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-light.is-inverted{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-hovered{background-color:#1d2122}html.theme--documenter-dark .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted{background-color:#282f2f;border-color:transparent;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-outlined.is-focused{background-color:#ecf0f1;border-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark,html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover,html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered{background-color:#232829;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused{border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark:focus:not(:active),html.theme--documenter-dark .content kbd.button:focus:not(:active),html.theme--documenter-dark .button.is-dark.is-focused:not(:active),html.theme--documenter-dark .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active{background-color:#1d2122;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .button.is-dark[disabled],html.theme--documenter-dark .content kbd.button[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark,fieldset[disabled] html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-dark.is-inverted,html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted:hover,html.theme--documenter-dark .content kbd.button.is-inverted:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered{background-color:#dde4e6}html.theme--documenter-dark .button.is-dark.is-inverted[disabled],html.theme--documenter-dark .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#ecf0f1;border-color:transparent;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-loading::after,html.theme--documenter-dark .content kbd.button.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-dark.is-outlined,html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-outlined.is-focused{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-dark.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-primary,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus:not(:active),html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--documenter-dark .button.is-primary.is-focused:not(:active),html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary[disabled],html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-primary.is-inverted,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--documenter-dark .button.is-primary.is-inverted[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:hover,html.theme--documenter-dark .button.is-link.is-hovered{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus,html.theme--documenter-dark .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus:not(:active),html.theme--documenter-dark .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link.is-active{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-outlined.is-focused{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:hover,html.theme--documenter-dark .button.is-info.is-hovered{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus,html.theme--documenter-dark .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus:not(:active),html.theme--documenter-dark .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info.is-active{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;color:#024c7d}html.theme--documenter-dark .button.is-info.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-outlined.is-focused{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:hover,html.theme--documenter-dark .button.is-success.is-hovered{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus,html.theme--documenter-dark .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus:not(:active),html.theme--documenter-dark .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success.is-active{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;color:#008438}html.theme--documenter-dark .button.is-success.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-outlined.is-focused{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:hover,html.theme--documenter-dark .button.is-warning.is-hovered{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus,html.theme--documenter-dark .button.is-warning.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus:not(:active),html.theme--documenter-dark .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning.is-active{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-outlined.is-focused{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:hover,html.theme--documenter-dark .button.is-danger.is-hovered{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus,html.theme--documenter-dark .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus:not(:active),html.theme--documenter-dark .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger.is-active{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-outlined.is-focused{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:3px;font-size:.85em}html.theme--documenter-dark .button.is-normal{font-size:15px}html.theme--documenter-dark .button.is-medium{font-size:1.25rem}html.theme--documenter-dark .button.is-large{font-size:1.5rem}html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .button{background-color:#8c9b9d;border-color:#dbdee0;box-shadow:none;opacity:.5}html.theme--documenter-dark .button.is-fullwidth{display:flex;width:100%}html.theme--documenter-dark .button.is-loading{color:transparent !important;pointer-events:none}html.theme--documenter-dark .button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute !important}html.theme--documenter-dark .button.is-static{background-color:#282f2f;border-color:#5e6d6f;color:#dbdee0;box-shadow:none;pointer-events:none}html.theme--documenter-dark .button.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:290486px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .buttons .button{margin-bottom:0.5rem}html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:0.5rem}html.theme--documenter-dark .buttons:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .buttons:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){border-radius:3px;font-size:.85em}html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--documenter-dark .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--documenter-dark .buttons.has-addons .button:last-child{margin-right:0}html.theme--documenter-dark .buttons.has-addons .button:hover,html.theme--documenter-dark .buttons.has-addons .button.is-hovered{z-index:2}html.theme--documenter-dark .buttons.has-addons .button:focus,html.theme--documenter-dark .buttons.has-addons .button.is-focused,html.theme--documenter-dark .buttons.has-addons .button:active,html.theme--documenter-dark .buttons.has-addons .button.is-active,html.theme--documenter-dark .buttons.has-addons .button.is-selected{z-index:3}html.theme--documenter-dark .buttons.has-addons .button:focus:hover,html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover,html.theme--documenter-dark .buttons.has-addons .button:active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--documenter-dark .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .buttons.is-centered{justify-content:center}html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .buttons.is-right{justify-content:flex-end}html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width: 1056px){html.theme--documenter-dark .container{max-width:992px}html.theme--documenter-dark .container.is-fluid{margin-left:32px;margin-right:32px;max-width:none}}@media screen and (max-width: 1215px){html.theme--documenter-dark .container.is-widescreen{max-width:1152px}}@media screen and (max-width: 1407px){html.theme--documenter-dark .container.is-fullhd{max-width:1344px}}@media screen and (min-width: 1216px){html.theme--documenter-dark .container{max-width:1152px}}@media screen and (min-width: 1408px){html.theme--documenter-dark .container{max-width:1344px}}html.theme--documenter-dark .content li+li{margin-top:0.25em}html.theme--documenter-dark .content p:not(:last-child),html.theme--documenter-dark .content dl:not(:last-child),html.theme--documenter-dark .content ol:not(:last-child),html.theme--documenter-dark .content ul:not(:last-child),html.theme--documenter-dark .content blockquote:not(:last-child),html.theme--documenter-dark .content pre:not(:last-child),html.theme--documenter-dark .content table:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .content h1,html.theme--documenter-dark .content h2,html.theme--documenter-dark .content h3,html.theme--documenter-dark .content h4,html.theme--documenter-dark .content h5,html.theme--documenter-dark .content h6{color:#f2f2f2;font-weight:600;line-height:1.125}html.theme--documenter-dark .content h1{font-size:2em;margin-bottom:0.5em}html.theme--documenter-dark .content h1:not(:first-child){margin-top:1em}html.theme--documenter-dark .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--documenter-dark .content h2:not(:first-child){margin-top:1.1428em}html.theme--documenter-dark .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--documenter-dark .content h3:not(:first-child){margin-top:1.3333em}html.theme--documenter-dark .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--documenter-dark .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--documenter-dark .content h6{font-size:1em;margin-bottom:1em}html.theme--documenter-dark .content blockquote{background-color:#282f2f;border-left:5px solid #5e6d6f;padding:1.25em 1.5em}html.theme--documenter-dark .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ol:not([type]){list-style-type:decimal}html.theme--documenter-dark .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--documenter-dark .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--documenter-dark .content ul ul ul{list-style-type:square}html.theme--documenter-dark .content dd{margin-left:2em}html.theme--documenter-dark .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--documenter-dark .content figure:not(:first-child){margin-top:2em}html.theme--documenter-dark .content figure:not(:last-child){margin-bottom:2em}html.theme--documenter-dark .content figure img{display:inline-block}html.theme--documenter-dark .content figure figcaption{font-style:italic}html.theme--documenter-dark .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--documenter-dark .content sup,html.theme--documenter-dark .content sub{font-size:75%}html.theme--documenter-dark .content table{width:100%}html.theme--documenter-dark .content table td,html.theme--documenter-dark .content table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .content table th{color:#f2f2f2}html.theme--documenter-dark .content table th:not([align]){text-align:left}html.theme--documenter-dark .content table thead td,html.theme--documenter-dark .content table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .content table tfoot td,html.theme--documenter-dark .content table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .content table tbody tr:last-child td,html.theme--documenter-dark .content table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .content .tabs li+li{margin-top:0}html.theme--documenter-dark .content.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.content{font-size:.85em}html.theme--documenter-dark .content.is-medium{font-size:1.25rem}html.theme--documenter-dark .content.is-large{font-size:1.5rem}html.theme--documenter-dark .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--documenter-dark .icon.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--documenter-dark .icon.is-medium{height:2rem;width:2rem}html.theme--documenter-dark .icon.is-large{height:3rem;width:3rem}html.theme--documenter-dark .image,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--documenter-dark .image img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--documenter-dark .image img.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:290486px}html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--documenter-dark .image.is-square,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--documenter-dark .image.is-1by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--documenter-dark .image.is-5by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--documenter-dark .image.is-4by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--documenter-dark .image.is-3by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--documenter-dark .image.is-5by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--documenter-dark .image.is-16by9,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--documenter-dark .image.is-2by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--documenter-dark .image.is-3by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--documenter-dark .image.is-4by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--documenter-dark .image.is-3by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--documenter-dark .image.is-2by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--documenter-dark .image.is-3by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--documenter-dark .image.is-9by16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--documenter-dark .image.is-1by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--documenter-dark .image.is-1by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--documenter-dark .image.is-16x16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--documenter-dark .image.is-24x24,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--documenter-dark .image.is-32x32,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--documenter-dark .image.is-48x48,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--documenter-dark .image.is-64x64,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--documenter-dark .image.is-96x96,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--documenter-dark .image.is-128x128,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--documenter-dark .notification{background-color:#282f2f;border-radius:.4em;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .notification strong{color:currentColor}html.theme--documenter-dark .notification code,html.theme--documenter-dark .notification pre{background:#fff}html.theme--documenter-dark .notification pre code{background:transparent}html.theme--documenter-dark .notification>.delete{position:absolute;right:0.5rem;top:0.5rem}html.theme--documenter-dark .notification .title,html.theme--documenter-dark .notification .subtitle,html.theme--documenter-dark .notification .content{color:currentColor}html.theme--documenter-dark .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .notification.is-light{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .notification.is-dark,html.theme--documenter-dark .content kbd.notification{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .notification.is-primary,html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .notification.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .notification.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .notification.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .notification.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .notification.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:15px;overflow:hidden;padding:0;width:100%}html.theme--documenter-dark .progress::-webkit-progress-bar{background-color:#5e6d6f}html.theme--documenter-dark .progress::-webkit-progress-value{background-color:#dbdee0}html.theme--documenter-dark .progress::-moz-progress-bar{background-color:#dbdee0}html.theme--documenter-dark .progress::-ms-fill{background-color:#dbdee0;border:none}html.theme--documenter-dark .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-light::-webkit-progress-value{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-moz-progress-bar{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-ms-fill{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light:indeterminate{background-image:linear-gradient(to right, #ecf0f1 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-dark::-webkit-progress-value,html.theme--documenter-dark .content kbd.progress::-webkit-progress-value{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-moz-progress-bar,html.theme--documenter-dark .content kbd.progress::-moz-progress-bar{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-ms-fill,html.theme--documenter-dark .content kbd.progress::-ms-fill{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark:indeterminate,html.theme--documenter-dark .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #282f2f 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-primary::-webkit-progress-value,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-moz-progress-bar,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-ms-fill,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary:indeterminate,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #375a7f 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-link::-webkit-progress-value{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-moz-progress-bar{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-ms-fill{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1abc9c 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-info::-webkit-progress-value{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-moz-progress-bar{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-ms-fill{background-color:#024c7d}html.theme--documenter-dark .progress.is-info:indeterminate{background-image:linear-gradient(to right, #024c7d 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-success::-webkit-progress-value{background-color:#008438}html.theme--documenter-dark .progress.is-success::-moz-progress-bar{background-color:#008438}html.theme--documenter-dark .progress.is-success::-ms-fill{background-color:#008438}html.theme--documenter-dark .progress.is-success:indeterminate{background-image:linear-gradient(to right, #008438 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-warning::-webkit-progress-value{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-moz-progress-bar{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-ms-fill{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ad8100 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress.is-danger::-webkit-progress-value{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-moz-progress-bar{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-ms-fill{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #9e1b0d 30%, #5e6d6f 30%)}html.theme--documenter-dark .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#5e6d6f;background-image:linear-gradient(to right, #fff 30%, #5e6d6f 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--documenter-dark .progress.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.progress{height:.85em}html.theme--documenter-dark .progress.is-medium{height:1.25rem}html.theme--documenter-dark .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--documenter-dark .table{background-color:#343c3d;color:#fff}html.theme--documenter-dark .table td,html.theme--documenter-dark .table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .table td.is-white,html.theme--documenter-dark .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .table td.is-black,html.theme--documenter-dark .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .table td.is-light,html.theme--documenter-dark .table th.is-light{background-color:#ecf0f1;border-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .table td.is-dark,html.theme--documenter-dark .table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .table td.is-primary,html.theme--documenter-dark .table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-link,html.theme--documenter-dark .table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .table td.is-info,html.theme--documenter-dark .table th.is-info{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .table td.is-success,html.theme--documenter-dark .table th.is-success{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .table td.is-warning,html.theme--documenter-dark .table th.is-warning{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .table td.is-danger,html.theme--documenter-dark .table th.is-danger{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .table td.is-narrow,html.theme--documenter-dark .table th.is-narrow{white-space:nowrap;width:1%}html.theme--documenter-dark .table td.is-selected,html.theme--documenter-dark .table th.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-selected a,html.theme--documenter-dark .table td.is-selected strong,html.theme--documenter-dark .table th.is-selected a,html.theme--documenter-dark .table th.is-selected strong{color:currentColor}html.theme--documenter-dark .table th{color:#f2f2f2}html.theme--documenter-dark .table th:not([align]){text-align:left}html.theme--documenter-dark .table tr.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table tr.is-selected a,html.theme--documenter-dark .table tr.is-selected strong{color:currentColor}html.theme--documenter-dark .table tr.is-selected td,html.theme--documenter-dark .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--documenter-dark .table thead{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table thead td,html.theme--documenter-dark .table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .table tfoot{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tfoot td,html.theme--documenter-dark .table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .table tbody{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tbody tr:last-child td,html.theme--documenter-dark .table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .table.is-bordered td,html.theme--documenter-dark .table.is-bordered th{border-width:1px}html.theme--documenter-dark .table.is-bordered tr:last-child td,html.theme--documenter-dark .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--documenter-dark .table.is-fullwidth{width:100%}html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}html.theme--documenter-dark .table.is-narrow td,html.theme--documenter-dark .table.is-narrow th{padding:0.25em 0.5em}html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}html.theme--documenter-dark .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--documenter-dark .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .tags .tag,html.theme--documenter-dark .tags .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0.5rem}html.theme--documenter-dark .tags:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .tags:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:15px}html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--documenter-dark .tags.is-centered{justify-content:center}html.theme--documenter-dark .tags.is-centered .tag,html.theme--documenter-dark .tags.is-centered .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--documenter-dark .tags.is-right{justify-content:flex-end}html.theme--documenter-dark .tags.is-right .tag:not(:first-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--documenter-dark .tags.is-right .tag:not(:last-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag:not(:first-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .tags.has-addons .tag:not(:last-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.85em;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .tag:not(body) .delete,html.theme--documenter-dark .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:0.25rem;margin-right:-0.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#024c7d;color:#fff}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#008438;color:#fff}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ad8100;color:#fff}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.85em}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:15px}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:0.1875em}html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:-0.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:290486px}html.theme--documenter-dark a.tag:hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--documenter-dark .title,html.theme--documenter-dark .subtitle{word-break:break-word}html.theme--documenter-dark .title em,html.theme--documenter-dark .title span,html.theme--documenter-dark .subtitle em,html.theme--documenter-dark .subtitle span{font-weight:inherit}html.theme--documenter-dark .title sub,html.theme--documenter-dark .subtitle sub{font-size:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--documenter-dark .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--documenter-dark .title strong{color:inherit;font-weight:inherit}html.theme--documenter-dark .title+.highlight{margin-top:-0.75rem}html.theme--documenter-dark .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--documenter-dark .title.is-1{font-size:3rem}html.theme--documenter-dark .title.is-2{font-size:2.5rem}html.theme--documenter-dark .title.is-3{font-size:2rem}html.theme--documenter-dark .title.is-4{font-size:1.5rem}html.theme--documenter-dark .title.is-5{font-size:1.25rem}html.theme--documenter-dark .title.is-6{font-size:15px}html.theme--documenter-dark .title.is-7{font-size:.85em}html.theme--documenter-dark .subtitle{color:#8c9b9d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--documenter-dark .subtitle strong{color:#8c9b9d;font-weight:600}html.theme--documenter-dark .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--documenter-dark .subtitle.is-1{font-size:3rem}html.theme--documenter-dark .subtitle.is-2{font-size:2.5rem}html.theme--documenter-dark .subtitle.is-3{font-size:2rem}html.theme--documenter-dark .subtitle.is-4{font-size:1.5rem}html.theme--documenter-dark .subtitle.is-5{font-size:1.25rem}html.theme--documenter-dark .subtitle.is-6{font-size:15px}html.theme--documenter-dark .subtitle.is-7{font-size:.85em}html.theme--documenter-dark .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--documenter-dark .highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}html.theme--documenter-dark .highlight pre{overflow:auto;max-width:100%}html.theme--documenter-dark .number{align-items:center;background-color:#282f2f;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(219,222,224,0.3)}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,html.theme--documenter-dark .is-white.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--documenter-dark .is-white.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,html.theme--documenter-dark .is-white.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--documenter-dark .is-white.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,html.theme--documenter-dark .is-black.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--documenter-dark .is-black.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,html.theme--documenter-dark .is-black.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--documenter-dark .is-black.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,html.theme--documenter-dark .is-light.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--documenter-dark .is-light.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,html.theme--documenter-dark .is-light.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--documenter-dark .is-light.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}html.theme--documenter-dark .is-primary.textarea:focus,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.is-focused.textarea,html.theme--documenter-dark .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--documenter-dark .is-primary.textarea:active,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:active,html.theme--documenter-dark .is-primary.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,html.theme--documenter-dark .is-link.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--documenter-dark .is-link.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,html.theme--documenter-dark .is-link.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--documenter-dark .is-link.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#024c7d}html.theme--documenter-dark .is-info.textarea:focus,html.theme--documenter-dark .is-info.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--documenter-dark .is-info.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,html.theme--documenter-dark .is-info.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--documenter-dark .is-info.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#008438}html.theme--documenter-dark .is-success.textarea:focus,html.theme--documenter-dark .is-success.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--documenter-dark .is-success.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,html.theme--documenter-dark .is-success.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--documenter-dark .is-success.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ad8100}html.theme--documenter-dark .is-warning.textarea:focus,html.theme--documenter-dark .is-warning.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--documenter-dark .is-warning.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,html.theme--documenter-dark .is-warning.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--documenter-dark .is-warning.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#9e1b0d}html.theme--documenter-dark .is-danger.textarea:focus,html.theme--documenter-dark .is-danger.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--documenter-dark .is-danger.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,html.theme--documenter-dark .is-danger.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--documenter-dark .is-danger.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.85em}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--documenter-dark .input.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:290486px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .input.is-static,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--documenter-dark .textarea{display:block;max-width:100%;min-width:100%;padding:0.625em;resize:vertical}html.theme--documenter-dark .textarea:not([rows]){max-height:600px;min-height:120px}html.theme--documenter-dark .textarea[rows]{height:initial}html.theme--documenter-dark .textarea.has-fixed-size{resize:none}html.theme--documenter-dark .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox{color:#fff;cursor:not-allowed}html.theme--documenter-dark .radio+.radio{margin-left:0.5em}html.theme--documenter-dark .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--documenter-dark .select:not(.is-multiple){height:2.25em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;right:1.125em;z-index:4}html.theme--documenter-dark .select.is-rounded select,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select select{border-radius:290486px;padding-left:1em}html.theme--documenter-dark .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--documenter-dark .select select::-ms-expand{display:none}html.theme--documenter-dark .select select[disabled]:hover,fieldset[disabled] html.theme--documenter-dark .select select:hover{border-color:#282f2f}html.theme--documenter-dark .select select:not([multiple]){padding-right:2.5em}html.theme--documenter-dark .select select[multiple]{height:auto;padding:0}html.theme--documenter-dark .select select[multiple] option{padding:0.5em 1em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#8c9b9d}html.theme--documenter-dark .select.is-white:not(:hover)::after{border-color:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}html.theme--documenter-dark .select.is-white select:hover,html.theme--documenter-dark .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--documenter-dark .select.is-white select:focus,html.theme--documenter-dark .select.is-white select.is-focused,html.theme--documenter-dark .select.is-white select:active,html.theme--documenter-dark .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select:hover,html.theme--documenter-dark .select.is-black select.is-hovered{border-color:#000}html.theme--documenter-dark .select.is-black select:focus,html.theme--documenter-dark .select.is-black select.is-focused,html.theme--documenter-dark .select.is-black select:active,html.theme--documenter-dark .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .select.is-light:not(:hover)::after{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select:hover,html.theme--documenter-dark .select.is-light select.is-hovered{border-color:#dde4e6}html.theme--documenter-dark .select.is-light select:focus,html.theme--documenter-dark .select.is-light select.is-focused,html.theme--documenter-dark .select.is-light select:active,html.theme--documenter-dark .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .select.is-dark:not(:hover)::after,html.theme--documenter-dark .content kbd.select:not(:hover)::after{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select,html.theme--documenter-dark .content kbd.select select{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select:hover,html.theme--documenter-dark .content kbd.select select:hover,html.theme--documenter-dark .select.is-dark select.is-hovered,html.theme--documenter-dark .content kbd.select select.is-hovered{border-color:#1d2122}html.theme--documenter-dark .select.is-dark select:focus,html.theme--documenter-dark .content kbd.select select:focus,html.theme--documenter-dark .select.is-dark select.is-focused,html.theme--documenter-dark .content kbd.select select.is-focused,html.theme--documenter-dark .select.is-dark select:active,html.theme--documenter-dark .content kbd.select select:active,html.theme--documenter-dark .select.is-dark select.is-active,html.theme--documenter-dark .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .select.is-primary:not(:hover)::after,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select:hover,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:hover,html.theme--documenter-dark .select.is-primary select.is-hovered,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#2f4d6d}html.theme--documenter-dark .select.is-primary select:focus,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:focus,html.theme--documenter-dark .select.is-primary select.is-focused,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--documenter-dark .select.is-primary select:active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:active,html.theme--documenter-dark .select.is-primary select.is-active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .select.is-link:not(:hover)::after{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select:hover,html.theme--documenter-dark .select.is-link select.is-hovered{border-color:#17a689}html.theme--documenter-dark .select.is-link select:focus,html.theme--documenter-dark .select.is-link select.is-focused,html.theme--documenter-dark .select.is-link select:active,html.theme--documenter-dark .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select.is-info:not(:hover)::after{border-color:#024c7d}html.theme--documenter-dark .select.is-info select{border-color:#024c7d}html.theme--documenter-dark .select.is-info select:hover,html.theme--documenter-dark .select.is-info select.is-hovered{border-color:#023d64}html.theme--documenter-dark .select.is-info select:focus,html.theme--documenter-dark .select.is-info select.is-focused,html.theme--documenter-dark .select.is-info select:active,html.theme--documenter-dark .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .select.is-success:not(:hover)::after{border-color:#008438}html.theme--documenter-dark .select.is-success select{border-color:#008438}html.theme--documenter-dark .select.is-success select:hover,html.theme--documenter-dark .select.is-success select.is-hovered{border-color:#006b2d}html.theme--documenter-dark .select.is-success select:focus,html.theme--documenter-dark .select.is-success select.is-focused,html.theme--documenter-dark .select.is-success select:active,html.theme--documenter-dark .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .select.is-warning:not(:hover)::after{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select:hover,html.theme--documenter-dark .select.is-warning select.is-hovered{border-color:#946e00}html.theme--documenter-dark .select.is-warning select:focus,html.theme--documenter-dark .select.is-warning select.is-focused,html.theme--documenter-dark .select.is-warning select:active,html.theme--documenter-dark .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .select.is-danger:not(:hover)::after{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select:hover,html.theme--documenter-dark .select.is-danger select.is-hovered{border-color:#86170b}html.theme--documenter-dark .select.is-danger select:focus,html.theme--documenter-dark .select.is-danger select.is-focused,html.theme--documenter-dark .select.is-danger select:active,html.theme--documenter-dark .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .select.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.85em}html.theme--documenter-dark .select.is-medium{font-size:1.25rem}html.theme--documenter-dark .select.is-large{font-size:1.5rem}html.theme--documenter-dark .select.is-disabled::after{border-color:#fff}html.theme--documenter-dark .select.is-fullwidth{width:100%}html.theme--documenter-dark .select.is-fullwidth select{width:100%}html.theme--documenter-dark .select.is-loading::after{margin-top:0;position:absolute;right:0.625em;top:0.625em;transform:none}html.theme--documenter-dark .select.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.85em}html.theme--documenter-dark .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .select.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--documenter-dark .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:hover .file-cta,html.theme--documenter-dark .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:focus .file-cta,html.theme--documenter-dark .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--documenter-dark .file.is-white:active .file-cta,html.theme--documenter-dark .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:hover .file-cta,html.theme--documenter-dark .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:focus .file-cta,html.theme--documenter-dark .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-light .file-cta{background-color:#ecf0f1;border-color:transparent;color:#282f2f}html.theme--documenter-dark .file.is-light:hover .file-cta,html.theme--documenter-dark .file.is-light.is-hovered .file-cta{background-color:#e5eaec;border-color:transparent;color:#282f2f}html.theme--documenter-dark .file.is-light:focus .file-cta,html.theme--documenter-dark .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(236,240,241,0.25);color:#282f2f}html.theme--documenter-dark .file.is-light:active .file-cta,html.theme--documenter-dark .file.is-light.is-active .file-cta{background-color:#dde4e6;border-color:transparent;color:#282f2f}html.theme--documenter-dark .file.is-dark .file-cta,html.theme--documenter-dark .content kbd.file .file-cta{background-color:#282f2f;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .file.is-dark:hover .file-cta,html.theme--documenter-dark .content kbd.file:hover .file-cta,html.theme--documenter-dark .file.is-dark.is-hovered .file-cta,html.theme--documenter-dark .content kbd.file.is-hovered .file-cta{background-color:#232829;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .file.is-dark:focus .file-cta,html.theme--documenter-dark .content kbd.file:focus .file-cta,html.theme--documenter-dark .file.is-dark.is-focused .file-cta,html.theme--documenter-dark .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(40,47,47,0.25);color:#ecf0f1}html.theme--documenter-dark .file.is-dark:active .file-cta,html.theme--documenter-dark .content kbd.file:active .file-cta,html.theme--documenter-dark .file.is-dark.is-active .file-cta,html.theme--documenter-dark .content kbd.file.is-active .file-cta{background-color:#1d2122;border-color:transparent;color:#ecf0f1}html.theme--documenter-dark .file.is-primary .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:hover .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--documenter-dark .file.is-primary.is-hovered .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:focus .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--documenter-dark .file.is-primary.is-focused .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(55,90,127,0.25);color:#fff}html.theme--documenter-dark .file.is-primary:active .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--documenter-dark .file.is-primary.is-active .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link .file-cta{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:hover .file-cta,html.theme--documenter-dark .file.is-link.is-hovered .file-cta{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:focus .file-cta,html.theme--documenter-dark .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(26,188,156,0.25);color:#fff}html.theme--documenter-dark .file.is-link:active .file-cta,html.theme--documenter-dark .file.is-link.is-active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info .file-cta{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:hover .file-cta,html.theme--documenter-dark .file.is-info.is-hovered .file-cta{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:focus .file-cta,html.theme--documenter-dark .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(2,76,125,0.25);color:#fff}html.theme--documenter-dark .file.is-info:active .file-cta,html.theme--documenter-dark .file.is-info.is-active .file-cta{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success .file-cta{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:hover .file-cta,html.theme--documenter-dark .file.is-success.is-hovered .file-cta{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:focus .file-cta,html.theme--documenter-dark .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(0,132,56,0.25);color:#fff}html.theme--documenter-dark .file.is-success:active .file-cta,html.theme--documenter-dark .file.is-success.is-active .file-cta{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning .file-cta{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:hover .file-cta,html.theme--documenter-dark .file.is-warning.is-hovered .file-cta{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:focus .file-cta,html.theme--documenter-dark .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(173,129,0,0.25);color:#fff}html.theme--documenter-dark .file.is-warning:active .file-cta,html.theme--documenter-dark .file.is-warning.is-active .file-cta{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger .file-cta{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:hover .file-cta,html.theme--documenter-dark .file.is-danger.is-hovered .file-cta{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:focus .file-cta,html.theme--documenter-dark .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(158,27,13,0.25);color:#fff}html.theme--documenter-dark .file.is-danger:active .file-cta,html.theme--documenter-dark .file.is-danger.is-active .file-cta{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.file{font-size:.85em}html.theme--documenter-dark .file.is-medium{font-size:1.25rem}html.theme--documenter-dark .file.is-medium .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-large{font-size:1.5rem}html.theme--documenter-dark .file.is-large .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--documenter-dark .file.has-name.is-empty .file-name{display:none}html.theme--documenter-dark .file.is-boxed .file-label{flex-direction:column}html.theme--documenter-dark .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--documenter-dark .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--documenter-dark .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--documenter-dark .file.is-boxed .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--documenter-dark .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--documenter-dark .file.is-centered{justify-content:center}html.theme--documenter-dark .file.is-fullwidth .file-label{width:100%}html.theme--documenter-dark .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--documenter-dark .file.is-right{justify-content:flex-end}html.theme--documenter-dark .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--documenter-dark .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--documenter-dark .file-label:hover .file-cta{background-color:#e5eaec;color:#282f2f}html.theme--documenter-dark .file-label:hover .file-name{border-color:#596668}html.theme--documenter-dark .file-label:active .file-cta{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .file-label:active .file-name{border-color:#535f61}html.theme--documenter-dark .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--documenter-dark .file-cta{background-color:#ecf0f1;color:#343c3d}html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:left;text-overflow:ellipsis}html.theme--documenter-dark .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:0.5em;width:1em}html.theme--documenter-dark .file-icon .fa{font-size:14px}html.theme--documenter-dark .label{color:#282f2f;display:block;font-size:15px;font-weight:700}html.theme--documenter-dark .label:not(:last-child){margin-bottom:0.5em}html.theme--documenter-dark .label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.label{font-size:.85em}html.theme--documenter-dark .label.is-medium{font-size:1.25rem}html.theme--documenter-dark .label.is-large{font-size:1.5rem}html.theme--documenter-dark .help{display:block;font-size:.85em;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}html.theme--documenter-dark .help.is-black{color:#0a0a0a}html.theme--documenter-dark .help.is-light{color:#ecf0f1}html.theme--documenter-dark .help.is-dark,html.theme--documenter-dark .content kbd.help{color:#282f2f}html.theme--documenter-dark .help.is-primary,html.theme--documenter-dark .docstring>section>a.help.docs-sourcelink{color:#375a7f}html.theme--documenter-dark .help.is-link{color:#1abc9c}html.theme--documenter-dark .help.is-info{color:#024c7d}html.theme--documenter-dark .help.is-success{color:#008438}html.theme--documenter-dark .help.is-warning{color:#ad8100}html.theme--documenter-dark .help.is-danger{color:#9e1b0d}html.theme--documenter-dark .field:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.has-addons{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--documenter-dark .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.has-addons.has-addons-centered{justify-content:center}html.theme--documenter-dark .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .field.is-grouped{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.is-grouped>.control{flex-shrink:0}html.theme--documenter-dark .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:0.75rem}html.theme--documenter-dark .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--documenter-dark .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field.is-horizontal{display:flex}}html.theme--documenter-dark .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--documenter-dark .field-label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.85em;padding-top:0.375em}html.theme--documenter-dark .field-label.is-normal{padding-top:0.375em}html.theme--documenter-dark .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--documenter-dark .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--documenter-dark .field-body .field{margin-bottom:0}html.theme--documenter-dark .field-body>.field{flex-shrink:1}html.theme--documenter-dark .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--documenter-dark .field-body>.field:not(:last-child){margin-right:0.75rem}}html.theme--documenter-dark .control{box-sizing:border-box;clear:both;font-size:15px;position:relative;text-align:left}html.theme--documenter-dark .control.has-icons-left .input:focus~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-left .select:focus~.icon,html.theme--documenter-dark .control.has-icons-right .input:focus~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-right .select:focus~.icon{color:#5e6d6f}html.theme--documenter-dark .control.has-icons-left .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-small~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-small~.icon{font-size:.85em}html.theme--documenter-dark .control.has-icons-left .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--documenter-dark .control.has-icons-left .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon{color:#dbdee0;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}html.theme--documenter-dark .control.has-icons-left .input,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--documenter-dark .control.has-icons-left .select select{padding-left:2.25em}html.theme--documenter-dark .control.has-icons-left .icon.is-left{left:0}html.theme--documenter-dark .control.has-icons-right .input,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--documenter-dark .control.has-icons-right .select select{padding-right:2.25em}html.theme--documenter-dark .control.has-icons-right .icon.is-right{right:0}html.theme--documenter-dark .control.is-loading::after{position:absolute !important;right:0.625em;top:0.625em;z-index:4}html.theme--documenter-dark .control.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.85em}html.theme--documenter-dark .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .control.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .breadcrumb{font-size:15px;white-space:nowrap}html.theme--documenter-dark .breadcrumb a{align-items:center;color:#1abc9c;display:flex;justify-content:center;padding:0 .75em}html.theme--documenter-dark .breadcrumb a:hover{color:#1dd2af}html.theme--documenter-dark .breadcrumb li{align-items:center;display:flex}html.theme--documenter-dark .breadcrumb li:first-child a{padding-left:0}html.theme--documenter-dark .breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb li+li::before{color:#8c9b9d;content:"\0002f"}html.theme--documenter-dark .breadcrumb ul,html.theme--documenter-dark .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .breadcrumb .icon:first-child{margin-right:0.5em}html.theme--documenter-dark .breadcrumb .icon:last-child{margin-left:0.5em}html.theme--documenter-dark .breadcrumb.is-centered ol,html.theme--documenter-dark .breadcrumb.is-centered ul{justify-content:center}html.theme--documenter-dark .breadcrumb.is-right ol,html.theme--documenter-dark .breadcrumb.is-right ul{justify-content:flex-end}html.theme--documenter-dark .breadcrumb.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.85em}html.theme--documenter-dark .breadcrumb.is-medium{font-size:1.25rem}html.theme--documenter-dark .breadcrumb.is-large{font-size:1.5rem}html.theme--documenter-dark .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--documenter-dark .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--documenter-dark .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--documenter-dark .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--documenter-dark .card{background-color:#fff;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#fff;max-width:100%;position:relative}html.theme--documenter-dark .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,0.1);display:flex}html.theme--documenter-dark .card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:.75rem}html.theme--documenter-dark .card-header-title.is-centered{justify-content:center}html.theme--documenter-dark .card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #5e6d6f;align-items:stretch;display:flex}html.theme--documenter-dark .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-footer-item:not(:last-child){border-right:1px solid #5e6d6f}html.theme--documenter-dark .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--documenter-dark .dropdown.is-active .dropdown-menu,html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--documenter-dark .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--documenter-dark .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--documenter-dark .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .dropdown-content{background-color:#282f2f;border-radius:.4em;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);padding-bottom:.5rem;padding-top:.5rem}html.theme--documenter-dark .dropdown-item{color:#fff;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--documenter-dark a.dropdown-item,html.theme--documenter-dark button.dropdown-item{padding-right:3rem;text-align:left;white-space:nowrap;width:100%}html.theme--documenter-dark a.dropdown-item:hover,html.theme--documenter-dark button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}html.theme--documenter-dark a.dropdown-item.is-active,html.theme--documenter-dark button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .dropdown-divider{background-color:#5e6d6f;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--documenter-dark .level{align-items:center;justify-content:space-between}html.theme--documenter-dark .level code{border-radius:.4em}html.theme--documenter-dark .level img{display:inline-block;vertical-align:top}html.theme--documenter-dark .level.is-mobile{display:flex}html.theme--documenter-dark .level.is-mobile .level-left,html.theme--documenter-dark .level.is-mobile .level-right{display:flex}html.theme--documenter-dark .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level{display:flex}html.theme--documenter-dark .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--documenter-dark .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--documenter-dark .level-item .title,html.theme--documenter-dark .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--documenter-dark .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--documenter-dark .level-left,html.theme--documenter-dark .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .level-left .level-item.is-flexible,html.theme--documenter-dark .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left .level-item:not(:last-child),html.theme--documenter-dark .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--documenter-dark .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left{display:flex}}html.theme--documenter-dark .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-right{display:flex}}html.theme--documenter-dark .list{background-color:#fff;border-radius:.4em;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1)}html.theme--documenter-dark .list-item{display:block;padding:0.5em 1em}html.theme--documenter-dark .list-item:not(a){color:#fff}html.theme--documenter-dark .list-item:first-child{border-top-left-radius:.4em;border-top-right-radius:.4em}html.theme--documenter-dark .list-item:last-child{border-bottom-left-radius:.4em;border-bottom-right-radius:.4em}html.theme--documenter-dark .list-item:not(:last-child){border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .list-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark a.list-item{background-color:#282f2f;cursor:pointer}html.theme--documenter-dark .media{align-items:flex-start;display:flex;text-align:left}html.theme--documenter-dark .media .content:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .media .media{border-top:1px solid rgba(94,109,111,0.5);display:flex;padding-top:0.75rem}html.theme--documenter-dark .media .media .content:not(:last-child),html.theme--documenter-dark .media .media .control:not(:last-child){margin-bottom:0.5rem}html.theme--documenter-dark .media .media .media{padding-top:0.5rem}html.theme--documenter-dark .media .media .media+.media{margin-top:0.5rem}html.theme--documenter-dark .media+.media{border-top:1px solid rgba(94,109,111,0.5);margin-top:1rem;padding-top:1rem}html.theme--documenter-dark .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--documenter-dark .media-left,html.theme--documenter-dark .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .media-left{margin-right:1rem}html.theme--documenter-dark .media-right{margin-left:1rem}html.theme--documenter-dark .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:left}@media screen and (max-width: 768px){html.theme--documenter-dark .media-content{overflow-x:auto}}html.theme--documenter-dark .menu{font-size:15px}html.theme--documenter-dark .menu.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.menu{font-size:.85em}html.theme--documenter-dark .menu.is-medium{font-size:1.25rem}html.theme--documenter-dark .menu.is-large{font-size:1.5rem}html.theme--documenter-dark .menu-list{line-height:1.25}html.theme--documenter-dark .menu-list a{border-radius:3px;color:#fff;display:block;padding:0.5em 0.75em}html.theme--documenter-dark .menu-list a:hover{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .menu-list a.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--documenter-dark .menu-label:not(:first-child){margin-top:1em}html.theme--documenter-dark .menu-label:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .message{background-color:#282f2f;border-radius:.4em;font-size:15px}html.theme--documenter-dark .message strong{color:currentColor}html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .message.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.message{font-size:.85em}html.theme--documenter-dark .message.is-medium{font-size:1.25rem}html.theme--documenter-dark .message.is-large{font-size:1.5rem}html.theme--documenter-dark .message.is-white{background-color:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff;color:#4d4d4d}html.theme--documenter-dark .message.is-black{background-color:#fafafa}html.theme--documenter-dark .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .message.is-black .message-body{border-color:#0a0a0a;color:#090909}html.theme--documenter-dark .message.is-light{background-color:#f9fafb}html.theme--documenter-dark .message.is-light .message-header{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .message.is-light .message-body{border-color:#ecf0f1;color:#505050}html.theme--documenter-dark .message.is-dark,html.theme--documenter-dark .content kbd.message{background-color:#f9fafa}html.theme--documenter-dark .message.is-dark .message-header,html.theme--documenter-dark .content kbd.message .message-header{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .message.is-dark .message-body,html.theme--documenter-dark .content kbd.message .message-body{border-color:#282f2f;color:#212526}html.theme--documenter-dark .message.is-primary,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink{background-color:#f8fafc}html.theme--documenter-dark .message.is-primary .message-header,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-header{background-color:#375a7f;color:#fff}html.theme--documenter-dark .message.is-primary .message-body,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-body{border-color:#375a7f;color:#2b4159}html.theme--documenter-dark .message.is-link{background-color:#f6fefc}html.theme--documenter-dark .message.is-link .message-header{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .message.is-link .message-body{border-color:#1abc9c;color:#0b2f28}html.theme--documenter-dark .message.is-info{background-color:#f5fbff}html.theme--documenter-dark .message.is-info .message-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .message.is-info .message-body{border-color:#024c7d;color:#033659}html.theme--documenter-dark .message.is-success{background-color:#f5fff9}html.theme--documenter-dark .message.is-success .message-header{background-color:#008438;color:#fff}html.theme--documenter-dark .message.is-success .message-body{border-color:#008438;color:#023518}html.theme--documenter-dark .message.is-warning{background-color:#fffcf5}html.theme--documenter-dark .message.is-warning .message-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .message.is-warning .message-body{border-color:#ad8100;color:#3d2e03}html.theme--documenter-dark .message.is-danger{background-color:#fef6f6}html.theme--documenter-dark .message.is-danger .message-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .message.is-danger .message-body{border-color:#9e1b0d;color:#7a170c}html.theme--documenter-dark .message-header{align-items:center;background-color:#fff;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--documenter-dark .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:0.75em}html.theme--documenter-dark .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--documenter-dark .message-body{border-color:#5e6d6f;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--documenter-dark .modal.is-active{display:flex}html.theme--documenter-dark .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px),print{html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--documenter-dark .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--documenter-dark .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--documenter-dark .modal-card-head,html.theme--documenter-dark .modal-card-foot{align-items:center;background-color:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--documenter-dark .modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--documenter-dark .modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--documenter-dark .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}html.theme--documenter-dark .modal-card-foot .button:not(:last-child){margin-right:0.5em}html.theme--documenter-dark .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--documenter-dark .navbar{background-color:#375a7f;min-height:4rem;position:relative;z-index:30}html.theme--documenter-dark .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-white .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-black .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--documenter-dark .navbar.is-light{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link{color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after{border-color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-burger{color:#282f2f}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-light .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link{color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after{border-color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:#282f2f}}html.theme--documenter-dark .navbar.is-dark,html.theme--documenter-dark .content kbd.navbar{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-brand>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link{color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-burger,html.theme--documenter-dark .content kbd.navbar .navbar-burger{color:#ecf0f1}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-dark .navbar-start>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-end>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link{color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after{border-color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#ecf0f1}}html.theme--documenter-dark .navbar.is-primary,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-burger,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-primary .navbar-start>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-end>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}html.theme--documenter-dark .navbar.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-link .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}html.theme--documenter-dark .navbar.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-info .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#024c7d;color:#fff}}html.theme--documenter-dark .navbar.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-success .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#008438;color:#fff}}html.theme--documenter-dark .navbar.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-warning .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ad8100;color:#fff}}html.theme--documenter-dark .navbar.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-danger .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#9e1b0d;color:#fff}}html.theme--documenter-dark .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--documenter-dark .navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-bottom,html.theme--documenter-dark .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-top{top:0}html.theme--documenter-dark html.has-navbar-fixed-top,html.theme--documenter-dark body.has-navbar-fixed-top{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom,html.theme--documenter-dark body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--documenter-dark .navbar-brand,html.theme--documenter-dark .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--documenter-dark .navbar-brand a.navbar-item:focus,html.theme--documenter-dark .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--documenter-dark .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--documenter-dark .navbar-burger{color:#fff;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--documenter-dark .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--documenter-dark .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--documenter-dark .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--documenter-dark .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--documenter-dark .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--documenter-dark .navbar-menu{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{color:#fff;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--documenter-dark .navbar-item .icon:only-child,html.theme--documenter-dark .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--documenter-dark a.navbar-item,html.theme--documenter-dark .navbar-link{cursor:pointer}html.theme--documenter-dark a.navbar-item:focus,html.theme--documenter-dark a.navbar-item:focus-within,html.theme--documenter-dark a.navbar-item:hover,html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link:focus,html.theme--documenter-dark .navbar-link:focus-within,html.theme--documenter-dark .navbar-link:hover,html.theme--documenter-dark .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-item{display:block;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .navbar-item img{max-height:1.75rem}html.theme--documenter-dark .navbar-item.has-dropdown{padding:0}html.theme--documenter-dark .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--documenter-dark .navbar-item.is-tab:focus,html.theme--documenter-dark .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(0.5rem - 3px)}html.theme--documenter-dark .navbar-content{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--documenter-dark .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--documenter-dark .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar>.container{display:block}html.theme--documenter-dark .navbar-brand .navbar-item,html.theme--documenter-dark .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--documenter-dark .navbar-link::after{display:none}html.theme--documenter-dark .navbar-menu{background-color:#375a7f;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--documenter-dark .navbar-menu.is-active{display:block}html.theme--documenter-dark .navbar.is-fixed-bottom-touch,html.theme--documenter-dark .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-touch{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-touch{top:0}html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu,html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--documenter-dark html.has-navbar-fixed-top-touch,html.theme--documenter-dark body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-touch,html.theme--documenter-dark body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar,html.theme--documenter-dark .navbar-menu,html.theme--documenter-dark .navbar-start,html.theme--documenter-dark .navbar-end{align-items:stretch;display:flex}html.theme--documenter-dark .navbar{min-height:4rem}html.theme--documenter-dark .navbar.is-spaced{padding:1rem 2rem}html.theme--documenter-dark .navbar.is-spaced .navbar-start,html.theme--documenter-dark .navbar.is-spaced .navbar-end{align-items:center}html.theme--documenter-dark .navbar.is-spaced a.navbar-item,html.theme--documenter-dark .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover,html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover,html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-burger{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{align-items:center;display:flex}html.theme--documenter-dark .navbar-item{display:flex}html.theme--documenter-dark .navbar-item.has-dropdown{align-items:stretch}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--documenter-dark .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--documenter-dark .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--documenter-dark .navbar-dropdown{background-color:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--documenter-dark .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}.navbar.is-spaced html.theme--documenter-dark .navbar-dropdown,html.theme--documenter-dark .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--documenter-dark .navbar-dropdown.is-right{left:auto;right:0}html.theme--documenter-dark .navbar-divider{display:block}html.theme--documenter-dark .navbar>.container .navbar-brand,html.theme--documenter-dark .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--documenter-dark .navbar>.container .navbar-menu,html.theme--documenter-dark .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop,html.theme--documenter-dark .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-desktop{top:0}html.theme--documenter-dark html.has-navbar-fixed-top-desktop,html.theme--documenter-dark body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop,html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-top,html.theme--documenter-dark body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom,html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link.is-active{color:#1abc9c}html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover),html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:15px;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.85em}html.theme--documenter-dark .pagination.is-medium{font-size:1.25rem}html.theme--documenter-dark .pagination.is-large{font-size:1.5rem}html.theme--documenter-dark .pagination.is-rounded .pagination-previous,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--documenter-dark .pagination.is-rounded .pagination-next,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:290486px}html.theme--documenter-dark .pagination.is-rounded .pagination-link,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:290486px}html.theme--documenter-dark .pagination,html.theme--documenter-dark .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link{border-color:#5e6d6f;color:#1abc9c;min-width:2.25em}html.theme--documenter-dark .pagination-previous:hover,html.theme--documenter-dark .pagination-next:hover,html.theme--documenter-dark .pagination-link:hover{border-color:#8c9b9d;color:#1dd2af}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus{border-color:#8c9b9d}html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled]{background-color:#dbdee0;border-color:#dbdee0;box-shadow:none;color:#5e6d6f;opacity:0.5}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .pagination-ellipsis{color:#8c9b9d;pointer-events:none}html.theme--documenter-dark .pagination-list{flex-wrap:wrap}@media screen and (max-width: 768px){html.theme--documenter-dark .pagination{flex-wrap:wrap}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--documenter-dark .pagination-previous{order:2}html.theme--documenter-dark .pagination-next{order:3}html.theme--documenter-dark .pagination{justify-content:space-between}html.theme--documenter-dark .pagination.is-centered .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--documenter-dark .pagination.is-centered .pagination-next{order:3}html.theme--documenter-dark .pagination.is-right .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-right .pagination-next{order:2}html.theme--documenter-dark .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--documenter-dark .panel{font-size:15px}html.theme--documenter-dark .panel:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs,html.theme--documenter-dark .panel-block{border-bottom:1px solid #5e6d6f;border-left:1px solid #5e6d6f;border-right:1px solid #5e6d6f}html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child,html.theme--documenter-dark .panel-block:first-child{border-top:1px solid #5e6d6f}html.theme--documenter-dark .panel-heading{background-color:#282f2f;border-radius:.4em .4em 0 0;color:#f2f2f2;font-size:1.25em;font-weight:300;line-height:1.25;padding:0.5em 0.75em}html.theme--documenter-dark .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--documenter-dark .panel-tabs a{border-bottom:1px solid #5e6d6f;margin-bottom:-1px;padding:0.5em}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#343c3d;color:#17a689}html.theme--documenter-dark .panel-list a{color:#fff}html.theme--documenter-dark .panel-list a:hover{color:#1abc9c}html.theme--documenter-dark .panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--documenter-dark .panel-block input[type="checkbox"]{margin-right:0.75em}html.theme--documenter-dark .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--documenter-dark .panel-block.is-wrapped{flex-wrap:wrap}html.theme--documenter-dark .panel-block.is-active{border-left-color:#1abc9c;color:#17a689}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark a.panel-block,html.theme--documenter-dark label.panel-block{cursor:pointer}html.theme--documenter-dark a.panel-block:hover,html.theme--documenter-dark label.panel-block:hover{background-color:#282f2f}html.theme--documenter-dark .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff;margin-right:0.75em}html.theme--documenter-dark .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--documenter-dark .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:15px;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--documenter-dark .tabs a{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;color:#fff;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--documenter-dark .tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}html.theme--documenter-dark .tabs li{display:block}html.theme--documenter-dark .tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--documenter-dark .tabs ul.is-left{padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--documenter-dark .tabs .icon:first-child{margin-right:0.5em}html.theme--documenter-dark .tabs .icon:last-child{margin-left:0.5em}html.theme--documenter-dark .tabs.is-centered ul{justify-content:center}html.theme--documenter-dark .tabs.is-right ul{justify-content:flex-end}html.theme--documenter-dark .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--documenter-dark .tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !important}html.theme--documenter-dark .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--documenter-dark .tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .tabs.is-toggle li:first-child a{border-radius:.4em 0 0 .4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-radius:0 .4em .4em 0}html.theme--documenter-dark .tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}html.theme--documenter-dark .tabs.is-toggle ul{border-bottom:none}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}html.theme--documenter-dark .tabs.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.85em}html.theme--documenter-dark .tabs.is-medium{font-size:1.25rem}html.theme--documenter-dark .tabs.is-large{font-size:1.5rem}html.theme--documenter-dark .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--documenter-dark .column.is-narrow{flex:none}.columns.is-mobile>html.theme--documenter-dark .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-1{flex:none;width:8.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-4{flex:none;width:33.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-7{flex:none;width:58.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-10{flex:none;width:83.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.3333333333%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.6666666667%}.columns.is-mobile>html.theme--documenter-dark .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--documenter-dark .column.is-narrow-mobile{flex:none}html.theme--documenter-dark .column.is-full-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-mobile{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--documenter-dark .column.is-0-mobile{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-mobile{margin-left:0%}html.theme--documenter-dark .column.is-1-mobile{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-mobile{margin-left:25%}html.theme--documenter-dark .column.is-4-mobile{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-mobile{margin-left:50%}html.theme--documenter-dark .column.is-7-mobile{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-mobile{margin-left:75%}html.theme--documenter-dark .column.is-10-mobile{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .column.is-narrow,html.theme--documenter-dark .column.is-narrow-tablet{flex:none}html.theme--documenter-dark .column.is-full,html.theme--documenter-dark .column.is-full-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters,html.theme--documenter-dark .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds,html.theme--documenter-dark .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half,html.theme--documenter-dark .column.is-half-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third,html.theme--documenter-dark .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter,html.theme--documenter-dark .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth,html.theme--documenter-dark .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths,html.theme--documenter-dark .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths,html.theme--documenter-dark .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths,html.theme--documenter-dark .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters,html.theme--documenter-dark .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds,html.theme--documenter-dark .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half,html.theme--documenter-dark .column.is-offset-half-tablet{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third,html.theme--documenter-dark .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter,html.theme--documenter-dark .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth,html.theme--documenter-dark .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths,html.theme--documenter-dark .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths,html.theme--documenter-dark .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths,html.theme--documenter-dark .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--documenter-dark .column.is-0,html.theme--documenter-dark .column.is-0-tablet{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0,html.theme--documenter-dark .column.is-offset-0-tablet{margin-left:0%}html.theme--documenter-dark .column.is-1,html.theme--documenter-dark .column.is-1-tablet{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3,html.theme--documenter-dark .column.is-3-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3,html.theme--documenter-dark .column.is-offset-3-tablet{margin-left:25%}html.theme--documenter-dark .column.is-4,html.theme--documenter-dark .column.is-4-tablet{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6,html.theme--documenter-dark .column.is-6-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6,html.theme--documenter-dark .column.is-offset-6-tablet{margin-left:50%}html.theme--documenter-dark .column.is-7,html.theme--documenter-dark .column.is-7-tablet{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9,html.theme--documenter-dark .column.is-9-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9,html.theme--documenter-dark .column.is-offset-9-tablet{margin-left:75%}html.theme--documenter-dark .column.is-10,html.theme--documenter-dark .column.is-10-tablet{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12,html.theme--documenter-dark .column.is-12-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12,html.theme--documenter-dark .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--documenter-dark .column.is-narrow-touch{flex:none}html.theme--documenter-dark .column.is-full-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-touch{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-touch{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-touch{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-touch{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-touch{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--documenter-dark .column.is-0-touch{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-touch{margin-left:0%}html.theme--documenter-dark .column.is-1-touch{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-touch{margin-left:25%}html.theme--documenter-dark .column.is-4-touch{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-touch{margin-left:50%}html.theme--documenter-dark .column.is-7-touch{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-touch{margin-left:75%}html.theme--documenter-dark .column.is-10-touch{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--documenter-dark .column.is-narrow-desktop{flex:none}html.theme--documenter-dark .column.is-full-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-desktop{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--documenter-dark .column.is-0-desktop{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-desktop{margin-left:0%}html.theme--documenter-dark .column.is-1-desktop{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-desktop{margin-left:25%}html.theme--documenter-dark .column.is-4-desktop{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-desktop{margin-left:50%}html.theme--documenter-dark .column.is-7-desktop{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-desktop{margin-left:75%}html.theme--documenter-dark .column.is-10-desktop{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--documenter-dark .column.is-narrow-widescreen{flex:none}html.theme--documenter-dark .column.is-full-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--documenter-dark .column.is-0-widescreen{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-widescreen{margin-left:0%}html.theme--documenter-dark .column.is-1-widescreen{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-4-widescreen{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-7-widescreen{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-10-widescreen{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--documenter-dark .column.is-narrow-fullhd{flex:none}html.theme--documenter-dark .column.is-full-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--documenter-dark .column.is-0-fullhd{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-fullhd{margin-left:0%}html.theme--documenter-dark .column.is-1-fullhd{flex:none;width:8.3333333333%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.3333333333%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.6666666667%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.6666666667%}html.theme--documenter-dark .column.is-3-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-4-fullhd{flex:none;width:33.3333333333%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.3333333333%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.6666666667%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.6666666667%}html.theme--documenter-dark .column.is-6-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-7-fullhd{flex:none;width:58.3333333333%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.3333333333%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.6666666667%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.6666666667%}html.theme--documenter-dark .column.is-9-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-10-fullhd{flex:none;width:83.3333333333%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.3333333333%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.6666666667%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.6666666667%}html.theme--documenter-dark .column.is-12-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-fullhd{margin-left:100%}}html.theme--documenter-dark .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--documenter-dark .columns.is-centered{justify-content:center}html.theme--documenter-dark .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--documenter-dark .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--documenter-dark .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .columns.is-gapless:last-child{margin-bottom:0}html.theme--documenter-dark .columns.is-mobile{display:flex}html.theme--documenter-dark .columns.is-multiline{flex-wrap:wrap}html.theme--documenter-dark .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-desktop{display:flex}}html.theme--documenter-dark .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--documenter-dark .columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--documenter-dark .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--documenter-dark .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--documenter-dark .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--documenter-dark .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--documenter-dark .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--documenter-dark .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--documenter-dark .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--documenter-dark .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--documenter-dark .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.75rem}html.theme--documenter-dark .tile.is-vertical{flex-direction:column}html.theme--documenter-dark .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--documenter-dark .tile:not(.is-child){display:flex}html.theme--documenter-dark .tile.is-1{flex:none;width:8.3333333333%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.6666666667%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.3333333333%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.6666666667%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.3333333333%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.6666666667%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.3333333333%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.6666666667%}html.theme--documenter-dark .tile.is-12{flex:none;width:100%}}html.theme--documenter-dark .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--documenter-dark .hero .navbar{background:none}html.theme--documenter-dark .hero .tabs ul{border-bottom:none}html.theme--documenter-dark .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-white strong{color:inherit}html.theme--documenter-dark .hero.is-white .title{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--documenter-dark .hero.is-white .subtitle a:not(.button),html.theme--documenter-dark .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-white .navbar-menu{background-color:#fff}}html.theme--documenter-dark .hero.is-white .navbar-item,html.theme--documenter-dark .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--documenter-dark .hero.is-white a.navbar-item:hover,html.theme--documenter-dark .hero.is-white a.navbar-item.is-active,html.theme--documenter-dark .hero.is-white .navbar-link:hover,html.theme--documenter-dark .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--documenter-dark .hero.is-white .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-white .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-black strong{color:inherit}html.theme--documenter-dark .hero.is-black .title{color:#fff}html.theme--documenter-dark .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-black .subtitle a:not(.button),html.theme--documenter-dark .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--documenter-dark .hero.is-black .navbar-item,html.theme--documenter-dark .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-black a.navbar-item:hover,html.theme--documenter-dark .hero.is-black a.navbar-item.is-active,html.theme--documenter-dark .hero.is-black .navbar-link:hover,html.theme--documenter-dark .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-black .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-black .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--documenter-dark .hero.is-light{background-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-light strong{color:inherit}html.theme--documenter-dark .hero.is-light .title{color:#282f2f}html.theme--documenter-dark .hero.is-light .subtitle{color:rgba(40,47,47,0.9)}html.theme--documenter-dark .hero.is-light .subtitle a:not(.button),html.theme--documenter-dark .hero.is-light .subtitle strong{color:#282f2f}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-light .navbar-menu{background-color:#ecf0f1}}html.theme--documenter-dark .hero.is-light .navbar-item,html.theme--documenter-dark .hero.is-light .navbar-link{color:rgba(40,47,47,0.7)}html.theme--documenter-dark .hero.is-light a.navbar-item:hover,html.theme--documenter-dark .hero.is-light a.navbar-item.is-active,html.theme--documenter-dark .hero.is-light .navbar-link:hover,html.theme--documenter-dark .hero.is-light .navbar-link.is-active{background-color:#dde4e6;color:#282f2f}html.theme--documenter-dark .hero.is-light .tabs a{color:#282f2f;opacity:0.9}html.theme--documenter-dark .hero.is-light .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-light .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a{color:#282f2f}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#282f2f;border-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .hero.is-light.is-bold{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}}html.theme--documenter-dark .hero.is-dark,html.theme--documenter-dark .content kbd.hero{background-color:#282f2f;color:#ecf0f1}html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-dark strong,html.theme--documenter-dark .content kbd.hero strong{color:inherit}html.theme--documenter-dark .hero.is-dark .title,html.theme--documenter-dark .content kbd.hero .title{color:#ecf0f1}html.theme--documenter-dark .hero.is-dark .subtitle,html.theme--documenter-dark .content kbd.hero .subtitle{color:rgba(236,240,241,0.9)}html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button),html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button),html.theme--documenter-dark .hero.is-dark .subtitle strong,html.theme--documenter-dark .content kbd.hero .subtitle strong{color:#ecf0f1}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-dark .navbar-menu,html.theme--documenter-dark .content kbd.hero .navbar-menu{background-color:#282f2f}}html.theme--documenter-dark .hero.is-dark .navbar-item,html.theme--documenter-dark .content kbd.hero .navbar-item,html.theme--documenter-dark .hero.is-dark .navbar-link,html.theme--documenter-dark .content kbd.hero .navbar-link{color:rgba(236,240,241,0.7)}html.theme--documenter-dark .hero.is-dark a.navbar-item:hover,html.theme--documenter-dark .content kbd.hero a.navbar-item:hover,html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active,html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active,html.theme--documenter-dark .hero.is-dark .navbar-link:hover,html.theme--documenter-dark .content kbd.hero .navbar-link:hover,html.theme--documenter-dark .hero.is-dark .navbar-link.is-active,html.theme--documenter-dark .content kbd.hero .navbar-link.is-active{background-color:#1d2122;color:#ecf0f1}html.theme--documenter-dark .hero.is-dark .tabs a,html.theme--documenter-dark .content kbd.hero .tabs a{color:#ecf0f1;opacity:0.9}html.theme--documenter-dark .hero.is-dark .tabs a:hover,html.theme--documenter-dark .content kbd.hero .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a{color:#ecf0f1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#ecf0f1;border-color:#ecf0f1;color:#282f2f}html.theme--documenter-dark .hero.is-dark.is-bold,html.theme--documenter-dark .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu,html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}}html.theme--documenter-dark .hero.is-primary,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-primary strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--documenter-dark .hero.is-primary .title,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--documenter-dark .hero.is-primary .subtitle,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--documenter-dark .hero.is-primary .subtitle strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-primary .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#375a7f}}html.theme--documenter-dark .hero.is-primary .navbar-item,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--documenter-dark .hero.is-primary .navbar-link,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-primary a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--documenter-dark .hero.is-primary .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--documenter-dark .hero.is-primary .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .hero.is-primary .tabs a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-primary .tabs a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#375a7f}html.theme--documenter-dark .hero.is-primary.is-bold,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}}html.theme--documenter-dark .hero.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-link strong{color:inherit}html.theme--documenter-dark .hero.is-link .title{color:#fff}html.theme--documenter-dark .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-link .subtitle a:not(.button),html.theme--documenter-dark .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-link .navbar-menu{background-color:#1abc9c}}html.theme--documenter-dark .hero.is-link .navbar-item,html.theme--documenter-dark .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-link a.navbar-item:hover,html.theme--documenter-dark .hero.is-link a.navbar-item.is-active,html.theme--documenter-dark .hero.is-link .navbar-link:hover,html.theme--documenter-dark .hero.is-link .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-link .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-link .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1abc9c}html.theme--documenter-dark .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}}html.theme--documenter-dark .hero.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-info strong{color:inherit}html.theme--documenter-dark .hero.is-info .title{color:#fff}html.theme--documenter-dark .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-info .subtitle a:not(.button),html.theme--documenter-dark .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-info .navbar-menu{background-color:#024c7d}}html.theme--documenter-dark .hero.is-info .navbar-item,html.theme--documenter-dark .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-info a.navbar-item:hover,html.theme--documenter-dark .hero.is-info a.navbar-item.is-active,html.theme--documenter-dark .hero.is-info .navbar-link:hover,html.theme--documenter-dark .hero.is-info .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-info .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-info .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#024c7d}html.theme--documenter-dark .hero.is-info.is-bold{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}}html.theme--documenter-dark .hero.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-success strong{color:inherit}html.theme--documenter-dark .hero.is-success .title{color:#fff}html.theme--documenter-dark .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-success .subtitle a:not(.button),html.theme--documenter-dark .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-success .navbar-menu{background-color:#008438}}html.theme--documenter-dark .hero.is-success .navbar-item,html.theme--documenter-dark .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-success a.navbar-item:hover,html.theme--documenter-dark .hero.is-success a.navbar-item.is-active,html.theme--documenter-dark .hero.is-success .navbar-link:hover,html.theme--documenter-dark .hero.is-success .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-success .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-success .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#008438}html.theme--documenter-dark .hero.is-success.is-bold{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}}html.theme--documenter-dark .hero.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-warning strong{color:inherit}html.theme--documenter-dark .hero.is-warning .title{color:#fff}html.theme--documenter-dark .hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button),html.theme--documenter-dark .hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-warning .navbar-menu{background-color:#ad8100}}html.theme--documenter-dark .hero.is-warning .navbar-item,html.theme--documenter-dark .hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-warning a.navbar-item:hover,html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active,html.theme--documenter-dark .hero.is-warning .navbar-link:hover,html.theme--documenter-dark .hero.is-warning .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .hero.is-warning .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-warning .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ad8100}html.theme--documenter-dark .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}}html.theme--documenter-dark .hero.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-danger strong{color:inherit}html.theme--documenter-dark .hero.is-danger .title{color:#fff}html.theme--documenter-dark .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button),html.theme--documenter-dark .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-danger .navbar-menu{background-color:#9e1b0d}}html.theme--documenter-dark .hero.is-danger .navbar-item,html.theme--documenter-dark .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-danger a.navbar-item:hover,html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active,html.theme--documenter-dark .hero.is-danger .navbar-link:hover,html.theme--documenter-dark .hero.is-danger .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-danger .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs li.is-active a{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#9e1b0d}html.theme--documenter-dark .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}}html.theme--documenter-dark .hero.is-small .hero-body,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}html.theme--documenter-dark .hero.is-halfheight .hero-body,html.theme--documenter-dark .hero.is-fullheight .hero-body,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--documenter-dark .hero.is-halfheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .hero.is-halfheight{min-height:50vh}html.theme--documenter-dark .hero.is-fullheight{min-height:100vh}html.theme--documenter-dark .hero-video{overflow:hidden}html.theme--documenter-dark .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--documenter-dark .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-video{display:none}}html.theme--documenter-dark .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-buttons .button{display:flex}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-buttons{display:flex;justify-content:center}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--documenter-dark .hero-head,html.theme--documenter-dark .hero-foot{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}html.theme--documenter-dark .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--documenter-dark .section.is-medium{padding:9rem 1.5rem}html.theme--documenter-dark .section.is-large{padding:18rem 1.5rem}}html.theme--documenter-dark .footer{background-color:#282f2f;padding:3rem 1.5rem 6rem}html.theme--documenter-dark hr{height:1px}html.theme--documenter-dark h6{text-transform:uppercase;letter-spacing:0.5px}html.theme--documenter-dark .hero{background-color:#343c3d}html.theme--documenter-dark a{transition:all 200ms ease}html.theme--documenter-dark .button{transition:all 200ms ease;border-width:1px;color:#fff}html.theme--documenter-dark .button.is-active,html.theme--documenter-dark .button.is-focused,html.theme--documenter-dark .button:active,html.theme--documenter-dark .button:focus{box-shadow:0 0 0 2px rgba(140,155,157,0.5)}html.theme--documenter-dark .button.is-white.is-hovered,html.theme--documenter-dark .button.is-white:hover{background-color:#fff}html.theme--documenter-dark .button.is-white.is-active,html.theme--documenter-dark .button.is-white.is-focused,html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,0.5)}html.theme--documenter-dark .button.is-black.is-hovered,html.theme--documenter-dark .button.is-black:hover{background-color:#1d1d1d}html.theme--documenter-dark .button.is-black.is-active,html.theme--documenter-dark .button.is-black.is-focused,html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,0.5)}html.theme--documenter-dark .button.is-light.is-hovered,html.theme--documenter-dark .button.is-light:hover{background-color:#fff}html.theme--documenter-dark .button.is-light.is-active,html.theme--documenter-dark .button.is-light.is-focused,html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,0.5)}html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered,html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover{background-color:#3a4344}html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused,html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,0.5)}html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover{background-color:#436d9a}html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink,html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,0.5)}html.theme--documenter-dark .button.is-link.is-hovered,html.theme--documenter-dark .button.is-link:hover{background-color:#1fdeb8}html.theme--documenter-dark .button.is-link.is-active,html.theme--documenter-dark .button.is-link.is-focused,html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,0.5)}html.theme--documenter-dark .button.is-info.is-hovered,html.theme--documenter-dark .button.is-info:hover{background-color:#0363a3}html.theme--documenter-dark .button.is-info.is-active,html.theme--documenter-dark .button.is-info.is-focused,html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info:focus{border-color:#024c7d;box-shadow:0 0 0 2px rgba(2,76,125,0.5)}html.theme--documenter-dark .button.is-success.is-hovered,html.theme--documenter-dark .button.is-success:hover{background-color:#00aa48}html.theme--documenter-dark .button.is-success.is-active,html.theme--documenter-dark .button.is-success.is-focused,html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success:focus{border-color:#008438;box-shadow:0 0 0 2px rgba(0,132,56,0.5)}html.theme--documenter-dark .button.is-warning.is-hovered,html.theme--documenter-dark .button.is-warning:hover{background-color:#d39e00}html.theme--documenter-dark .button.is-warning.is-active,html.theme--documenter-dark .button.is-warning.is-focused,html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning:focus{border-color:#ad8100;box-shadow:0 0 0 2px rgba(173,129,0,0.5)}html.theme--documenter-dark .button.is-danger.is-hovered,html.theme--documenter-dark .button.is-danger:hover{background-color:#c12110}html.theme--documenter-dark .button.is-danger.is-active,html.theme--documenter-dark .button.is-danger.is-focused,html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger:focus{border-color:#9e1b0d;box-shadow:0 0 0 2px rgba(158,27,13,0.5)}html.theme--documenter-dark .label{color:#dbdee0}html.theme--documenter-dark .button,html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .select,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea{height:2.5em}html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .select:after,html.theme--documenter-dark .select select{border-width:1px}html.theme--documenter-dark .control.has-addons .button,html.theme--documenter-dark .control.has-addons .input,html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search>input,html.theme--documenter-dark .control.has-addons .select{margin-right:-1px}html.theme--documenter-dark .notification{background-color:#343c3d}html.theme--documenter-dark .card{box-shadow:none;border:1px solid #343c3d;background-color:#282f2f;border-radius:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-footer{background-color:rgba(18,18,18,0.2)}html.theme--documenter-dark .card .card-footer,html.theme--documenter-dark .card .card-footer-item{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}html.theme--documenter-dark .notification.is-black a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-light a:not(.button){color:#282f2f;text-decoration:underline}html.theme--documenter-dark .notification.is-dark a:not(.button),html.theme--documenter-dark .content kbd.notification a:not(.button){color:#ecf0f1;text-decoration:underline}html.theme--documenter-dark .notification.is-primary a:not(.button),html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-link a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-info a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-success a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-warning a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-danger a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .tag,html.theme--documenter-dark .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.4em}html.theme--documenter-dark .menu-list a{transition:all 300ms ease}html.theme--documenter-dark .modal-card-body{background-color:#282f2f}html.theme--documenter-dark .modal-card-foot,html.theme--documenter-dark .modal-card-head{border-color:#343c3d}html.theme--documenter-dark .message-header{font-weight:700;background-color:#343c3d;color:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent{background:none}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}html.theme--documenter-dark .hero .navbar,html.theme--documenter-dark body>.navbar{border-radius:0}html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous{border-width:1px}html.theme--documenter-dark .panel-block,html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs{border-width:1px}html.theme--documenter-dark .panel-block:first-child,html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child{border-top-width:1px}html.theme--documenter-dark .panel-heading{font-weight:700}html.theme--documenter-dark .panel-tabs a{border-width:1px;margin-bottom:-1px}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#17a689}html.theme--documenter-dark .panel-block:hover{color:#1dd2af}html.theme--documenter-dark .panel-block:hover .panel-icon{color:#1dd2af}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#17a689}html.theme--documenter-dark .tabs a{border-bottom-width:1px;margin-bottom:-1px}html.theme--documenter-dark .tabs ul{border-bottom-width:1px}html.theme--documenter-dark .tabs.is-boxed a{border-width:1px}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#1f2424}html.theme--documenter-dark .tabs.is-toggle li a{border-width:1px;margin-bottom:0}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark h1 .docs-heading-anchor,html.theme--documenter-dark h1 .docs-heading-anchor:hover,html.theme--documenter-dark h1 .docs-heading-anchor:visited,html.theme--documenter-dark h2 .docs-heading-anchor,html.theme--documenter-dark h2 .docs-heading-anchor:hover,html.theme--documenter-dark h2 .docs-heading-anchor:visited,html.theme--documenter-dark h3 .docs-heading-anchor,html.theme--documenter-dark h3 .docs-heading-anchor:hover,html.theme--documenter-dark h3 .docs-heading-anchor:visited,html.theme--documenter-dark h4 .docs-heading-anchor,html.theme--documenter-dark h4 .docs-heading-anchor:hover,html.theme--documenter-dark h4 .docs-heading-anchor:visited,html.theme--documenter-dark h5 .docs-heading-anchor,html.theme--documenter-dark h5 .docs-heading-anchor:hover,html.theme--documenter-dark h5 .docs-heading-anchor:visited,html.theme--documenter-dark h6 .docs-heading-anchor,html.theme--documenter-dark h6 .docs-heading-anchor:hover,html.theme--documenter-dark h6 .docs-heading-anchor:visited{color:#f2f2f2}html.theme--documenter-dark h1 .docs-heading-anchor-permalink,html.theme--documenter-dark h2 .docs-heading-anchor-permalink,html.theme--documenter-dark h3 .docs-heading-anchor-permalink,html.theme--documenter-dark h4 .docs-heading-anchor-permalink,html.theme--documenter-dark h5 .docs-heading-anchor-permalink,html.theme--documenter-dark h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f0c1"}html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--documenter-dark .docs-light-only{display:none !important}html.theme--documenter-dark pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 5 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:1px;border-color:#5e6d6f;border-radius:.4em;font-size:15px}html.theme--documenter-dark .admonition strong{color:currentColor}html.theme--documenter-dark .admonition.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.85em}html.theme--documenter-dark .admonition.is-medium{font-size:1.25rem}html.theme--documenter-dark .admonition.is-large{font-size:1.5rem}html.theme--documenter-dark .admonition.is-default{background-color:#282f2f;border-color:#5e6d6f}html.theme--documenter-dark .admonition.is-default>.admonition-header{background-color:#5e6d6f;color:#fff}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-info{background-color:#282f2f;border-color:#024c7d}html.theme--documenter-dark .admonition.is-info>.admonition-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-success{background-color:#282f2f;border-color:#008438}html.theme--documenter-dark .admonition.is-success>.admonition-header{background-color:#008438;color:#fff}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-warning{background-color:#282f2f;border-color:#ad8100}html.theme--documenter-dark .admonition.is-warning>.admonition-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-danger{background-color:#282f2f;border-color:#9e1b0d}html.theme--documenter-dark .admonition.is-danger>.admonition-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-compat{background-color:#282f2f;border-color:#137886}html.theme--documenter-dark .admonition.is-compat>.admonition-header{background-color:#137886;color:#fff}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#fff;background-color:#5e6d6f;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 5 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}html.theme--documenter-dark .admonition-body pre{background-color:#282f2f}html.theme--documenter-dark .admonition-body code{background-color:rgba(255,255,255,0.05)}html.theme--documenter-dark .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #5e6d6f;box-shadow:none;max-width:100%}html.theme--documenter-dark .docstring>header{display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#282f2f;box-shadow:0 1px 2px rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>header code{background-color:transparent}html.theme--documenter-dark .docstring>header .docstring-binding{margin-right:0.3em}html.theme--documenter-dark .docstring>header .docstring-category{margin-left:0.3em}html.theme--documenter-dark .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>section:last-child{border-bottom:none}html.theme--documenter-dark .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid #9e1b0d;padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}html.theme--documenter-dark .content pre{border:1px solid #5e6d6f}html.theme--documenter-dark .content code{font-weight:inherit}html.theme--documenter-dark .content a code{color:#1abc9c}html.theme--documenter-dark .content h1 code,html.theme--documenter-dark .content h2 code,html.theme--documenter-dark .content h3 code,html.theme--documenter-dark .content h4 code,html.theme--documenter-dark .content h5 code,html.theme--documenter-dark .content h6 code{color:#f2f2f2}html.theme--documenter-dark .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--documenter-dark .content blockquote>ul:first-child,html.theme--documenter-dark .content blockquote>ol:first-child,html.theme--documenter-dark .content .admonition-body>ul:first-child,html.theme--documenter-dark .content .admonition-body>ol:first-child{margin-top:0}html.theme--documenter-dark pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}html.theme--documenter-dark .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb a.is-disabled,html.theme--documenter-dark .breadcrumb a.is-disabled:hover{color:#f2f2f2}html.theme--documenter-dark .hljs{background:initial !important}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main{width:100%}html.theme--documenter-dark #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-main>header,html.theme--documenter-dark #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar{background-color:#1f2424;border-bottom:1px solid #5e6d6f;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{display:inline-block}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button{margin:auto 0 auto 1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{font-size:1.5rem;margin:auto 0 auto 1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--documenter-dark #documenter .docs-main section.footnotes{border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--documenter-dark #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5e6d6f;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--documenter-dark #documenter .docs-sidebar{display:flex;flex-direction:column;color:#fff;background-color:#282f2f;border-right:1px solid #5e6d6f;padding:0;flex:0 0 18rem;z-index:5;font-size:15px;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar{left:0;top:0}}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5e6d6f;display:none;padding:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li li{font-size:14.25px;margin-left:1em;border-left:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:11.25px;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f054"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#fff;background:#282f2f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;border-bottom:1px solid #5e6d6f;background-color:#1f2424}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#1f2424;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#32393a;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:12.75px;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{width:14.4rem}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}html.theme--documenter-dark #documenter .docs-main #documenter-search-info{margin-bottom:1rem}html.theme--documenter-dark #documenter .docs-main #documenter-search-results{list-style-type:circle;list-style-position:outside}html.theme--documenter-dark #documenter .docs-main #documenter-search-results li{margin-left:2rem}html.theme--documenter-dark #documenter .docs-main #documenter-search-results .docs-highlight{background-color:yellow}html.theme--documenter-dark{background-color:#1f2424;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-quote{color:#d4d0ab}html.theme--documenter-dark .hljs-variable,html.theme--documenter-dark .hljs-template-variable,html.theme--documenter-dark .hljs-tag,html.theme--documenter-dark .hljs-name,html.theme--documenter-dark .hljs-selector-id,html.theme--documenter-dark .hljs-selector-class,html.theme--documenter-dark .hljs-regexp,html.theme--documenter-dark .hljs-deletion{color:#ffa07a}html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-link{color:#f5ab35}html.theme--documenter-dark .hljs-attribute{color:#ffd700}html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-addition{color:#abe338}html.theme--documenter-dark .hljs-title,html.theme--documenter-dark .hljs-section{color:#00e0e0}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{color:#dcc6e0}html.theme--documenter-dark .hljs-emphasis{font-style:italic}html.theme--documenter-dark .hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast: active){html.theme--documenter-dark .hljs-addition,html.theme--documenter-dark .hljs-attribute,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-link,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-quote{color:highlight}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{font-weight:bold}}html.theme--documenter-dark .hljs-subst{color:#f8f8f2} diff --git a/v3.3.0/assets/themes/documenter-light.css b/v3.3.0/assets/themes/documenter-light.css new file mode 100644 index 0000000000..9b9a14b043 --- /dev/null +++ b/v3.3.0/assets/themes/documenter-light.css @@ -0,0 +1,9 @@ +@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable,.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.admonition:not(:last-child),.tabs:not(:last-child),.message:not(:last-child),.list:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.highlight:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:290486px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.modal-background,.modal,.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.25em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.375em - 1px);padding-left:calc(0.625em - 1px);padding-right:calc(0.625em - 1px);padding-top:calc(0.375em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{cursor:not-allowed}/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,embed,iframe,object,video{height:auto;max-width:100%}audio{max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:left}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,select,textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;font-size:1em;font-weight:400;line-height:1.5}a{color:#2e63b8;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:rgba(0,0,0,0.05);color:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:left}table th{color:#222}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-clipped{overflow:hidden !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,.docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#4eb5de !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#27a1d2 !important}.has-background-primary{background-color:#4eb5de !important}.has-text-link{color:#2e63b8 !important}a.has-text-link:hover,a.has-text-link:focus{color:#244d8f !important}.has-background-link{background-color:#2e63b8 !important}.has-text-info{color:#209cee !important}a.has-text-info:hover,a.has-text-info:focus{color:#1081cb !important}.has-background-info{background-color:#209cee !important}.has-text-success{color:#22c35b !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a9847 !important}.has-background-success{background-color:#22c35b !important}.has-text-warning{color:#ffdd57 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd324 !important}.has-background-warning{background-color:#ffdd57 !important}.has-text-danger{color:#da0b00 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a70800 !important}.has-background-danger{background-color:#da0b00 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-relative{position:relative !important}.box{background-color:#fff;border-radius:6px;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#222;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px #2e63b8}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #2e63b8}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(0.375em - 1px);padding-left:.75em;padding-right:.75em;padding-top:calc(0.375em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button #documenter .docs-sidebar form.docs-search>input.icon,#documenter .docs-sidebar .button form.docs-search>input.icon,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.375em - 1px);margin-right:0.1875em}.button .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:calc(-0.375em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.375em - 1px);margin-right:calc(-0.375em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#3c5dcd;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:transparent;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:transparent;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:#363636}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:#363636}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:#363636}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:#363636}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:transparent;box-shadow:none}.button.is-light.is-inverted{background-color:#363636;color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:#292929}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:#363636;border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:#363636;color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark,.content kbd.button{background-color:#363636;border-color:transparent;color:#f5f5f5}.button.is-dark:hover,.content kbd.button:hover,.button.is-dark.is-hovered,.content kbd.button.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#f5f5f5}.button.is-dark:focus:not(:active),.content kbd.button:focus:not(:active),.button.is-dark.is-focused:not(:active),.content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.content kbd.button:active,.button.is-dark.is-active,.content kbd.button.is-active{background-color:#292929;border-color:transparent;color:#f5f5f5}.button.is-dark[disabled],.content kbd.button[disabled],fieldset[disabled] .button.is-dark,fieldset[disabled] .content kbd.button,.content fieldset[disabled] kbd.button{background-color:#363636;border-color:transparent;box-shadow:none}.button.is-dark.is-inverted,.content kbd.button.is-inverted{background-color:#f5f5f5;color:#363636}.button.is-dark.is-inverted:hover,.content kbd.button.is-inverted:hover,.button.is-dark.is-inverted.is-hovered,.content kbd.button.is-inverted.is-hovered{background-color:#e8e8e8}.button.is-dark.is-inverted[disabled],.content kbd.button.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted,fieldset[disabled] .content kbd.button.is-inverted,.content fieldset[disabled] kbd.button.is-inverted{background-color:#f5f5f5;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-dark.is-outlined,.content kbd.button.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.content kbd.button.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.content kbd.button.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.content kbd.button.is-outlined:focus,.button.is-dark.is-outlined.is-focused,.content kbd.button.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#f5f5f5}.button.is-dark.is-outlined.is-loading::after,.content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.content kbd.button.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.content kbd.button.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after,.content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-dark.is-outlined[disabled],.content kbd.button.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined,fieldset[disabled] .content kbd.button.is-outlined,.content fieldset[disabled] kbd.button.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined,.content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-dark.is-inverted.is-outlined:hover,.content kbd.button.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.content kbd.button.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.content kbd.button.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused,.content kbd.button.is-inverted.is-outlined.is-focused{background-color:#f5f5f5;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.content kbd.button.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.content kbd.button.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],.content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined,fieldset[disabled] .content kbd.button.is-inverted.is-outlined,.content fieldset[disabled] kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-primary,.docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;color:#fff}.button.is-primary:hover,.docstring>section>a.button.docs-sourcelink:hover,.button.is-primary.is-hovered,.docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#43b1dc;border-color:transparent;color:#fff}.button.is-primary:focus,.docstring>section>a.button.docs-sourcelink:focus,.button.is-primary.is-focused,.docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.docstring>section>a.button.docs-sourcelink:focus:not(:active),.button.is-primary.is-focused:not(:active),.docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.button.is-primary:active,.docstring>section>a.button.docs-sourcelink:active,.button.is-primary.is-active,.docstring>section>a.button.is-active.docs-sourcelink{background-color:#39acda;border-color:transparent;color:#fff}.button.is-primary[disabled],.docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary,fieldset[disabled] .docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;box-shadow:none}.button.is-primary.is-inverted,.docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted:hover,.docstring>section>a.button.is-inverted.docs-sourcelink:hover,.button.is-primary.is-inverted.is-hovered,.docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],.docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted,fieldset[disabled] .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#4eb5de}.button.is-primary.is-loading::after,.docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined,.docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;color:#4eb5de}.button.is-primary.is-outlined:hover,.docstring>section>a.button.is-outlined.docs-sourcelink:hover,.button.is-primary.is-outlined.is-hovered,.docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-outlined:focus,.docstring>section>a.button.is-outlined.docs-sourcelink:focus,.button.is-primary.is-outlined.is-focused,.docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.button.is-primary.is-outlined.is-loading::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],.docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-outlined,fieldset[disabled] .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;box-shadow:none;color:#4eb5de}.button.is-primary.is-inverted.is-outlined,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-inverted.is-outlined:focus,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,.button.is-primary.is-inverted.is-outlined.is-focused,.docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-inverted.is-outlined[disabled],.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined,fieldset[disabled] .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link{background-color:#2e63b8;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#2b5eae;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#2958a4;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#2e63b8;border-color:transparent;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#2e63b8}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;color:#2e63b8}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;box-shadow:none;color:#2e63b8}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info{background-color:#209cee;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#1497ed;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#1190e3;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#209cee;border-color:transparent;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#209cee}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#209cee;box-shadow:none;color:#209cee}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#209cee}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success{background-color:#22c35b;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#20b856;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#1ead51;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#22c35b;border-color:transparent;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#22c35b}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#22c35b}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;color:#22c35b}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#22c35b;border-color:#22c35b;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;box-shadow:none;color:#22c35b}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#22c35b}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:transparent;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-danger{background-color:#da0b00;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#cd0a00;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#c10a00;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#da0b00;border-color:transparent;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#da0b00}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;color:#da0b00}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#da0b00;border-color:#da0b00;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;box-shadow:none;color:#da0b00}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-small,#documenter .docs-sidebar form.docs-search>input.button{border-radius:2px;font-size:.75rem}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em / 2));top:calc(50% - (1em / 2));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;box-shadow:none;pointer-events:none}.button.is-rounded,#documenter .docs-sidebar form.docs-search>input.button{border-radius:290486px;padding-left:1em;padding-right:1em}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:0.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){border-radius:2px;font-size:.75rem}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}@media screen and (min-width: 1056px){.container{max-width:992px}.container.is-fluid{margin-left:32px;margin-right:32px;max-width:none}}@media screen and (max-width: 1215px){.container.is-widescreen{max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd{max-width:1344px}}@media screen and (min-width: 1216px){.container{max-width:1152px}}@media screen and (min-width: 1408px){.container{max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#222;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#222}.content table th:not([align]){text-align:left}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small,#documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small,#documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.image,#documenter .docs-sidebar .docs-logo>img{display:block;position:relative}.image img,#documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}.image img.is-rounded,#documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:290486px}.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,#documenter .docs-sidebar .docs-logo>img.is-square,.image.is-1by1,#documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}.image.is-5by4,#documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}.image.is-4by3,#documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}.image.is-3by2,#documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}.image.is-5by3,#documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}.image.is-16by9,#documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}.image.is-2by1,#documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}.image.is-3by1,#documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}.image.is-4by5,#documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}.image.is-3by4,#documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}.image.is-2by3,#documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}.image.is-3by5,#documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}.image.is-9by16,#documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}.image.is-1by2,#documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}.image.is-1by3,#documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}.image.is-16x16,#documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}.image.is-24x24,#documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}.image.is-32x32,#documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}.image.is-48x48,#documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}.image.is-64x64,#documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}.image.is-96x96,#documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}.image.is-128x128,#documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{position:absolute;right:0.5rem;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:#363636}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#f5f5f5}.notification.is-primary,.docstring>section>a.notification.docs-sourcelink{background-color:#4eb5de;color:#fff}.notification.is-link{background-color:#2e63b8;color:#fff}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-success{background-color:#22c35b;color:#fff}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.notification.is-danger{background-color:#da0b00;color:#fff}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#dbdbdb}.progress::-webkit-progress-value{background-color:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #dbdbdb 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #dbdbdb 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #dbdbdb 30%)}.progress.is-dark::-webkit-progress-value,.content kbd.progress::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar,.content kbd.progress::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill,.content kbd.progress::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate,.content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363636 30%, #dbdbdb 30%)}.progress.is-primary::-webkit-progress-value,.docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#4eb5de}.progress.is-primary::-moz-progress-bar,.docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#4eb5de}.progress.is-primary::-ms-fill,.docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#4eb5de}.progress.is-primary:indeterminate,.docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #4eb5de 30%, #dbdbdb 30%)}.progress.is-link::-webkit-progress-value{background-color:#2e63b8}.progress.is-link::-moz-progress-bar{background-color:#2e63b8}.progress.is-link::-ms-fill{background-color:#2e63b8}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #2e63b8 30%, #dbdbdb 30%)}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #209cee 30%, #dbdbdb 30%)}.progress.is-success::-webkit-progress-value{background-color:#22c35b}.progress.is-success::-moz-progress-bar{background-color:#22c35b}.progress.is-success::-ms-fill{background-color:#22c35b}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #22c35b 30%, #dbdbdb 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffdd57 30%, #dbdbdb 30%)}.progress.is-danger::-webkit-progress-value{background-color:#da0b00}.progress.is-danger::-moz-progress-bar{background-color:#da0b00}.progress.is-danger::-ms-fill{background-color:#da0b00}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #da0b00 30%, #dbdbdb 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#dbdbdb;background-image:linear-gradient(to right, #222 30%, #dbdbdb 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress.is-small,#documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#f5f5f5}.table td.is-primary,.table th.is-primary{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.table td.is-link,.table th.is-link{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#22c35b;border-color:#22c35b;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.table td.is-danger,.table th.is-danger{background-color:#da0b00;border-color:#da0b00;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#4eb5de;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table th{color:#222}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#4eb5de;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag,.tags .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large),.tags.are-medium .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium),.tags.are-large .content kbd:not(.is-normal):not(.is-medium),.content .tags.are-large kbd:not(.is-normal):not(.is-medium),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child),.tags.is-right .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.tags.has-addons .tag:not(:last-child),.tags.has-addons .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:0.25rem;margin-right:-0.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:#363636}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#f5f5f5}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#209cee;color:#fff}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#22c35b;color:#fff}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ffdd57;color:rgba(0,0,0,0.7)}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#da0b00;color:#fff}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-0.375em;margin-right:0.1875em}.tag:not(body) .icon:last-child:not(:first-child),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:0.1875em;margin-right:-0.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-0.375em;margin-right:-0.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:290486px}a.tag:hover,.docstring>section>a.docs-sourcelink:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title+.highlight{margin-top:-0.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight pre{overflow:auto;max-width:100%}.number{align-items:center;background-color:#f5f5f5;border-radius:290486px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(54,54,54,0.3)}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(54,54,54,0.3)}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(54,54,54,0.3)}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(54,54,54,0.3)}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-webkit-input-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-ms-input-placeholder{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 1px 2px rgba(10,10,10,0.1);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#209cee}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#22c35b}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ffdd57}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#da0b00}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}.input.is-rounded,#documenter .docs-sidebar form.docs-search>input{border-radius:290486px;padding-left:1em;padding-right:1em}.input.is-static,#documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:0.625em;resize:vertical}.textarea:not([rows]){max-height:600px;min-height:120px}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#363636}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox{color:#6b6b6b;cursor:not-allowed}.radio+.radio{margin-left:0.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.25em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#2e63b8;right:1.125em;z-index:4}.select.is-rounded select,#documenter .docs-sidebar form.docs-search>input.select select{border-radius:290486px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after,.content kbd.select:not(:hover)::after{border-color:#363636}.select.is-dark select,.content kbd.select select{border-color:#363636}.select.is-dark select:hover,.content kbd.select select:hover,.select.is-dark select.is-hovered,.content kbd.select select.is-hovered{border-color:#292929}.select.is-dark select:focus,.content kbd.select select:focus,.select.is-dark select.is-focused,.content kbd.select select.is-focused,.select.is-dark select:active,.content kbd.select select:active,.select.is-dark select.is-active,.content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after,.docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#4eb5de}.select.is-primary select,.docstring>section>a.select.docs-sourcelink select{border-color:#4eb5de}.select.is-primary select:hover,.docstring>section>a.select.docs-sourcelink select:hover,.select.is-primary select.is-hovered,.docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#39acda}.select.is-primary select:focus,.docstring>section>a.select.docs-sourcelink select:focus,.select.is-primary select.is-focused,.docstring>section>a.select.docs-sourcelink select.is-focused,.select.is-primary select:active,.docstring>section>a.select.docs-sourcelink select:active,.select.is-primary select.is-active,.docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.select.is-link:not(:hover)::after{border-color:#2e63b8}.select.is-link select{border-color:#2e63b8}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#2958a4}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select.is-info:not(:hover)::after{border-color:#209cee}.select.is-info select{border-color:#209cee}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#1190e3}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.select.is-success:not(:hover)::after{border-color:#22c35b}.select.is-success select{border-color:#22c35b}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#1ead51}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd83e}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.select.is-danger:not(:hover)::after{border-color:#da0b00}.select.is-danger select{border-color:#da0b00}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#c10a00}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.select.is-small,#documenter .docs-sidebar form.docs-search>input.select{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:0.625em;top:0.625em;transform:none}.select.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:#363636}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:#363636}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:#363636}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:#363636}.file.is-dark .file-cta,.content kbd.file .file-cta{background-color:#363636;border-color:transparent;color:#f5f5f5}.file.is-dark:hover .file-cta,.content kbd.file:hover .file-cta,.file.is-dark.is-hovered .file-cta,.content kbd.file.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.file.is-dark:focus .file-cta,.content kbd.file:focus .file-cta,.file.is-dark.is-focused .file-cta,.content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#f5f5f5}.file.is-dark:active .file-cta,.content kbd.file:active .file-cta,.file.is-dark.is-active .file-cta,.content kbd.file.is-active .file-cta{background-color:#292929;border-color:transparent;color:#f5f5f5}.file.is-primary .file-cta,.docstring>section>a.file.docs-sourcelink .file-cta{background-color:#4eb5de;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.docstring>section>a.file.docs-sourcelink:hover .file-cta,.file.is-primary.is-hovered .file-cta,.docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#43b1dc;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.docstring>section>a.file.docs-sourcelink:focus .file-cta,.file.is-primary.is-focused .file-cta,.docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(78,181,222,0.25);color:#fff}.file.is-primary:active .file-cta,.docstring>section>a.file.docs-sourcelink:active .file-cta,.file.is-primary.is-active .file-cta,.docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#39acda;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#2e63b8;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#2b5eae;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(46,99,184,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#2958a4;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#209cee;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#1497ed;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(32,156,238,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#1190e3;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#22c35b;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#20b856;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(34,195,91,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#1ead51;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,221,87,0.25);color:rgba(0,0,0,0.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-danger .file-cta{background-color:#da0b00;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#cd0a00;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(218,11,0,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#c10a00;border-color:transparent;color:#fff}.file.is-small,#documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa,#documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:left;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:0.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small,#documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark,.content kbd.help{color:#363636}.help.is-primary,.docstring>section>a.help.docs-sourcelink{color:#4eb5de}.help.is-link{color:#2e63b8}.help.is-info{color:#209cee}.help.is-success{color:#22c35b}.help.is-warning{color:#ffdd57}.help.is-danger{color:#da0b00}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button.is-hovered:not([disabled]),.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,.field.has-addons .control .input.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,.field.has-addons .control .input.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,.field.has-addons .control .input.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,.field.has-addons .control .input.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,.field.has-addons .control .input.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:0.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small,#documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:0.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:left}.control.has-icons-left .input:focus~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#6b6b6b}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icons-left .input,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input,.control.has-icons-left .select select{padding-left:2.25em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input,.control.has-icons-right .select select{padding-right:2.25em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:0.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#2e63b8;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#222;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:0.5em}.breadcrumb .icon:last-child{margin-left:0.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small,#documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);color:#222;max-width:100%;position:relative}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:.75rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem}.card-image{display:block;position:relative}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #dbdbdb;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #dbdbdb}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:left;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#2e63b8;color:#fff}.dropdown-divider{background-color:#dbdbdb;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.list{background-color:#fff;border-radius:4px;box-shadow:0 2px 3px rgba(10,10,10,0.1),0 0 0 1px rgba(10,10,10,0.1)}.list-item{display:block;padding:0.5em 1em}.list-item:not(a){color:#222}.list-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-item:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.list-item:not(:last-child){border-bottom:1px solid #dbdbdb}.list-item.is-active{background-color:#2e63b8;color:#fff}a.list-item{background-color:#f5f5f5;cursor:pointer}.media{align-items:flex-start;display:flex;text-align:left}.media .content:not(:last-child){margin-bottom:0.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:0.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:0.5rem}.media .media .media{padding-top:0.5rem}.media .media .media+.media{margin-top:0.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:left}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small,#documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small,#documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:#363636}.message.is-light .message-body{border-color:#f5f5f5;color:#505050}.message.is-dark,.content kbd.message{background-color:#fafafa}.message.is-dark .message-header,.content kbd.message .message-header{background-color:#363636;color:#f5f5f5}.message.is-dark .message-body,.content kbd.message .message-body{border-color:#363636;color:#2a2a2a}.message.is-primary,.docstring>section>a.message.docs-sourcelink{background-color:#f6fbfd}.message.is-primary .message-header,.docstring>section>a.message.docs-sourcelink .message-header{background-color:#4eb5de;color:#fff}.message.is-primary .message-body,.docstring>section>a.message.docs-sourcelink .message-body{border-color:#4eb5de;color:#1f556a}.message.is-link{background-color:#f7f9fd}.message.is-link .message-header{background-color:#2e63b8;color:#fff}.message.is-link .message-body{border-color:#2e63b8;color:#264981}.message.is-info{background-color:#f6fbfe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#12537d}.message.is-success{background-color:#f6fdf9}.message.is-success .message-header{background-color:#22c35b;color:#fff}.message.is-success .message-body{border-color:#22c35b;color:#0f361d}.message.is-warning{background-color:#fffdf5}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#3c3108}.message.is-danger{background-color:#fff5f5}.message.is-danger .message-header{background-color:#da0b00;color:#fff}.message.is-danger .message-body{border-color:#da0b00;color:#9b0c04}.message-header{align-items:center;background-color:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:0.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px),print{.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#222;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:0.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:#363636}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:#363636}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-brand .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-burger{color:#363636}@media screen and (min-width: 1056px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:#363636}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:#363636}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:#363636}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#363636}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#f5f5f5}.navbar.is-dark .navbar-brand>.navbar-item,.content kbd.navbar .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link,.content kbd.navbar .navbar-brand .navbar-link{color:#f5f5f5}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.content kbd.navbar .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.content kbd.navbar .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.content kbd.navbar .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.content kbd.navbar .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.content kbd.navbar .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active,.content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#f5f5f5}@media screen and (min-width: 1056px){.navbar.is-dark .navbar-start>.navbar-item,.content kbd.navbar .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.content kbd.navbar .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.content kbd.navbar .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link,.content kbd.navbar .navbar-end .navbar-link{color:#f5f5f5}.navbar.is-dark .navbar-start>a.navbar-item:focus,.content kbd.navbar .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.content kbd.navbar .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.content kbd.navbar .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.content kbd.navbar .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.content kbd.navbar .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.content kbd.navbar .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.content kbd.navbar .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.content kbd.navbar .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.content kbd.navbar .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.content kbd.navbar .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.content kbd.navbar .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active,.content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-start .navbar-link::after,.content kbd.navbar .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after,.content kbd.navbar .navbar-end .navbar-link::after{border-color:#f5f5f5}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#f5f5f5}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#f5f5f5}}.navbar.is-primary,.docstring>section>a.navbar.docs-sourcelink{background-color:#4eb5de;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger,.docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-primary .navbar-start>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#4eb5de;color:#fff}}.navbar.is-link{background-color:#2e63b8;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#2e63b8;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#22c35b;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#22c35b;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,0.7)}}.navbar.is-danger{background-color:#da0b00;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#da0b00;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#2e63b8}.navbar-item{display:block;flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8;border-bottom-style:solid;border-bottom-width:3px;color:#2e63b8;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#2e63b8;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1056px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item{display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,.pagination.is-rounded .pagination-next,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:290486px}.pagination.is-rounded .pagination-link,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:290486px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#363636;min-width:2.25em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#3c5dcd}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#6b6b6b;opacity:0.5}.pagination-previous,.pagination-next{padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.pagination-link.is-current{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-heading,.panel-tabs,.panel-block{border-bottom:1px solid #dbdbdb;border-left:1px solid #dbdbdb;border-right:1px solid #dbdbdb}.panel-heading:first-child,.panel-tabs:first-child,.panel-block:first-child{border-top:1px solid #dbdbdb}.panel-heading{background-color:#f5f5f5;border-radius:4px 4px 0 0;color:#222;font-size:1.25em;font-weight:300;line-height:1.25;padding:0.5em 0.75em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:0.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#2e63b8;color:#363636}.panel-block.is-active .panel-icon{color:#2e63b8}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;margin-right:0.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#2e63b8;color:#2e63b8}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:0.5em}.tabs .icon:last-child{margin-left:0.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-radius:4px 0 0 4px}.tabs.is-toggle li:last-child a{border-radius:0 4px 4px 0}.tabs.is-toggle li.is-active a{background-color:#2e63b8;border-color:#2e63b8;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:290486px;border-top-left-radius:290486px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:290486px;border-top-right-radius:290486px;padding-right:1.25em}.tabs.is-small,#documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.3333333333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.3333333333%}.columns.is-mobile>.column.is-2{flex:none;width:16.6666666667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.6666666667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.3333333333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.3333333333%}.columns.is-mobile>.column.is-5{flex:none;width:41.6666666667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.6666666667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.3333333333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.3333333333%}.columns.is-mobile>.column.is-8{flex:none;width:66.6666666667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.6666666667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.3333333333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.3333333333%}.columns.is-mobile>.column.is-11{flex:none;width:91.6666666667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.6666666667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.3333333333%}.column.is-offset-1-mobile{margin-left:8.3333333333%}.column.is-2-mobile{flex:none;width:16.6666666667%}.column.is-offset-2-mobile{margin-left:16.6666666667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.3333333333%}.column.is-offset-4-mobile{margin-left:33.3333333333%}.column.is-5-mobile{flex:none;width:41.6666666667%}.column.is-offset-5-mobile{margin-left:41.6666666667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.3333333333%}.column.is-offset-7-mobile{margin-left:58.3333333333%}.column.is-8-mobile{flex:none;width:66.6666666667%}.column.is-offset-8-mobile{margin-left:66.6666666667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.3333333333%}.column.is-offset-10-mobile{margin-left:83.3333333333%}.column.is-11-mobile{flex:none;width:91.6666666667%}.column.is-offset-11-mobile{margin-left:91.6666666667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.3333333333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.3333333333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.6666666667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.6666666667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.3333333333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.3333333333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.6666666667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.6666666667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.3333333333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.3333333333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.6666666667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.6666666667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.3333333333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.3333333333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.6666666667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.6666666667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){.column.is-narrow-touch{flex:none}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.3333333333%}.column.is-offset-1-touch{margin-left:8.3333333333%}.column.is-2-touch{flex:none;width:16.6666666667%}.column.is-offset-2-touch{margin-left:16.6666666667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.3333333333%}.column.is-offset-4-touch{margin-left:33.3333333333%}.column.is-5-touch{flex:none;width:41.6666666667%}.column.is-offset-5-touch{margin-left:41.6666666667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.3333333333%}.column.is-offset-7-touch{margin-left:58.3333333333%}.column.is-8-touch{flex:none;width:66.6666666667%}.column.is-offset-8-touch{margin-left:66.6666666667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.3333333333%}.column.is-offset-10-touch{margin-left:83.3333333333%}.column.is-11-touch{flex:none;width:91.6666666667%}.column.is-offset-11-touch{margin-left:91.6666666667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){.column.is-narrow-desktop{flex:none}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.3333333333%}.column.is-offset-1-desktop{margin-left:8.3333333333%}.column.is-2-desktop{flex:none;width:16.6666666667%}.column.is-offset-2-desktop{margin-left:16.6666666667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.3333333333%}.column.is-offset-4-desktop{margin-left:33.3333333333%}.column.is-5-desktop{flex:none;width:41.6666666667%}.column.is-offset-5-desktop{margin-left:41.6666666667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.3333333333%}.column.is-offset-7-desktop{margin-left:58.3333333333%}.column.is-8-desktop{flex:none;width:66.6666666667%}.column.is-offset-8-desktop{margin-left:66.6666666667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.3333333333%}.column.is-offset-10-desktop{margin-left:83.3333333333%}.column.is-11-desktop{flex:none;width:91.6666666667%}.column.is-offset-11-desktop{margin-left:91.6666666667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.3333333333%}.column.is-offset-1-widescreen{margin-left:8.3333333333%}.column.is-2-widescreen{flex:none;width:16.6666666667%}.column.is-offset-2-widescreen{margin-left:16.6666666667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.3333333333%}.column.is-offset-4-widescreen{margin-left:33.3333333333%}.column.is-5-widescreen{flex:none;width:41.6666666667%}.column.is-offset-5-widescreen{margin-left:41.6666666667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.3333333333%}.column.is-offset-7-widescreen{margin-left:58.3333333333%}.column.is-8-widescreen{flex:none;width:66.6666666667%}.column.is-offset-8-widescreen{margin-left:66.6666666667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.3333333333%}.column.is-offset-10-widescreen{margin-left:83.3333333333%}.column.is-11-widescreen{flex:none;width:91.6666666667%}.column.is-offset-11-widescreen{margin-left:91.6666666667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.3333333333%}.column.is-offset-1-fullhd{margin-left:8.3333333333%}.column.is-2-fullhd{flex:none;width:16.6666666667%}.column.is-offset-2-fullhd{margin-left:16.6666666667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.3333333333%}.column.is-offset-4-fullhd{margin-left:33.3333333333%}.column.is-5-fullhd{flex:none;width:41.6666666667%}.column.is-offset-5-fullhd{margin-left:41.6666666667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.3333333333%}.column.is-offset-7-fullhd{margin-left:58.3333333333%}.column.is-8-fullhd{flex:none;width:66.6666666667%}.column.is-offset-8-fullhd{margin-left:66.6666666667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.3333333333%}.column.is-offset-10-fullhd{margin-left:83.3333333333%}.column.is-11-fullhd{flex:none;width:91.6666666667%}.column.is-offset-11-fullhd{margin-left:91.6666666667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable .column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.3333333333%}.tile.is-2{flex:none;width:16.6666666667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.3333333333%}.tile.is-5{flex:none;width:41.6666666667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.3333333333%}.tile.is-8{flex:none;width:66.6666666667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.3333333333%}.tile.is-11{flex:none;width:91.6666666667%}.tile.is-12{flex:none;width:100%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:#363636}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:#363636}.hero.is-light .subtitle{color:rgba(54,54,54,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:#363636}@media screen and (max-width: 1055px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(54,54,54,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:#363636}.hero.is-light .tabs a{color:#363636;opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:#363636}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#363636;border-color:#363636;color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#f5f5f5}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.content kbd.hero strong{color:inherit}.hero.is-dark .title,.content kbd.hero .title{color:#f5f5f5}.hero.is-dark .subtitle,.content kbd.hero .subtitle{color:rgba(245,245,245,0.9)}.hero.is-dark .subtitle a:not(.button),.content kbd.hero .subtitle a:not(.button),.hero.is-dark .subtitle strong,.content kbd.hero .subtitle strong{color:#f5f5f5}@media screen and (max-width: 1055px){.hero.is-dark .navbar-menu,.content kbd.hero .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.content kbd.hero .navbar-item,.hero.is-dark .navbar-link,.content kbd.hero .navbar-link{color:rgba(245,245,245,0.7)}.hero.is-dark a.navbar-item:hover,.content kbd.hero a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.content kbd.hero a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.content kbd.hero .navbar-link:hover,.hero.is-dark .navbar-link.is-active,.content kbd.hero .navbar-link.is-active{background-color:#292929;color:#f5f5f5}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#f5f5f5;opacity:0.9}.hero.is-dark .tabs a:hover,.content kbd.hero .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a,.content kbd.hero .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.content kbd.hero .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a,.content kbd.hero .tabs.is-toggle a{color:#f5f5f5}.hero.is-dark .tabs.is-boxed a:hover,.content kbd.hero .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.content kbd.hero .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.content kbd.hero .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.hero.is-dark.is-bold,.content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu,.content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary,.docstring>section>a.hero.docs-sourcelink{background-color:#4eb5de;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.docstring>section>a.hero.docs-sourcelink strong{color:inherit}.hero.is-primary .title,.docstring>section>a.hero.docs-sourcelink .title{color:#fff}.hero.is-primary .subtitle,.docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),.hero.is-primary .subtitle strong,.docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-primary .navbar-menu,.docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#4eb5de}}.hero.is-primary .navbar-item,.docstring>section>a.hero.docs-sourcelink .navbar-item,.hero.is-primary .navbar-link,.docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.docstring>section>a.hero.docs-sourcelink .navbar-link:hover,.hero.is-primary .navbar-link.is-active,.docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#39acda;color:#fff}.hero.is-primary .tabs a,.docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover,.docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4eb5de}.hero.is-primary.is-bold,.docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu,.docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}}.hero.is-link{background-color:#2e63b8;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-link .navbar-menu{background-color:#2e63b8}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#2958a4;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#2e63b8}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-info .navbar-menu{background-color:#209cee}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#1190e3;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}}.hero.is-success{background-color:#22c35b;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-success .navbar-menu{background-color:#22c35b}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#1ead51;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#22c35b}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,0.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}}.hero.is-danger{background-color:#da0b00;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-danger .navbar-menu{background-color:#da0b00}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#c10a00;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#da0b00}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}}.hero.is-small .hero-body,#documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding-bottom:1.5rem;padding-top:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}.section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}h1 .docs-heading-anchor,h1 .docs-heading-anchor:hover,h1 .docs-heading-anchor:visited,h2 .docs-heading-anchor,h2 .docs-heading-anchor:hover,h2 .docs-heading-anchor:visited,h3 .docs-heading-anchor,h3 .docs-heading-anchor:hover,h3 .docs-heading-anchor:visited,h4 .docs-heading-anchor,h4 .docs-heading-anchor:hover,h4 .docs-heading-anchor:visited,h5 .docs-heading-anchor,h5 .docs-heading-anchor:hover,h5 .docs-heading-anchor:visited,h6 .docs-heading-anchor,h6 .docs-heading-anchor:hover,h6 .docs-heading-anchor:visited{color:#222}h1 .docs-heading-anchor-permalink,h2 .docs-heading-anchor-permalink,h3 .docs-heading-anchor-permalink,h4 .docs-heading-anchor-permalink,h5 .docs-heading-anchor-permalink,h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}h1 .docs-heading-anchor-permalink::before,h2 .docs-heading-anchor-permalink::before,h3 .docs-heading-anchor-permalink::before,h4 .docs-heading-anchor-permalink::before,h5 .docs-heading-anchor-permalink::before,h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f0c1"}h1:hover .docs-heading-anchor-permalink,h2:hover .docs-heading-anchor-permalink,h3:hover .docs-heading-anchor-permalink,h4:hover .docs-heading-anchor-permalink,h5:hover .docs-heading-anchor-permalink,h6:hover .docs-heading-anchor-permalink{visibility:visible}.docs-dark-only{display:none !important}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 5 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.admonition{background-color:#b5b5b5;border-style:solid;border-width:1px;border-color:#363636;border-radius:4px;font-size:1rem}.admonition strong{color:currentColor}.admonition.is-small,#documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}.admonition.is-medium{font-size:1.25rem}.admonition.is-large{font-size:1.5rem}.admonition.is-default{background-color:#b5b5b5;border-color:#363636}.admonition.is-default>.admonition-header{background-color:#363636;color:#fff}.admonition.is-default>.admonition-body{color:#fff}.admonition.is-info{background-color:#def0fc;border-color:#209cee}.admonition.is-info>.admonition-header{background-color:#209cee;color:#fff}.admonition.is-info>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-success{background-color:#bdf4d1;border-color:#22c35b}.admonition.is-success>.admonition-header{background-color:#22c35b;color:#fff}.admonition.is-success>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-warning{background-color:#fff3c5;border-color:#ffdd57}.admonition.is-warning>.admonition-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.admonition.is-warning>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-danger{background-color:#ffaba7;border-color:#da0b00}.admonition.is-danger>.admonition-header{background-color:#da0b00;color:#fff}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#bdeff5;border-color:#1db5c9}.admonition.is-compat>.admonition-header{background-color:#1db5c9;color:#fff}.admonition.is-compat>.admonition-body{color:rgba(0,0,0,0.7)}.admonition-header{color:#fff;background-color:#363636;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 5 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #dbdbdb;box-shadow:2px 2px 3px rgba(10,10,10,0.1);max-width:100%}.docstring>header{display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#f5f5f5;box-shadow:0 1px 2px rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #dbdbdb}.docstring>header code{background-color:transparent}.docstring>header .docstring-binding{margin-right:0.3em}.docstring>header .docstring-category{margin-left:0.3em}.docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #dbdbdb}.docstring>section:last-child{border-bottom:none}.docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#ffaba7;color:rgba(0,0,0,0.7);border-bottom:3px solid #da0b00;padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.content pre{border:1px solid #dbdbdb}.content code{font-weight:inherit}.content a code{color:#2e63b8}.content h1 code,.content h2 code,.content h3 code,.content h4 code,.content h5 code,.content h6 code{color:#222}.content table{display:block;width:initial;max-width:100%;overflow-x:auto}.content blockquote>ul:first-child,.content blockquote>ol:first-child,.content .admonition-body>ul:first-child,.content .admonition-body>ol:first-child{margin-top:0}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){#documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){#documenter .docs-main{width:100%}#documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}#documenter .docs-main>header,#documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}#documenter .docs-main header.docs-navbar{background-color:#fff;border-bottom:1px solid #dbdbdb;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}#documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}#documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap}#documenter .docs-main header.docs-navbar .docs-right .docs-icon,#documenter .docs-main header.docs-navbar .docs-right .docs-label,#documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{display:inline-block}#documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}#documenter .docs-main header.docs-navbar .docs-right .docs-settings-button{margin:auto 0 auto 1rem}#documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button{font-size:1.5rem;margin:auto 0 auto 1rem}#documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}#documenter .docs-main section.footnotes{border-top:1px solid #dbdbdb}#documenter .docs-main section.footnotes li .tag:first-child,#documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,#documenter .docs-main section.footnotes li .content kbd:first-child,.content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}#documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #dbdbdb;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){#documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}#documenter .docs-main .docs-footer .docs-footer-nextpage,#documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}#documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}#documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #bbb}@media screen and (min-width: 1056px){#documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){#documenter .docs-sidebar{left:0;top:0}}#documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}#documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}#documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}#documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}#documenter .docs-sidebar .docs-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#documenter .docs-sidebar .docs-version-selector{border-top:1px solid #dbdbdb;display:none;padding:0.5rem}#documenter .docs-sidebar .docs-version-selector.visible{display:flex}#documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}#documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}#documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}#documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 5 Free";font-weight:900;content:"\f054"}#documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}#documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}#documenter .docs-sidebar ul.docs-menu .tocitem,#documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#0a0a0a;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}#documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}#documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}#documenter .docs-sidebar form.docs-search>input{width:14.4rem}@media screen and (min-width: 1056px){#documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#ccc}}@media screen and (max-width: 1055px){#documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ccc}}#documenter .docs-main #documenter-search-info{margin-bottom:1rem}#documenter .docs-main #documenter-search-results{list-style-type:circle;list-style-position:outside}#documenter .docs-main #documenter-search-results li{margin-left:2rem}#documenter .docs-main #documenter-search-results .docs-highlight{background-color:yellow}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{background:#F0F0F0;color:#444}.hljs-comment{color:#888888}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-operator,.hljs-selector-pseudo{color:#BC6060}.hljs-literal{color:#78A960}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#4d99bf}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/v3.3.0/assets/themeswap.js b/v3.3.0/assets/themeswap.js new file mode 100644 index 0000000000..c58e993e3e --- /dev/null +++ b/v3.3.0/assets/themeswap.js @@ -0,0 +1,66 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Intialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if(window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the browser supports user color preference + var darkPreference = false; + // Check if the users preference is for dark color scheme + if(window.matchMedia('(prefers-color-scheme: dark)').matches === true) { + darkPreference = true; + } + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; var disabled = []; var darkTheme = null; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if(themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null); + // Check if the theme is primary dark theme + var isDarkTheme = (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null); + // If ss is for dark theme then set the value of darkTheme to the name of the theme + if(isDarkTheme) darkTheme = themename; + // If we find a matching theme (and it's not the default), we'll set active to non-null + if(themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if(themename !== theme) disabled.push(ss); + } + if(active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + theme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + else if(darkTheme !== null && darkPreference === true) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + darkTheme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + if (ss.ownerNode.getAttribute("data-theme-name") !== darkTheme) { + ss.disabled = true; + } + }); + } +} +set_theme_from_local_storage(); diff --git a/v3.3.0/assets/warner.js b/v3.3.0/assets/warner.js new file mode 100644 index 0000000000..5531c8851b --- /dev/null +++ b/v3.3.0/assets/warner.js @@ -0,0 +1,49 @@ +function maybeAddWarning () { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return + }; + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return + }; + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return + }; + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement('meta'); + meta.name = 'robots'; + meta.content = 'noindex'; + + document.getElementsByTagName('head')[0].appendChild(meta); + }; + + const div = document.createElement('div'); + div.classList.add('outdated-warning-overlay'); + const closer = document.createElement('button'); + closer.classList.add('outdated-warning-closer', 'delete'); + closer.addEventListener('click', function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + '/../' + window.DOCUMENTER_STABLE; + div.innerHTML = 'This documentation is not for the latest stable release, but for either the development version or an older release.
    Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +}; + +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', maybeAddWarning); +} else { + maybeAddWarning(); +}; diff --git a/v3.3.0/code_base_developer_guide/adding_new_types/index.html b/v3.3.0/code_base_developer_guide/adding_new_types/index.html new file mode 100644 index 0000000000..c7e0c6e74d --- /dev/null +++ b/v3.3.0/code_base_developer_guide/adding_new_types/index.html @@ -0,0 +1,18 @@ + +Adding New Types · PowerSystems.jl

    Adding PowerSystems Types

    This page describes how developers should add types to PowerSystems.jl Refer to the managing components guide first.

    Auto-generating Structs

    Most PowerSystems.jl structs are auto-generated from the JSON descriptor file src/descriptors/power_system_structs.json. You can add your new struct here or write it manually when contributing code to the repository

    If all you need is the basic struct definition and getter/setter functions then you will likely find the auto-generation helpful.

    If you will need to write specialized functions for the type then you will probably want to write it manually.

    Refer to this link for more information.

    Testing the addition of new struct to the code base

    In order to merge new structs to the code base, your struct needs to pass several tests.

    1. addition to System
    2. retrieval from System
    3. serialization/de-serialization

    The following code block is an example of the code that the new struct needs to pass

    using PowerSystems
    +
    +sys = System(100.0)
    +device = NewType(data)
    +
    +# add your component to the system
    +add_component!(sys, device)
    +retrived_device = get_component(NewType, sys, "component_name")
    +
    +# Serialize
    +to_json(sys, "sys.json")
    +
    +# Re-create the system and find your component.
    +sys2 = System("sys.json")
    +serialized_device = get_component(NewType, sys, "component_name")
    +
    +@test get_name(retrieved_device) == get_name(serialized_device)
    diff --git a/v3.3.0/code_base_developer_guide/developer/index.html b/v3.3.0/code_base_developer_guide/developer/index.html new file mode 100644 index 0000000000..ed3b419c7b --- /dev/null +++ b/v3.3.0/code_base_developer_guide/developer/index.html @@ -0,0 +1,2 @@ + +Developer Guide · PowerSystems.jl
    diff --git a/v3.3.0/code_base_developer_guide/troubleshooting/index.html b/v3.3.0/code_base_developer_guide/troubleshooting/index.html new file mode 100644 index 0000000000..2f968263ed --- /dev/null +++ b/v3.3.0/code_base_developer_guide/troubleshooting/index.html @@ -0,0 +1,2 @@ + +Troubleshooting · PowerSystems.jl

    Troubleshooting code development

    Issues with Serialization/De-Serialization

    If this doesn't work then you likely need to implement custom InfrastructureSystems.serialize and InfrastructureSystems.deserialize methods for your type. Here are some examples of potential problems and solutions:

    Problem: Your struct contains a field defined as an abstract type. The deserialization process doesn't know what concrete type to construct.

    Solution: Encode the concrete type into the serialized dictionary as a string.

    Example: serialize and deserialize methods for DynamicBranch in src/models/dynamic_branch.jl.

    Problem: Similar to above in that a field is defined as an abstract type but the struct is parameterized on the actual concrete type.

    Solution: Use the fact that the concrete type is encoded into the serialized type of the struct and extract it in a customized deserialze method.

    Example: deserialize method for OuterControl in src/models/OuterControl.jl.

    diff --git a/v3.3.0/generate_input_config_table.jl b/v3.3.0/generate_input_config_table.jl new file mode 100644 index 0000000000..50f8b7a255 --- /dev/null +++ b/v3.3.0/generate_input_config_table.jl @@ -0,0 +1,69 @@ +@info "Generating Input Configuration Descriptor Table" +function create_md() + descriptor = PowerSystems._read_config_file(joinpath( + dirname(pathof(PowerSystems)), + "descriptors", + "power_system_inputs.json", + )) + + columns = [ + "name", + "description", + "unit", + "unit_system", + "base_reference", + "default_value", + "value_options", + "value_range", + ] + header = "| " * join(columns, " | ") * " |\n" * repeat("|----", length(columns)) * "|\n" + + s = "## [`PowerSystemTableData` Accepted CSV Columns](@id tabledata_input_config) \n\n" + s = string( + s, + "The following tables describe default CSV column definitions accepted by the ", + ) + s = string( + s, + "`PowerSystemeTableData` parser defined by `src/descriptors/power_system_inputs.json`:\n\n" + ) + for (cat, items) in descriptor + csv = "" + for name in PowerSystems.INPUT_CATEGORY_NAMES + if name[2] == cat + csv = name[1] + break + end + end + + csv == "" && continue + + s = string(s, "### $csv.csv:\n\n") + s = string(s, header) + for item in items + extra_cols = setdiff(keys(item), columns) + if !isempty(extra_cols) + # make sure that there arent unexpected entries + throw(@error "config file fields not included in header" extra_cols) + end + row = [] + for col in columns + val = string(get(item, col, " ")) + if col == "default_value" && val == " " + val = "*REQUIRED*" + end + push!(row, val) + end + s = string(s, "|" * join(row, "|") * "|\n") + end + s = string(s, "\n") + end + s = replace(s, r"[_$]" => s"\\\g<0>") + return s +end + +txt = create_md() + +open("/Users/cbarrows/Documents/repos/PowerSystems.jl/docs/src/modeler_guide/markdown.txt", "w") do f + write(f, txt) +end \ No newline at end of file diff --git a/v3.3.0/generate_validation_table.jl b/v3.3.0/generate_validation_table.jl new file mode 100644 index 0000000000..54b838926c --- /dev/null +++ b/v3.3.0/generate_validation_table.jl @@ -0,0 +1,35 @@ +@info "Generating Validation Table" +function generate_validation_table(filepath::AbstractString) + descriptor = InfrastructureSystems.read_validation_descriptor(joinpath(PSYPATH,"descriptors","power_system_structs.json")) + open(filepath, "w") do io + write(io, "# Data Requirements\n\n") + write(io, "| Struct Name | Field Name | DataType | Min | Max | Action |\n") + write(io, "|---------------|--------------|------------|-------|-------|----------|\n") + for item in descriptor + for field in item["fields"] + write(io, "|$(item["struct_name"])|$(field["name"])|$(field["data_type"])|") + if haskey(field, "valid_range") + if field["valid_range"] isa Dict + valid_min = field["valid_range"]["min"] + valid_max = field["valid_range"]["max"] + for value in (valid_min, valid_max) + write(io, isnothing(value) ? "null" : string(value)) + write(io, "|") + end + else + write(io, "$(field["valid_range"])|$(field["valid_range"])|") + end + else + write(io, "-|-") + end + if haskey(field, "validation_action") + write(io, "$(field["validation_action"])|\n") + else + write(io, "|-\n") + end + end + end + end +end + +generate_validation_table(joinpath(PSYPATH, "../docs/src/man/data_requirements_table.md")) diff --git a/v3.3.0/index.html b/v3.3.0/index.html new file mode 100644 index 0000000000..ea6da7ec32 --- /dev/null +++ b/v3.3.0/index.html @@ -0,0 +1,12 @@ + +Welcome Page · PowerSystems.jl

    PowerSystems.jl

    Overview

    PowerSystems.jl is a Julia package that provides a rigorous data model using Julia structures to enable power systems modeling. PowerSystems.jl is agnostic to a specific mathematical model and can be used for many model categories.

    PowerSystems.jl provides tools to prepare and process data useful for electric energy systems modeling. This package serves two purposes:

    1. It facilitates the development and open sharing of large data sets for Power Systems modeling
    2. It provides a data model that imposes discipline on model specification, addressing the challenge of design and terminology choices when sharing code and data.

    The main features include:

    • Comprehensive and extensible library of data structures for electric systems modeling.
    • Large scale data set development tools based on common text based data formats (PSS/e .raw and .dyr, and MATPOWER) and configurable tabular data (e.g. CSV) parsing capabilities.
    • Optimized container for component data and time series supporting serialization to portable file formats and configurable validation routines.

    PowerSystems.jl documentation and code are organized according to the needs of different users depending on their skillset and requirements. In broad terms there are three categories:

    • Modeler: Users that want to run a particular analysis or experiment and use PowerSystems.jl to develop data sets.

    • Model Developer: Users that want to develop custom components and structs in order to exploit PowerSystems.jl features to produce custom data sets.

    • Code Base Developers: Users that want to add new core functionalities or fix bugs in the core capabilities of PowerSystems.jl.

    PowerSystems.jl is an active project under development, and we welcome your feedback, suggestions, and bug reports.

    Note: PowerSystems.jl uses InfrastructureSystems.jl as a utility library. Several methods are re-exported from InfrastructureSystems.jl. For most users there is no need to import InfrastructureSystems.jl.

    Installation

    The latest stable release of PowerSystems can be installed using the Julia package manager with

    ] add PowerSystems

    For the current development version, "checkout" this package with

    ] add PowerSystems#main

    Citing PowerSystems.jl

    Paper describing PowerSystems.jl

    @article{LARA2021100747,
    +title = {PowerSystems.jl — A power system data management package for large scale modeling},
    +journal = {SoftwareX},
    +volume = {15},
    +pages = {100747},
    +year = {2021},
    +issn = {2352-7110},
    +doi = {https://doi.org/10.1016/j.softx.2021.100747},
    +url = {https://www.sciencedirect.com/science/article/pii/S2352711021000765},
    +author = {José Daniel Lara and Clayton Barrows and Daniel Thom and Dheepak Krishnamurthy and Duncan Callaway},
    +keywords = {Power Systems, Julia, Energy},

    PowerSystems has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).

    diff --git a/v3.3.0/model_developer_guide/adding_additional_fields/index.html b/v3.3.0/model_developer_guide/adding_additional_fields/index.html new file mode 100644 index 0000000000..9360cdf871 --- /dev/null +++ b/v3.3.0/model_developer_guide/adding_additional_fields/index.html @@ -0,0 +1,83 @@ + +Adding Additional Fields · PowerSystems.jl

    Adding additional fields

    All components currently implemented in PowerSystems.jl have an ext field that contains an empty Dictionary. This empty dictionary can be accessed with the method get_ext. shows an example of adding additional data to the ThermalStandard structs for other modeling requirements.

    This method is useful if there is no requirement to create new behaviours for components of a particular type but additional fields are required. A simple example is the addition of geographic information if needed.

    julia> using PowerSystems
    julia> const PSY = PowerSystemsPowerSystems
    julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"
    julia> system = System(joinpath(file_dir, "case5_re.m"))┌ Error: Matlab parser skipping line number 85 consisting of: +│ }; +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: extending matpower format with data: gen_name 7x4 +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 3 cost terms from generator 6: Float64[] +[ Info: removing 3 cost terms from generator 7: Float64[] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "nesta_case5_pjm" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 30 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ false │ false │ +│ RenewableDispatch │ 2 │ false │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘
    julia> for g in get_components(ThermalStandard, system) + external_field = get_ext(g) + external_field["my_data"] = 1.0 + end
    julia> gen_alta = get_component(ThermalStandard, system, "Alta")Alta (ThermalStandard): + name: Alta + available: true + status: true + bus: bus1 (ACBus) + active_power: 0.4 + reactive_power: 0.3 + rating: 0.5 + active_power_limits: (min = 0.0, max = 0.4) + reactive_power_limits: (min = -0.3, max = 0.3) + ramp_limits: (up = 0.0, down = 0.0) + operation_cost: ThreePartCost + base_power: 100.0 + time_limits: nothing + must_run: false + prime_mover_type: PrimeMovers.CT = 8 + fuel: ThermalFuels.NATURAL_GAS = 7 + services: 0-element Vector{Service} + time_at_status: 10000.0 + dynamic_injector: nothing + ext: Dict{String, Any}("my_data" => 1.0) + time_series_container: + InfrastructureSystems.SystemUnitsSettings: + base_value: 100.0 + unit_system: UnitSystem.SYSTEM_BASE = 0
    julia> my_data = get_ext(gen_alta)["my_data"]1.0
    diff --git a/v3.3.0/model_developer_guide/adding_custom_types/index.html b/v3.3.0/model_developer_guide/adding_custom_types/index.html new file mode 100644 index 0000000000..90984eded3 --- /dev/null +++ b/v3.3.0/model_developer_guide/adding_custom_types/index.html @@ -0,0 +1,23 @@ + +Adding Types · PowerSystems.jl

    Creating a custom Component

    Type Hierarchy

    All structs that correlate to power system components must be subtypes of the Component abstract type. Browse its type hierachy to choose an appropriate supertype for your new struct.

    Interfaces

    Refer to the managing components guide for component requirements.

    Note: get_internal, get_name, and get_time_series_container are imported into PowerSystems, so you should implement your methods as PowerSystems methods.

    Some abstract types define required interface functions in docstring. Be sure to implement each of them for your new type.

    Formalized documentation for each abstract type is TBD.

    Specialize an Existing Type

    There are scenarios where you may want to make a new type that is identical to an existing type except for one attribute or behavior, and don't want to duplicate the entire existing type and methods. In programming languages that support inheritance you would derive a new class from the existing class and automatically inherit its fields and methods. Julia doesn't support that. However, you can achieve a similar result with a forwarding macro. The basic idea is that you include the existing type within your struct and then use a macro to automatically forward specific methods to that instance.

    A few PowerSystems structs use the macro InfrastructureSystems.@forward to do this. Refer to the struct RoundRotorQuadratic for an example of how to use this.

    Custom Rules

    Some types require special checks before they can be added to or removed from a system. One example is the case where a component includes another component that is also stored in the system. We must ensure that the parent component does not contain a reference to another component that is not already attached to the system.

    Similarly, if the child object is removed from the system we must also remove the parent's reference to that child.

    The source file src/base.jl provides functions that you can implement for your new type to manage these scenarios.

    • check_component_addition(sys::System, component::Component; kwargs...)
    • handle_component_addition!(sys::System, component::Component; kwargs...)
    • check_component_removal(sys::System, component::Component; kwargs...)
    • handle_component_removal!(sys::System, component::Component; kwargs...)

    The functions add_component!() and remove_component!() call the check function before performing actions and then call the handle function afterwards. The default behavior of these functions is to do nothing. Implement versions that take your type in order to add your own checks or perform additional actions.

    Beware of the condition where a custom method is already implemented for a supertype of your type.

    Note that you can call the helper functions is_attached(component, system) and throw_if_not_attached(component, system).

    Custom Validation

    You can implement three methods to perform custom validation or correction for your type. PowerSystems calls all of these functions in add_component!.

    • sanitize_component!(component::Component, sys::System): intended to make standard data corrections (e.g. voltage angle in degrees -> radians)
    • validate_component(component::Component): intended to check component field values for internal consistency
    • validate_component_with_system(component::Component, sys::System): intended to check component field values for consistency with system

    Struct Requirements for Serialization of custom components

    One key feature of PowerSystems.jl is the serialization capabilities. Supporting serialization and de-serialization of custom components requires the implementation of several methods. The serialization code converts structs to dictionaries where the struct fields become dictionary keys.

    The code imposes these requirements:

    1. The InfrastructureSystems methods serialize and deserialize must be implemented for the struct. InfrastructureSystems implements a method that covers all subtypes of InfrastructureSystemsType. All PowerSystems components should be subtypes of PowerSystems.Component which is a subtype InfrastructureSystemsType, so any new structs should be covered as well.
    2. All struct fields must be able to be encoded in JSON format or be covered be covered by serialize and deserialize methods. Basic types, such as numbers and strings or arrays and dictionaries of numbers and strings, should just work. Complex containers with symbols may not.
    3. Structs relying on the default deserialize method must have a kwarg-only constructor. The deserialization code constructs objects by splatting the dictionary key/value pairs into the constructor.
    4. Structs that contain other PowerSystem components (like a generator contains a bus) must serialize those components as UUIDs instead of actual values. The deserialization code uses the UUIDs as a mechanism to restore a reference to the actual object rather a new object with identical values. It also significantly reduces the size of the JSON file.

    Refer to InfrastructureSystems.serialize_struct for example behavior. New structs that are not subtypes of InfrastructureSystemsType may be able to call it directly.

    Adding PowerSystems.jl as a dependency in a modeling package

    module MyModelingModule
    +
    +import PowerSystems
    +import InfrastructureSystems
    +const PSY = PowerSystems
    +const IS = InfrastructureSystems
    +
    +export MyDevice
    +export get_name
    +
    +mutable struct MyDevice <: PSY.Device
    +    name::String
    +    internal::IS.InfrastructureSystemsInternal
    +end
    +
    +function MyDevice(name::String)
    +    return MyDevice(name, IS.InfrastructureSystemsInternal())
    +end
    +
    +PSY.get_name(val::MyDevice) = val.name
    +
    +end

    Auto-Generating Custom Structs

    It is possible to use an advanced future to auto-generate structs in Julia source code files. It is not mandatory to use these tools, but it can be useful if you need to generate multiple custom structs for your model. Please refer to the docstrings for the functions generate_struct and generate_structs. Full details are in the InfrastructureSystems documentation at https://nrel-sienna.github.io/InfrastructureSystems.jl/stable/devguide/autogeneration/

    diff --git a/v3.3.0/model_developer_guide/extending_parsing/index.html b/v3.3.0/model_developer_guide/extending_parsing/index.html new file mode 100644 index 0000000000..dd39aa8cab --- /dev/null +++ b/v3.3.0/model_developer_guide/extending_parsing/index.html @@ -0,0 +1,6 @@ + +Extending Parsing · PowerSystems.jl

    Extending Parsing Capabilities

    Extending PowerSystemTableData parsing

    This page describes how developers should read columns from raw data files.

    The main point is that you should not read individual hard-coded column names from DataFrames. The parsing code includes mapping functionality that allows you to use PowerSystems-standard names while letting the users define their own custom names.

    Note: This assumes that you are familiar with the PowerSystems Table Data Parser.

    Procedure

    1. Add an entry to the array of parameters for your category in src/descriptors/power_system_inputs.json according to the following:

      1. Use snake_case for the name field.
      2. The fields name and description are required.
      3. Try to use a name that is generic and not specific to one dataset.
      4. It is recommended that you define unit.
      5. If PowerSystems expects the value to be per-unit then you must specify system_per_unit=true.
    2. PowerSystems has two commonly-used datasets with customized user config files: PowerSystemsTestData and RTS_GMLC. Update both of these files and submit pull requests.

    3. Parse the raw data like in this example:

    function demo_bus_csv_parser!(data::PowerSystemTableData)
    +    for bus in iterate_rows(data, BUS::InputCategory)
    +        @show bus.name, bus.max_active_power, bus.max_reactive_power
    +    end
    +end

    iterate_rows returns a NamedTuple where each name defined in src/descriptors/power_system_inputs.json is a field.

    Extending PSS/e Dynamic Parsing Capabilities

    UNDER CONSTRUCTION

    diff --git a/v3.3.0/model_library/dynamic_branch/index.html b/v3.3.0/model_library/dynamic_branch/index.html new file mode 100644 index 0000000000..58fa8c9d1d --- /dev/null +++ b/v3.3.0/model_library/dynamic_branch/index.html @@ -0,0 +1,50 @@ + +Dynamic Lines · PowerSystems.jl

    Dynamic Branch

    PowerSystems.DynamicBranchType

    Extends the branch type to add the information required for dynamic modeling of branches. Includes the fields for the states and the number of states

    Arguments

    • branch::ACBranch
    source
    PowerSystems.get_bMethod
    get_b(
    +    value::DynamicBranch
    +) -> @NamedTuple{from::Float64, to::Float64}
    +

    Get DynamicBranch b.

    source
    PowerSystems.set_angle_limits!Method
    set_angle_limits!(
    +    value::DynamicBranch,
    +    val::@NamedTuple{min::Float64, max::Float64}
    +) -> @NamedTuple{min::Float64, max::Float64}
    +

    Set DynamicBranch angle_limits.

    source
    diff --git a/v3.3.0/model_library/dynamic_generator/index.html b/v3.3.0/model_library/dynamic_generator/index.html new file mode 100644 index 0000000000..8c1a6dd472 --- /dev/null +++ b/v3.3.0/model_library/dynamic_generator/index.html @@ -0,0 +1,21 @@ + +Dynamic Generator · PowerSystems.jl

    DynamicGenerator

    PowerSystems.DynamicGeneratorType
    mutable struct DynamicGenerator{
    +    M <: Machine,
    +    S <: Shaft,
    +    A <: AVR,
    +    TG <: TurbineGov,
    +    P <: PSS,
    +} <: DynamicInjection
    +    name::String
    +    ω_ref::Float64
    +    machine::M
    +    shaft::S
    +    avr::A
    +    prime_mover::TG
    +    pss::P
    +    base_power::Float64
    +    n_states::Int
    +    states::Vector{Symbol}
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    A dynamic generator is composed by 5 components, namely a Machine, a Shaft, an Automatic Voltage Regulator (AVR), a Prime Mover (o Turbine Governor) and Power System Stabilizer (PSS). It requires a Static Injection device that is attached to it.

    Arguments

    • name::String: Name of generator.
    • ω_ref::Float64: Frequency reference set-point in pu.
    • machine <: Machine: Machine model for modeling the electro-magnetic phenomena.
    • shaft <: Shaft: Shaft model for modeling the electro-mechanical phenomena.
    • avr <: AVR: AVR model of the excitacion system.
    • prime_mover <: TurbineGov: Prime Mover and Turbine Governor model for mechanical power.
    • pss <: PSS: Power System Stabilizer model.
    • base_power::Float64: Base power
    • n_states::Int: Number of states (will depend on the components).
    • states::Vector{Symbol}: Vector of states (will depend on the components).
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/dynamic_inverter/index.html b/v3.3.0/model_library/dynamic_inverter/index.html new file mode 100644 index 0000000000..4c56df191c --- /dev/null +++ b/v3.3.0/model_library/dynamic_inverter/index.html @@ -0,0 +1,24 @@ + +Dynamic Inverter · PowerSystems.jl

    DynamicInverter

    PowerSystems.DynamicInverterType
    mutable struct DynamicInverter{
    +    C <: Converter,
    +    O <: OuterControl,
    +    IC <: InnerControl,
    +    DC <: DCSource,
    +    P <: FrequencyEstimator,
    +    F <: Filter,
    +} <: DynamicInjection
    +    name::String
    +    ω_ref::Float64
    +    converter::C
    +    outer_control::O
    +    inner_control::IC
    +    dc_source::DC
    +    freq_estimator::P
    +    filter::F
    +    limiter::Union{nothing, InverterLimiter}
    +    base_power::Float64
    +    n_states::Int
    +    states::Vector{Symbol}
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    A dynamic inverter is composed by 6 components, namely a Converter, an Outer Control, an Inner Control, a DC Source, a Frequency Estimator and a Filter. It requires a Static Injection device that is attached to it.

    Arguments

    • name::String: Name of inverter.
    • ω_ref::Float64: Frequency reference set-point in pu.
    • converter <: Converter: Converter model for the PWM transformation.
    • outer_control <: OuterControl: Outer-control controller model.
    • inner_control <: InnerControl: Inner-control controller model.
    • dc_source <: DCSource: DC Source model.
    • freq_estimator <: FrequencyEstimator: Frequency Estimator (typically a PLL) model.
    • filter <: Filter: Filter model.
    • limiter <: Union{nothing, InverterLimiter}: Inverter Inner Control Limiter model
    • base_power::Float64: Base power
    • n_states::Int: Number of states (will depend on the components).
    • states::Vector{Symbol}: Vector of states (will depend on the components).
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_ACBus/index.html b/v3.3.0/model_library/generated_ACBus/index.html new file mode 100644 index 0000000000..d71a7a0149 --- /dev/null +++ b/v3.3.0/model_library/generated_ACBus/index.html @@ -0,0 +1,35 @@ + +ACBus · PowerSystems.jl

    ACBus

    PowerSystems.ACBusType
    mutable struct ACBus <: Bus
    +    number::Int
    +    name::String
    +    bustype::Union{Nothing, ACBusTypes}
    +    angle::Union{Nothing, Float64}
    +    magnitude::Union{Nothing, Float64}
    +    voltage_limits::Union{Nothing, MinMax}
    +    base_voltage::Union{Nothing, Float64}
    +    area::Union{Nothing, Area}
    +    load_zone::Union{Nothing, LoadZone}
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    A power-system bus.

    Arguments

    • number::Int: number associated with the bus
    • name::String: the name of the bus
    • bustype::Union{Nothing, ACBusTypes}: bus type
    • angle::Union{Nothing, Float64}: angle of the bus in radians, validation range: (-1.571, 1.571), action if invalid: error
    • magnitude::Union{Nothing, Float64}: voltage as a multiple of basevoltage, validation range: voltage_limits, action if invalid: warn
    • voltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of basevoltage
    • base_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing), action if invalid: error
    • area::Union{Nothing, Area}: the area containing the bus
    • load_zone::Union{Nothing, LoadZone}: the load zone containing the bus
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_AGC/index.html b/v3.3.0/model_library/generated_AGC/index.html new file mode 100644 index 0000000000..f4af766e03 --- /dev/null +++ b/v3.3.0/model_library/generated_AGC/index.html @@ -0,0 +1,33 @@ + +AGC · PowerSystems.jl

    AGC

    PowerSystems.AGCType
    mutable struct AGC <: Service
    +    name::String
    +    available::Bool
    +    bias::Float64
    +    K_p::Float64
    +    K_i::Float64
    +    K_d::Float64
    +    delta_t::Float64
    +    area::Union{Nothing, Area}
    +    initial_ace::Float64
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bias::Float64
    • K_p::Float64: PID Proportional Constant
    • K_i::Float64: PID Integral Constant
    • K_d::Float64: PID Derrivative Constant
    • delta_t::Float64: PID Discretization period [Seconds]
    • area::Union{Nothing, Area}: the area controlled by the AGC
    • initial_ace::Float64: PID Discretization period [Seconds]
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_AVR/index.html b/v3.3.0/model_library/generated_AVR/index.html new file mode 100644 index 0000000000..e8a3eb720f --- /dev/null +++ b/v3.3.0/model_library/generated_AVR/index.html @@ -0,0 +1,1079 @@ + +AVR · PowerSystems.jl

    AVR

    AVRFixed

    PowerSystems.AVRFixedType
    mutable struct AVRFixed <: AVR
    +    Vf::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a AVR that returns a fixed voltage to the rotor winding

    Arguments

    • Vf::Float64: Fixed voltage field applied to the rotor winding, validation range: (0, nothing)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: Fixed AVR has no states
    • n_states::Int: Fixed AVR has no states
    • states_types::Vector{StateTypes}: Fixed AVR has no states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    AVRSimple

    PowerSystems.AVRSimpleType
    mutable struct AVRSimple <: AVR
    +    Kv::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a simple proportional AVR in the derivative of EMF i.e. an integrator controller on EMF

    Arguments

    • Kv::Float64: Proportional Gain, validation range: (0, nothing)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vf: field voltage
    • n_states::Int: Fixed AVR has 1 states
    • states_types::Vector{StateTypes}: Simple AVR has 1 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    AVRTypeI

    PowerSystems.AVRTypeIType
    mutable struct AVRTypeI <: AVR
    +    Ka::Float64
    +    Ke::Float64
    +    Kf::Float64
    +    Ta::Float64
    +    Te::Float64
    +    Tf::Float64
    +    Tr::Float64
    +    Va_lim::MinMax
    +    Ae::Float64
    +    Be::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of an Automatic Voltage Regulator Type I - Resembles IEEE Type DC1

    Arguments

    • Ka::Float64: Amplifier Gain, validation range: (0, nothing)
    • Ke::Float64: Field circuit integral deviation, validation range: (0, nothing)
    • Kf::Float64: Stabilizer Gain in s * pu/pu, validation range: (0, nothing)
    • Ta::Float64: Amplifier Time Constant in s, validation range: (0, nothing)
    • Te::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)
    • Tf::Float64: Stabilizer Time Constant in s, validation range: (0, nothing)
    • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)
    • Va_lim::MinMax: Limits for pi controler (Va_min, Va_max)
    • Ae::Float64: 1st ceiling coefficient, validation range: (0, nothing)
    • Be::Float64: 2nd ceiling coefficient, validation range: (0, nothing)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vf: Voltage field,
    +Vr1: Amplifier State,
    +Vr2: Stabilizing Feedback State,
    +Vm: Measured voltage
    • n_states::Int: The AVR Type I has 4 states
    • states_types::Vector{StateTypes}: AVR Type I has 4 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    AVRTypeII

    PowerSystems.AVRTypeIIType
    mutable struct AVRTypeII <: AVR
    +    K0::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    T4::Float64
    +    Te::Float64
    +    Tr::Float64
    +    Va_lim::MinMax
    +    Ae::Float64
    +    Be::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of an Automatic Voltage Regulator Type II - Typical static exciter model

    Arguments

    • K0::Float64: Regulator Gain, validation range: (0, nothing)
    • T1::Float64: First Pole in s, validation range: (0, nothing)
    • T2::Float64: First zero in s, validation range: (0, nothing)
    • T3::Float64: First Pole in s, validation range: (0, nothing)
    • T4::Float64: First zero in s, validation range: (0, nothing)
    • Te::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)
    • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)
    • Va_lim::MinMax: Limits for pi controler (Va_min, Va_max)
    • Ae::Float64: 1st ceiling coefficient, validation range: (0, nothing)
    • Be::Float64: 2nd ceiling coefficient, validation range: (0, nothing)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vf: Voltage field,
    +Vr1: First Lead-Lag state,
    +Vr2: Second lead-lag state,
    +Vm: Measured voltage
    • n_states::Int: AVR Type II has 4 states
    • states_types::Vector{StateTypes}: AVR Type II has 4 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ESAC1A

    PowerSystems.ESAC1AType
    mutable struct ESAC1A <: AVR
    +    Tr::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Va_lim::MinMax
    +    Te::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    Kc::Float64
    +    Kd::Float64
    +    Ke::Float64
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    Vr_lim::MinMax
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. This model corresponds to ESAC1A in PSSE and PSLF

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn
    • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn
    • Ka::Float64: Regulator output gain, validation range: (0, 1000), action if invalid: warn
    • Ta::Float64: Regulator output time constant in s, validation range: (0, 10)
    • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
    • Te::Float64: Exciter field time constant in s, validation range: (eps(), 2), action if invalid: error
    • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn
    • Tf::Float64: Rate feedback time constant, validation range: (eps(), 1.5), action if invalid: error
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn
    • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn
    • Ke::Float64: Exciter field proportional constant, validation range: (0, 1), action if invalid: warn
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • Vr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: Lead-lag state,
    +Vr2: Regulator output state,
    +Ve: Integrator output state,
    +Vr3: Feedback output state
    • n_states::Int: ESAC1A has 5 states
    • states_types::Vector{StateTypes}: ESAC1A has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ESAC6A

    PowerSystems.ESAC6AType
    mutable struct ESAC6A <: AVR
    +    Tr::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Tk::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Va_lim::MinMax
    +    Vr_lim::MinMax
    +    Te::Float64
    +    VFE_lim::Float64
    +    Kh::Float64
    +    VH_max::Float64
    +    Th::Float64
    +    Tj::Float64
    +    Kc::Float64
    +    Kd::Float64
    +    Ke::Float64
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Modified AC6A. Used to represent field-controlled alternator-rectifier excitation systems with system-supplied electronic voltage regulators. Parameters of IEEE Std 421.5 Type AC6A Excitacion System. ESAC6A in PSSE and PSLF.

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Ka::Float64: Regulator output gain, validation range: (0, 1000), action if invalid: warn
    • Ta::Float64: Regulator output lag time constant in s, validation range: (0, 10), action if invalid: warn
    • Tk::Float64: Voltage Regulator lead time constant, validation range: (0, 10), action if invalid: warn
    • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn
    • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn
    • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
    • Vr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)
    • Te::Float64: Exciter field time constant, validation range: (eps(), 2), action if invalid: error
    • VFE_lim::Float64: Exciter field current limiter reference, validation range: (-5, 20), action if invalid: warn
    • Kh::Float64: Exciter field current regulator feedback gain, validation range: (0, 100), action if invalid: warn
    • VH_max::Float64: Exciter field current limiter maximum output, validation range: (0, 100), action if invalid: warn
    • Th::Float64: Exciter field current limiter denominator (lag) time constant, validation range: (0, 1)
    • Tj::Float64: Exciter field current limiter numerator (lead) time constant, validation range: (0, 1), action if invalid: warn
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
    • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 2), action if invalid: warn
    • Ke::Float64: Exciter field proportional constant, validation range: (0, 2), action if invalid: warn
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: Lead-lag state,
    +Vr2: Regulator output state,
    +Ve: Integrator output state,
    +Vr3: Feedback output state
    • n_states::Int: ESAC6A has 5 states
    • states_types::Vector{StateTypes}: ESAC6A has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ESDC1A

    PowerSystems.ESDC1AType
    mutable struct ESDC1A <: AVR
    +    Tr::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Vr_lim::MinMax
    +    Ke::Float64
    +    Te::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    switch::Int
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Self-excited shunt fields with the voltage regulator operating in a mode commonly termed buck-boost. Parameters of IEEE Std 421.5 Type DC1A Excitacion System. This model corresponds to ESDC1A in PSSE and PSLF

    Arguments

    • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5), action if invalid: warn
    • Ka::Float64: Amplifier Gain, validation range: (10, 500), action if invalid: warn
    • Ta::Float64: Amplifier Time Constant in s, validation range: (0, 1), action if invalid: warn
    • Tb::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn
    • Tc::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn
    • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
    • Ke::Float64: Exciter constant related to self-excited field, validation range: (0, nothing)
    • Te::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1), action if invalid: error
    • Kf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3), action if invalid: error
    • Tf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing), action if invalid: error
    • switch::Int: Switch, validation range: (0, 1), action if invalid: error
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vt: Terminal Voltage,
    +Vr1: input lead lag,
    +Vr2: Regulator Output,
    +Vf: Exciter Output, 
    +Vr3: Rate feedback integrator
    • n_states::Int: The ESDC1A has 5 states
    • states_types::Vector{StateTypes}: ESDC1A has 5 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ESDC2A

    PowerSystems.ESDC2AType
    mutable struct ESDC2A <: AVR
    +    Tr::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Vr_lim::MinMax
    +    Ke::Float64
    +    Te::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    switch::Int
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Is used to represent field-controlled dc commutator exciters with continuously acting voltage regulators having power supplies derived from the generator or auxiliaries bus. Parameters of IEEE Std 421.5 Type DC2A Excitacion System. This model corresponds to ESDC2A in PSSE and PSLF

    Arguments

    • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5), action if invalid: warn
    • Ka::Float64: Amplifier Gain, validation range: (10, 500), action if invalid: warn
    • Ta::Float64: Amplifier Time Constant in s, validation range: (0, 1), action if invalid: warn
    • Tb::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn
    • Tc::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn
    • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
    • Ke::Float64: Exciter constant related to self-excited field, validation range: (-1, 1), action if invalid: warn
    • Te::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 2), action if invalid: error
    • Kf::Float64: Excitation control system stabilizer gain, validation range: (0, 0.3), action if invalid: warn
    • Tf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5.0 <= Tf/Kf <= 15.0, validation range: (eps(), 1.5), action if invalid: error
    • switch::Int: Switch, validation range: (0, 1), action if invalid: error
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vt: Terminal Voltage,
    +Vr1: input lead lag,
    +Vr2: Regulator Output,
    +Vf: Exciter Output, 
    +Vr3: Rate feedback integrator
    • n_states::Int: The ESDC2A has 5 states
    • states_types::Vector{StateTypes}: ESDC2A has 5 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ESST1A

    PowerSystems.ESST1AType
    mutable struct ESST1A <: AVR
    +    UEL_flags::Int
    +    PSS_flags::Int
    +    Tr::Float64
    +    Vi_lim::Tuple{Float64, Float64}
    +    Tc::Float64
    +    Tb::Float64
    +    Tc1::Float64
    +    Tb1::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Va_lim::MinMax
    +    Vr_lim::MinMax
    +    Kc::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    K_lr::Float64
    +    I_lr::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    This excitation system supplies power through a transformer from the generator terminals and its regulated by a controlled rectifier (via thyristors). Parameters of IEEE Std 421.5 Type ST1A Excitacion System. ESST1A in PSSE and PSLF

    Arguments

    • UEL_flags::Int: Code input for Underexcitization limiter (UEL) entry. Not supported., validation range: (1, 3), action if invalid: warn
    • PSS_flags::Int: Code input for Power System Stabilizer (PSS) or (VOS) entry., validation range: (1, 2)
    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.1), action if invalid: warn
    • Vi_lim::Tuple{Float64, Float64}: Voltage error limits (regulator input) (Vimin, Vimax)
    • Tc::Float64: First regulator denominator (lead) time constant in s, validation range: (0, 10), action if invalid: warn
    • Tb::Float64: First regulator denominator (lag) time constant in s, validation range: (0, 20)
    • Tc1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 10), action if invalid: warn
    • Tb1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 20), action if invalid: warn
    • Ka::Float64: Voltage regulator gain, validation range: (50, 1000), action if invalid: warn
    • Ta::Float64: Voltage regulator time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
    • Vr_lim::MinMax: Limits for exciter output (Vr_min, Vr_max)
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 0.3), action if invalid: warn
    • Kf::Float64: Rate feedback gain, validation range: (0, 0.3), action if invalid: warn
    • Tf::Float64: Rate feedback time constant in s, validation range: (eps(), 1.5), action if invalid: error
    • K_lr::Float64: Exciter output current limiter gain, validation range: (0, 5), action if invalid: warn
    • I_lr::Float64: Exciter output current limit reference, validation range: (0, 5), action if invalid: warn
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: First Lead-lag state,
    +Vr2: Second lead-lag state,
    +Va: Regulator output state,
    +Vr3: Feedback output state
    • n_states::Int: ST1A has 5 states
    • states_types::Vector{StateTypes}: ST1A has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ESST4B

    PowerSystems.ESST4BType
    mutable struct ESST4B <: AVR
    +    Tr::Float64
    +    K_pr::Float64
    +    K_ir::Float64
    +    Vr_lim::MinMax
    +    Ta::Float64
    +    K_pm::Float64
    +    K_im::Float64
    +    Vm_lim::MinMax
    +    Kg::Float64
    +    Kp::Float64
    +    Ki::Float64
    +    VB_max::Float64
    +    Kc::Float64
    +    Xl::Float64
    +    θp::Float64
    +    V_ref::Float64
    +    θp_rad::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    In these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST4B Excitacion System. ESST4B in PSSE and PSLF

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • K_pr::Float64: Regulator propotional gain, validation range: (0, 75), action if invalid: warn
    • K_ir::Float64: Regulator integral gain, validation range: (0, 75), action if invalid: warn
    • Vr_lim::MinMax: Voltage regulator limits (Vimin, Vimax)
    • Ta::Float64: Voltage regulator time constant in s, validation range: (0, 1), action if invalid: warn
    • K_pm::Float64: Voltage regulator proportional gain output, validation range: (0, 1.2), action if invalid: warn
    • K_im::Float64: Voltage regulator integral gain output, validation range: (0, 18), action if invalid: warn
    • Vm_lim::MinMax: Limits for inner loop output (Vm_min, Vm_max)
    • Kg::Float64: Feedback gain constant of the inner loop field regulator, validation range: (0, 1.1), action if invalid: warn
    • Kp::Float64: Potential circuit (voltage) gain coefficient, validation range: (0, 10), action if invalid: warn
    • Ki::Float64: Compound circuit (current) gain coefficient, validation range: (0, 1.1), action if invalid: warn
    • VB_max::Float64: Maximum available exciter voltage, validation range: (1, 20), action if invalid: warn
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn
    • Xl::Float64: Reactance associated with potential source, validation range: (0, 0.5), action if invalid: warn
    • θp::Float64: Potential circuit phase angle (degrees), validation range: (-90, 90), action if invalid: error
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • θp_rad::Float64: Potential circuit phase angle (radians)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vt: Sensed Terminal Voltage,
    +Vr1: Regulator Integrator,
    +Vr2: Regulator Output,
    +Vm: Output integrator
    • n_states::Int: ST4B has 4 states
    • states_types::Vector{StateTypes}: ST4B has 4 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    EXAC1

    PowerSystems.EXAC1Type
    mutable struct EXAC1 <: AVR
    +    Tr::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Vr_lim::MinMax
    +    Te::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    Kc::Float64
    +    Kd::Float64
    +    Ke::Float64
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Modified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A. EXAC1 in PSSE and PSLF

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn
    • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn
    • Ka::Float64: Regulator output gain, validation range: (0, 1000)
    • Ta::Float64: Regulator output time constant in s, validation range: (0, 10), action if invalid: warn
    • Vr_lim::MinMax: Limits for regulator output (Vr_min, Vr_max)
    • Te::Float64: Exciter field time constant in s, validation range: (eps(), 2), action if invalid: error
    • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn
    • Tf::Float64: Rate feedback time constant, validation range: (eps(), 1.5), action if invalid: error
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)
    • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn
    • Ke::Float64: Exciter field proportional constant, validation range: (0, 1), action if invalid: warn
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: Lead-lag state,
    +Vr2: Regulator output state,
    +Ve: Integrator output state,
    +Vr3: Feedback output state
    • n_states::Int: EXAC1 has 5 states
    • states_types::Vector{StateTypes}: EXAC1 has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    EXAC1A

    PowerSystems.EXAC1AType
    mutable struct EXAC1A <: AVR
    +    Tr::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Va_lim::MinMax
    +    Te::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    Kc::Float64
    +    Kd::Float64
    +    Ke::Float64
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    Vr_lim::MinMax
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Modified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. EXAC1A in PSSE and PSLF

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn
    • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn
    • Ka::Float64: Regulator output gain, validation range: (0, 1000), action if invalid: warn
    • Ta::Float64: Regulator output time constant in s, validation range: (0, 10)
    • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
    • Te::Float64: Exciter field time constant in s, validation range: (eps(), 2), action if invalid: error
    • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn
    • Tf::Float64: Rate feedback time constant, validation range: (eps(), 1.5), action if invalid: error
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn
    • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn
    • Ke::Float64: Exciter field proportional constant, validation range: (0, 1)
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • Vr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: Lead-lag state,
    +Vr2: Regulator output state,
    +Ve: Integrator output state,
    +Vr3: Feedback output state
    • n_states::Int: EXAC1A has 5 states
    • states_types::Vector{StateTypes}: EXAC1A has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    EXAC2

    PowerSystems.EXAC2Type
    mutable struct EXAC2 <: AVR
    +    Tr::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Va_lim::MinMax
    +    Kb::Float64
    +    Vr_lim::MinMax
    +    Te::Float64
    +    Kl::Float64
    +    Kh::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    Kc::Float64
    +    Kd::Float64
    +    Ke::Float64
    +    V_lr::Float64
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Modified AC2. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC2A Excitacion System. The alternator main exciter is used, feeding its output via non-controlled rectifiers. The Type AC2C model is similar to that of Type AC1C except for the inclusion of exciter time constant compensation and exciter field current limiting elements. EXAC2 in PSSE and PSLF.

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Tb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn
    • Tc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn
    • Ka::Float64: Regulator output gain, validation range: (0, 1000)
    • Ta::Float64: Regulator output time constant in s, validation range: (0, 10), action if invalid: warn
    • Va_lim::MinMax: Limits for regulator output (Va_min, Va_max)
    • Kb::Float64: Second Stage regulator gain, validation range: (eps(), 500), action if invalid: error
    • Vr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)
    • Te::Float64: Exciter field time constant, validation range: (eps(), 2), action if invalid: error
    • Kl::Float64: Exciter field current limiter gain, validation range: (0, 1.1), action if invalid: warn
    • Kh::Float64: Exciter field current regulator feedback gain, validation range: (0, 1.1), action if invalid: warn
    • Kf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn
    • Tf::Float64: Rate feedback time constant, validation range: (eps(), nothing), action if invalid: error
    • Kc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn
    • Kd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn
    • Ke::Float64: Exciter field proportional constant, validation range: (0, 1), action if invalid: warn
    • V_lr::Float64: Maximum exciter field current, validation range: (0, nothing), action if invalid: warn
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: Lead-lag state,
    +Vr2: Regulator output state,
    +Ve: Integrator output state,
    +Vr3: Feedback output state
    • n_states::Int: EXAC2 has 5 states
    • states_types::Vector{StateTypes}: EXAC2 has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    EXPIC1

    PowerSystems.EXPIC1Type
    mutable struct EXPIC1 <: AVR
    +    Tr::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Va_lim::MinMax
    +    Ta_2::Float64
    +    Ta_3::Float64
    +    Ta_4::Float64
    +    Vr_lim::MinMax
    +    Kf::Float64
    +    Tf_1::Float64
    +    Tf_2::Float64
    +    Efd_lim::MinMax
    +    Ke::Float64
    +    Te::Float64
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    Kp::Float64
    +    Ki::Float64
    +    Kc::Float64
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Generic Proportional/Integral Excitation System

    Arguments

    • Tr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn
    • Ka::Float64: Voltage regulator gain, validation range: (1, 500), action if invalid: warn
    • Ta::Float64: Voltage regulator time constant in s, validation range: (0, 10), action if invalid: warn
    • Va_lim::MinMax: Limits for pi controler (Vr_min, Vr_max)
    • Ta_2::Float64: Voltage regulator time constant in s, validation range: (0, nothing)
    • Ta_3::Float64: Voltage regulator time constant in s, validation range: (0, nothing), action if invalid: warn
    • Ta_4::Float64: Voltage regulator time constant in s, validation range: (0, nothing), action if invalid: warn
    • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
    • Kf::Float64: Rate feedback gain, validation range: (0, 0.3), action if invalid: warn
    • Tf_1::Float64: Rate Feedback time constant in s, validation range: (eps(), 15)
    • Tf_2::Float64: Rate Feedback time constant in s, validation range: (0, 5), action if invalid: warn
    • Efd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)
    • Ke::Float64: Exciter constant, validation range: (0, 1), action if invalid: warn
    • Te::Float64: Exciter time constant, validation range: (0, 2), action if invalid: warn
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • Kp::Float64: Potential source gain, validation range: (0, 5), action if invalid: warn
    • Ki::Float64: current source gain, validation range: (0, 1.1)
    • Kc::Float64: Exciter regulation factor, validation range: (0, 2), action if invalid: warn
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vm: Sensed terminal voltage,
    +Vr1: First Lead-lag state,
    +Vr2: Second regulator lead-lag state,
    +Vr2: Third regulator lead-lag state 
    +Vf: Exciter output 
    +Vr3: First feedback integrator,
    +Vr4: second feedback integrator
    • n_states::Int: EXPIC1 has 6 states
    • states_types::Vector{StateTypes}: EXPIC has 6 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    IEEET1

    PowerSystems.IEEET1Type
    mutable struct IEEET1 <: AVR
    +    Tr::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    Vr_lim::MinMax
    +    Ke::Float64
    +    Te::Float64
    +    Kf::Float64
    +    Tf::Float64
    +    switch::Int
    +    E_sat::Tuple{Float64, Float64}
    +    Se::Tuple{Float64, Float64}
    +    V_ref::Float64
    +    saturation_coeffs::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    1968 IEEE type 1 excitation system model

    Arguments

    • Tr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5), action if invalid: warn
    • Ka::Float64: Amplifier Gain, validation range: (10, 500), action if invalid: warn
    • Ta::Float64: Amplifier Time Constant in s, validation range: (0, 1), action if invalid: warn
    • Vr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)
    • Ke::Float64: Exciter constant related to self-excited field, validation range: (-1, 1)
    • Te::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1), action if invalid: error
    • Kf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3), action if invalid: warn
    • Tf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5 <= Tf/Kf <= 15, validation range: (eps(), nothing), action if invalid: error
    • switch::Int: Switch, validation range: (0, 1), action if invalid: error
    • E_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)
    • Se::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • saturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vt: Terminal Voltage,
    +Vr: Regulator Output,
    +Vf: Exciter Output, 
    +Vr3: Rate feedback integrator
    • n_states::Int: The IEEET1 has 4 states
    • states_types::Vector{StateTypes}: IEEET1 I has 4 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    EX4VSA

    EXST1

    SCRX

    PowerSystems.SCRXType
    mutable struct SCRX <: AVR
    +    Ta_Tb::Float64
    +    Tb::Float64
    +    K::Float64
    +    Te::Float64
    +    Efd_lim::MinMax
    +    switch::Int
    +    rc_rfd::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    This exciter is based on an IEEE type SCRX solid state exciter. The output field voltage is varied by a control system to maintain the system voltage at Vref. Please note that this exciter model has no initialization capabilities - this means that it will respond to whatever inputs it receives regardless of the state of the machine model.

    Arguments

    • Ta_Tb::Float64: Lead input constant ratio, validation range: (0.05, 0.3), action if invalid: error
    • Tb::Float64: Lag input constant in s, validation range: (5, 20), action if invalid: error
    • K::Float64: Regulator Gain, validation range: (20, 100), action if invalid: warn
    • Te::Float64: Regulator Time Constant, validation range: (0, 1), action if invalid: warn
    • Efd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)
    • switch::Int: Switch, validation range: (0, 1), action if invalid: error
    • rc_rfd::Float64: Field current capability. Set = 0 for negative current capability. Typical value 10, validation range: (0, 10), action if invalid: warn
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    Vr1: First integrator,
    +Vr2: Second integrator
    • n_states::Int: SCRX has 2 states
    • states_types::Vector{StateTypes}: SCRX has 2 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SEXS

    PowerSystems.SEXSType
    mutable struct SEXS <: AVR
    +    Ta_Tb::Float64
    +    Tb::Float64
    +    K::Float64
    +    Te::Float64
    +    V_lim::MinMax
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of Simplified Excitation System Model - SEXS in PSSE

    Arguments

    • Ta_Tb::Float64: Ratio of lead and lag time constants, validation range: (0, nothing)
    • Tb::Float64: Lag time constant, validation range: (eps(), nothing)
    • K::Float64: Gain, validation range: (0, nothing)
    • Te::Float64: Field circuit time constant in s, validation range: (0, nothing)
    • V_lim::MinMax: Field voltage limits
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are: Vf: Voltage field, Vr: Lead-lag state
    • n_states::Int: SEXS has 2 states
    • states_types::Vector{StateTypes}: SEXS has 2 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Arc/index.html b/v3.3.0/model_library/generated_Arc/index.html new file mode 100644 index 0000000000..c515c0f482 --- /dev/null +++ b/v3.3.0/model_library/generated_Arc/index.html @@ -0,0 +1,10 @@ + +Arc · PowerSystems.jl

    Arc

    PowerSystems.ArcType
    mutable struct Arc <: Topology
    +    from::Bus
    +    to::Bus
    +    internal::InfrastructureSystemsInternal
    +end

    A topological Arc.

    Arguments

    • from::Bus: The initial bus
    • to::Bus: The terminal bus
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Area/index.html b/v3.3.0/model_library/generated_Area/index.html new file mode 100644 index 0000000000..b3459b7791 --- /dev/null +++ b/v3.3.0/model_library/generated_Area/index.html @@ -0,0 +1,20 @@ + +Area · PowerSystems.jl

    Area

    PowerSystems.AreaType
    mutable struct Area <: AggregationTopology
    +    name::String
    +    peak_active_power::Float64
    +    peak_reactive_power::Float64
    +    load_response::Float64
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    A collection of buses for control purposes.

    Arguments

    • name::String
    • peak_active_power::Float64
    • peak_reactive_power::Float64
    • load_response::Float64
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_BatteryEMS/index.html b/v3.3.0/model_library/generated_BatteryEMS/index.html new file mode 100644 index 0000000000..6a87ce2568 --- /dev/null +++ b/v3.3.0/model_library/generated_BatteryEMS/index.html @@ -0,0 +1,87 @@ + +BatteryEMS · PowerSystems.jl

    BatteryEMS

    PowerSystems.BatteryEMSType
    mutable struct BatteryEMS <: Storage
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    prime_mover_type::PrimeMovers
    +    initial_energy::Float64
    +    state_of_charge_limits::MinMax
    +    rating::Float64
    +    active_power::Float64
    +    input_active_power_limits::MinMax
    +    output_active_power_limits::MinMax
    +    efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}
    +    reactive_power::Float64
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    base_power::Float64
    +    operation_cost::StorageManagementCost
    +    storage_target::Float64
    +    cycle_limits::Int
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data structure for a battery compatible with energy management formulations.

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • initial_energy::Float64: State of Charge of the Battery p.u.-hr, validation range: (0, nothing), action if invalid: error
    • state_of_charge_limits::MinMax: Maximum and Minimum storage capacity in p.u.-hr, validation range: (0, nothing), action if invalid: error
    • rating::Float64
    • active_power::Float64
    • input_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error
    • output_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error
    • efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}, validation range: (0, 1), action if invalid: warn
    • reactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn
    • reactive_power_limits::Union{Nothing, MinMax}
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • operation_cost::StorageManagementCost
    • storage_target::Float64: Storage target at the end of simulation as ratio of storage capacity.
    • cycle_limits::Int: Storage Maximum number of cycles per year
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Converter/index.html b/v3.3.0/model_library/generated_Converter/index.html new file mode 100644 index 0000000000..e345d23fe8 --- /dev/null +++ b/v3.3.0/model_library/generated_Converter/index.html @@ -0,0 +1,237 @@ + +Converter · PowerSystems.jl

    Converter

    AverageConverter

    PowerSystems.AverageConverterType
    mutable struct AverageConverter <: Converter
    +    rated_voltage::Float64
    +    rated_current::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of an average converter model

    Arguments

    • rated_voltage::Float64: rated voltage, validation range: (0, nothing)
    • rated_current::Float64: rated VA, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}
    • n_states::Int: AverageConverter has no states
    source

    RenewableEnergyConverterTypeA

    PowerSystems.RenewableEnergyConverterTypeAType
    mutable struct RenewableEnergyConverterTypeA <: Converter
    +    T_g::Float64
    +    Rrpwr::Float64
    +    Brkpt::Float64
    +    Zerox::Float64
    +    Lvpl1::Float64
    +    Vo_lim::Float64
    +    Lv_pnts::MinMax
    +    Io_lim::Float64
    +    T_fltr::Float64
    +    K_hv::Float64
    +    Iqr_lims::MinMax
    +    Accel::Float64
    +    Lvpl_sw::Int
    +    Q_ref::Float64
    +    R_source::Float64
    +    X_source::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE

    Arguments

    • T_g::Float64: Converter time constant (s), validation range: (0, nothing)
    • Rrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)
    • Brkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)
    • Zerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)
    • Lvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)
    • Vo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)
    • Lv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)
    • Io_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)
    • T_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)
    • K_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)
    • Iqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)
    • Accel::Float64: Acceleration factor, validation range: (0, 1)
    • Lvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)
    • Q_ref::Float64: Initial machine reactive power from power flow, validation range: (0, nothing)
    • R_source::Float64: Output resistor used for the Thevenin Equivalent, validation range: (0, nothing)
    • X_source::Float64: Output resistor used for the Thevenin Equivalent, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are: Ip: Converter lag for Ipcmd, Iq: Converter lag for Iqcmd, Vmeas: Voltage filter for low voltage active current management
    • n_states::Int: RenewableEnergyConverterTypeA has 3 states
    source

    RenewableEnergyVoltageConverterTypeA

    PowerSystems.RenewableEnergyVoltageConverterTypeAType
    mutable struct RenewableEnergyVoltageConverterTypeA <: Converter
    +    T_g::Float64
    +    Rrpwr::Float64
    +    Brkpt::Float64
    +    Zerox::Float64
    +    Lvpl1::Float64
    +    Vo_lim::Float64
    +    Lv_pnts::MinMax
    +    Io_lim::Float64
    +    T_fltr::Float64
    +    K_hv::Float64
    +    Iqr_lims::MinMax
    +    Accel::Float64
    +    Lvpl_sw::Int
    +    Q_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE, but to be interfaced using a Voltage Source instead of a Current Source.

    Arguments

    • T_g::Float64: Converter time constant (s), validation range: (0, nothing)
    • Rrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)
    • Brkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)
    • Zerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)
    • Lvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)
    • Vo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)
    • Lv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)
    • Io_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)
    • T_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)
    • K_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)
    • Iqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)
    • Accel::Float64: Acceleration factor, validation range: (0, 1)
    • Lvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)
    • Q_ref::Float64: Initial machine reactive power from power flow, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are: Ip: Converter lag for Ipcmd, Iq: Converter lag for Iqcmd, Vmeas: Voltage filter for low voltage active current management
    • n_states::Int: RenewableEnergyVoltageConverterTypeA has 3 states
    source
    diff --git a/v3.3.0/model_library/generated_DCBus/index.html b/v3.3.0/model_library/generated_DCBus/index.html new file mode 100644 index 0000000000..16bf44634b --- /dev/null +++ b/v3.3.0/model_library/generated_DCBus/index.html @@ -0,0 +1,29 @@ + +DCBus · PowerSystems.jl

    DCBus

    PowerSystems.DCBusType
    mutable struct DCBus <: Bus
    +    number::Int
    +    name::String
    +    magnitude::Union{Nothing, Float64}
    +    voltage_limits::Union{Nothing, MinMax}
    +    base_voltage::Union{Nothing, Float64}
    +    area::Union{Nothing, Area}
    +    load_zone::Union{Nothing, LoadZone}
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    A power-system DC bus.

    Arguments

    • number::Int: number associated with the DC bus
    • name::String: the name of the DC bus
    • magnitude::Union{Nothing, Float64}: voltage as a multiple of basevoltage, validation range: voltage_limits, action if invalid: warn
    • voltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of basevoltage
    • base_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing), action if invalid: error
    • area::Union{Nothing, Area}: the area containing the DC bus
    • load_zone::Union{Nothing, LoadZone}: the load zone containing the DC bus
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_DCSource/index.html b/v3.3.0/model_library/generated_DCSource/index.html new file mode 100644 index 0000000000..0484824a97 --- /dev/null +++ b/v3.3.0/model_library/generated_DCSource/index.html @@ -0,0 +1,61 @@ + +DCSource · PowerSystems.jl

    DCSource

    FixedDCSource

    PowerSystems.FixedDCSourceType
    mutable struct FixedDCSource <: DCSource
    +    voltage::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a Fixed DC Source that returns a fixed DC voltage

    Arguments

    • voltage::Float64: rated VA, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}
    • n_states::Int: FixedDCSource has no states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    ZeroOrderBESS

    PowerSystems.ZeroOrderBESSType
    mutable struct ZeroOrderBESS <: DCSource
    +    rated_voltage::Float64
    +    rated_current::Float64
    +    battery_voltage::Float64
    +    battery_resistance::Float64
    +    dc_dc_inductor::Float64
    +    dc_link_capacitance::Float64
    +    fs::Float64
    +    kpv::Float64
    +    kiv::Float64
    +    kpi::Float64
    +    kii::Float64
    +    Vdc_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters for the DC-side with a Battery Energy Storage System from paper at https://arxiv.org/abs/2007.11776

    Arguments

    • rated_voltage::Float64: rated voltage, validation range: (0, nothing)
    • rated_current::Float64: rated current, validation range: (0, nothing)
    • battery_voltage::Float64: battery voltage, validation range: (0, nothing)
    • battery_resistance::Float64: battery_resistance, validation range: (0, nothing)
    • dc_dc_inductor::Float64: DC/DC inductance, validation range: (0, nothing)
    • dc_link_capacitance::Float64: DC-link capacitor, validation range: (0, nothing)
    • fs::Float64: DC/DC converter switching frequency, validation range: (0, nothing)
    • kpv::Float64: voltage controller proportional gain, validation range: (0, nothing)
    • kiv::Float64: voltage controller integral gain, validation range: (0, nothing)
    • kpi::Float64: current controller proportional gain, validation range: (0, nothing)
    • kii::Float64: current controller integral gain, validation range: (0, nothing)
    • Vdc_ref::Float64: Reference DC-Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the ZeroOrderBESS model are:
    v_dc: DC-link votlage,
    +i_b: Battery current,
    + ν: integrator state of the voltage controller,
    + ζ: integrator state of the PI current controller
    • n_states::Int: ZeroOrderBESS has 4 states
    source
    diff --git a/v3.3.0/model_library/generated_ExponentialLoad/index.html b/v3.3.0/model_library/generated_ExponentialLoad/index.html new file mode 100644 index 0000000000..64ebbbafde --- /dev/null +++ b/v3.3.0/model_library/generated_ExponentialLoad/index.html @@ -0,0 +1,78 @@ + +ExponentialLoad · PowerSystems.jl

    ExponentialLoad

    diff --git a/v3.3.0/model_library/generated_Filter/index.html b/v3.3.0/model_library/generated_Filter/index.html new file mode 100644 index 0000000000..f2a0c0aa07 --- /dev/null +++ b/v3.3.0/model_library/generated_Filter/index.html @@ -0,0 +1,62 @@ + +Filter · PowerSystems.jl

    Filter

    LCFilter

    PowerSystems.LCFilterType
    mutable struct LCFilter <: Filter
    +    lf::Float64
    +    rf::Float64
    +    cf::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a LCL filter outside the converter

    Arguments

    • lf::Float64: filter inductance, validation range: (0, nothing)
    • rf::Float64: filter resistance, validation range: (0, nothing)
    • cf::Float64: filter capacitance, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the LCFilter model are:
    ir_filter: Real current out of the filter,
    +ii_filter: Imaginary current out of the filter
    • n_states::Int: LCFilter has two states
    source

    LCLFilter

    PowerSystems.LCLFilterType
    mutable struct LCLFilter <: Filter
    +    lf::Float64
    +    rf::Float64
    +    cf::Float64
    +    lg::Float64
    +    rg::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a LCL filter outside the converter, the states are in the grid's reference frame

    Arguments

    • lf::Float64: Series inductance in p.u. of converter filter, validation range: (0, nothing)
    • rf::Float64: Series resistance in p.u. of converter filter, validation range: (0, nothing)
    • cf::Float64: Shunt capacitance in p.u. of converter filter, validation range: (0, nothing)
    • lg::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)
    • rg::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the LCLFilter model are:
    ir_cnv: Real current out of the converter,
    +ii_cnv: Imaginary current out of the converter,
    +vr_filter: Real voltage at the filter's capacitor,
    +vi_filter: Imaginary voltage at the filter's capacitor,
    +ir_filter: Real current out of the filter,
    +ii_filter: Imaginary current out of the filter
    • n_states::Int: LCLFilter has 6 states
    source

    RLFilter

    PowerSystems.RLFilterType
    mutable struct RLFilter <: Filter
    +    rf::Float64
    +    lf::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of RL series filter in algebraic representation

    Arguments

    • rf::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)
    • lf::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: RLFilter has zero states
    • n_states::Int: RLFilter has zero states
    source
    diff --git a/v3.3.0/model_library/generated_FixedAdmittance/index.html b/v3.3.0/model_library/generated_FixedAdmittance/index.html new file mode 100644 index 0000000000..70af4bdf04 --- /dev/null +++ b/v3.3.0/model_library/generated_FixedAdmittance/index.html @@ -0,0 +1,33 @@ + +FixedAdmittance · PowerSystems.jl

    FixedAdmittance

    PowerSystems.FixedAdmittanceType
    mutable struct FixedAdmittance <: ElectricLoad
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    Y::Complex{Float64}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • Y::Complex{Float64}: System per-unit value
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection model for admittance
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_FrequencyEstimator/index.html b/v3.3.0/model_library/generated_FrequencyEstimator/index.html new file mode 100644 index 0000000000..5cff66fe32 --- /dev/null +++ b/v3.3.0/model_library/generated_FrequencyEstimator/index.html @@ -0,0 +1,52 @@ + +FrequencyEstimator · PowerSystems.jl

    FrequencyEstimator

    FixedFrequency

    PowerSystems.FixedFrequencyType
    mutable struct FixedFrequency <: FrequencyEstimator
    +    frequency::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a Fixed Frequency Estimator (i.e. no PLL).

    Arguments

    • frequency::Float64: Reference used
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: FixedFrequency has no states
    • n_states::Int: FixedFrequency has no states
    source

    KauraPLL

    PowerSystems.KauraPLLType
    mutable struct KauraPLL <: FrequencyEstimator
    +    ω_lp::Float64
    +    kp_pll::Float64
    +    ki_pll::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a Phase-Locked Loop (PLL) based on Kaura, Vikram, and Vladimir Blasko. "Operation of a phase locked loop system under distorted utility conditions." IEEE Transactions on Industry applications 33.1 (1997): 58-63.

    Arguments

    • ω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)
    • kp_pll::Float64: PLL proportional gain, validation range: (0, nothing)
    • ki_pll::Float64: PLL integral gain, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the KauraPLL model are:
    vd_pll: d-axis of the measured voltage in the PLL synchronous reference frame (SRF),
    +vq_pll: q-axis of the measured voltage in the PLL SRF,
    +ε_pll: Integrator state of the PI controller,
    +θ_pll: Phase angle displacement in the PLL SRF
    • n_states::Int: KauraPLL has 4 states
    source

    ReducedOrderPLL

    PowerSystems.ReducedOrderPLLType
    mutable struct ReducedOrderPLL <: FrequencyEstimator
    +    ω_lp::Float64
    +    kp_pll::Float64
    +    ki_pll::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a Phase-Locked Loop (PLL) based on Purba, Dhople, Jafarpour, Bullo and Johnson. "Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters." 2017 IEEE 18th Workshop on Control and Modeling for Power Electronics (COMPEL): 1-7.

    Arguments

    • ω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)
    • kp_pll::Float64: PLL proportional gain, validation range: (0, nothing)
    • ki_pll::Float64: PLL integral gain, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the ReducedOrderPLL model are:
    vq_pll: q-axis of the measured voltage in the PLL synchronous reference frame (SRF),
    +ε_pll: Integrator state of the PI controller,
    +θ_pll: Phase angle displacement in the PLL SRF
    • n_states::Int: ReducedOrderPLL has 3 states
    source
    diff --git a/v3.3.0/model_library/generated_GenericBattery/index.html b/v3.3.0/model_library/generated_GenericBattery/index.html new file mode 100644 index 0000000000..e03bbb0ef6 --- /dev/null +++ b/v3.3.0/model_library/generated_GenericBattery/index.html @@ -0,0 +1,90 @@ + +GenericBattery · PowerSystems.jl

    GenericBattery

    PowerSystems.GenericBatteryType
    mutable struct GenericBattery <: Storage
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    prime_mover_type::PrimeMovers
    +    initial_energy::Float64
    +    state_of_charge_limits::MinMax
    +    rating::Float64
    +    active_power::Float64
    +    input_active_power_limits::MinMax
    +    output_active_power_limits::MinMax
    +    efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}
    +    reactive_power::Float64
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    base_power::Float64
    +    operation_cost::Union{StorageManagementCost, MarketBidCost}
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data structure for a generic battery

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • initial_energy::Float64: State of Charge of the Battery p.u.-hr, validation range: (0, nothing), action if invalid: error
    • state_of_charge_limits::MinMax: Maximum and Minimum storage capacity in p.u.-hr, validation range: (0, nothing), action if invalid: error
    • rating::Float64
    • active_power::Float64
    • input_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error
    • output_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error
    • efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}, validation range: (0, 1), action if invalid: warn
    • reactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn
    • reactive_power_limits::Union{Nothing, MinMax}
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • operation_cost::Union{StorageManagementCost, MarketBidCost}
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_HybridSystem/index.html b/v3.3.0/model_library/generated_HybridSystem/index.html new file mode 100644 index 0000000000..dc3a0245ac --- /dev/null +++ b/v3.3.0/model_library/generated_HybridSystem/index.html @@ -0,0 +1,2 @@ + +HybridSystem · PowerSystems.jl
    diff --git a/v3.3.0/model_library/generated_HydroDispatch/index.html b/v3.3.0/model_library/generated_HydroDispatch/index.html new file mode 100644 index 0000000000..079b2e7d10 --- /dev/null +++ b/v3.3.0/model_library/generated_HydroDispatch/index.html @@ -0,0 +1,67 @@ + +HydroDispatch · PowerSystems.jl

    HydroDispatch

    PowerSystems.HydroDispatchType
    mutable struct HydroDispatch <: HydroGen
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    prime_mover_type::PrimeMovers
    +    active_power_limits::MinMax
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    ramp_limits::Union{Nothing, UpDown}
    +    time_limits::Union{Nothing, UpDown}
    +    base_power::Float64
    +    operation_cost::OperationalCost
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • active_power_limits::MinMax, validation range: (0, nothing), action if invalid: warn
    • reactive_power_limits::Union{Nothing, MinMax}, action if invalid: warn
    • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error
    • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • operation_cost::OperationalCost: Operation Cost of Generation OperationalCost
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_HydroEnergyReservoir/index.html b/v3.3.0/model_library/generated_HydroEnergyReservoir/index.html new file mode 100644 index 0000000000..1bd03d04f1 --- /dev/null +++ b/v3.3.0/model_library/generated_HydroEnergyReservoir/index.html @@ -0,0 +1,110 @@ + +HydroEnergyReservoir · PowerSystems.jl

    HydroEnergyReservoir

    PowerSystems.HydroEnergyReservoirType
    mutable struct HydroEnergyReservoir <: HydroGen
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    prime_mover_type::PrimeMovers
    +    active_power_limits::MinMax
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    ramp_limits::Union{Nothing, UpDown}
    +    time_limits::Union{Nothing, UpDown}
    +    base_power::Float64
    +    storage_capacity::Float64
    +    inflow::Float64
    +    initial_storage::Float64
    +    operation_cost::OperationalCost
    +    storage_target::Float64
    +    conversion_factor::Float64
    +    time_at_status::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • active_power_limits::MinMax
    • reactive_power_limits::Union{Nothing, MinMax}, action if invalid: warn
    • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error
    • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • storage_capacity::Float64: Maximum storage capacity in the reservoir (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error
    • inflow::Float64: Baseline inflow into the reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing), action if invalid: error
    • initial_storage::Float64: Initial storage capacity in the reservoir (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error
    • operation_cost::OperationalCost: Operation Cost of Generation OperationalCost
    • storage_target::Float64: Storage target at the end of simulation as ratio of storage capacity.
    • conversion_factor::Float64: Conversion factor from flow/volume to energy: m^3 -> p.u-hr.
    • time_at_status::Float64
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_HydroPumpedStorage/index.html b/v3.3.0/model_library/generated_HydroPumpedStorage/index.html new file mode 100644 index 0000000000..cabffcccfe --- /dev/null +++ b/v3.3.0/model_library/generated_HydroPumpedStorage/index.html @@ -0,0 +1,140 @@ + +HydroPumpedStorage · PowerSystems.jl

    HydroPumpedStorage

    PowerSystems.HydroPumpedStorageType
    mutable struct HydroPumpedStorage <: HydroGen
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    base_power::Float64
    +    prime_mover_type::PrimeMovers
    +    active_power_limits::MinMax
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    ramp_limits::Union{Nothing, UpDown}
    +    time_limits::Union{Nothing, UpDown}
    +    rating_pump::Float64
    +    active_power_limits_pump::MinMax
    +    reactive_power_limits_pump::Union{Nothing, MinMax}
    +    ramp_limits_pump::Union{Nothing, UpDown}
    +    time_limits_pump::Union{Nothing, UpDown}
    +    storage_capacity::UpDown
    +    inflow::Float64
    +    outflow::Float64
    +    initial_storage::UpDown
    +    storage_target::UpDown
    +    operation_cost::OperationalCost
    +    pump_efficiency::Float64
    +    conversion_factor::Float64
    +    time_at_status::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • active_power_limits::MinMax, validation range: (0, nothing), action if invalid: warn
    • reactive_power_limits::Union{Nothing, MinMax}, action if invalid: warn
    • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error
    • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error
    • rating_pump::Float64: Thermal limited MVA Power Withdrawl of the pump. <= Capacity, validation range: (0, nothing), action if invalid: error
    • active_power_limits_pump::MinMax
    • reactive_power_limits_pump::Union{Nothing, MinMax}, action if invalid: warn
    • ramp_limits_pump::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute of pump, validation range: (0, nothing), action if invalid: error
    • time_limits_pump::Union{Nothing, UpDown}: Minimum up and Minimum down time limits of pump in hours, validation range: (0, nothing), action if invalid: error
    • storage_capacity::UpDown: Maximum storage capacity in the upper and lower reservoirs (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error
    • inflow::Float64: Baseline inflow into the upper reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing), action if invalid: error
    • outflow::Float64: Baseline outflow from the lower reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing), action if invalid: error
    • initial_storage::UpDown: Initial storage capacity in the upper and lower reservoir (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error
    • storage_target::UpDown: Storage target of upper reservoir at the end of simulation as ratio of storage capacity.
    • operation_cost::OperationalCost: Operation Cost of Generation OperationalCost
    • pump_efficiency::Float64: Efficiency of pump, validation range: (0, 1), action if invalid: warn
    • conversion_factor::Float64: Conversion factor from flow/volume to energy: m^3 -> p.u-hr.
    • time_at_status::Float64
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_InnerControl/index.html b/v3.3.0/model_library/generated_InnerControl/index.html new file mode 100644 index 0000000000..7c9c0e01b0 --- /dev/null +++ b/v3.3.0/model_library/generated_InnerControl/index.html @@ -0,0 +1,113 @@ + +InnerControl · PowerSystems.jl

    InnerControl

    CurrentModeControl

    PowerSystems.CurrentModeControlType
    mutable struct CurrentModeControl <: InnerControl
    +    kpc::Float64
    +    kic::Float64
    +    kffv::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of an inner loop PI current control using based on Purba, Dhople, Jafarpour, Bullo and Johnson. "Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters." 2017 IEEE 18th Workshop on Control and Modeling for Power Electronics (COMPEL): 1-7.

    Arguments

    • kpc::Float64: Current controller proportional gain, validation range: (0, nothing)
    • kic::Float64: Current controller integral gain, validation range: (0, nothing)
    • kffv::Float64: Gain to enable feed-forward gain of voltage., validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the CurrentModeControl model are:
    γd_ic: d-axis integrator state of the PI current controller,
    +γq_ic: q-axis integrator state of the PI current controller
    • n_states::Int: CurrentControl has 2 states
    source

    RECurrentControlB

    PowerSystems.RECurrentControlBType
    mutable struct RECurrentControlB <: InnerControl
    +    Q_Flag::Int
    +    PQ_Flag::Int
    +    Vdip_lim::MinMax
    +    T_rv::Float64
    +    dbd_pnts::Tuple{Float64, Float64}
    +    K_qv::Float64
    +    Iqinj_lim::MinMax
    +    V_ref0::Float64
    +    K_vp::Float64
    +    K_vi::Float64
    +    T_iq::Float64
    +    I_max::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of the Inner Control part of the REECB model in PSS/E

    Arguments

    • Q_Flag::Int: Q Flag used for I_qinj, validation range: (0, 1)
    • PQ_Flag::Int: PQ Flag used for the Current Limit Logic, validation range: (0, 1)
    • Vdip_lim::MinMax: Limits for Voltage Dip Logic (Vdip, Vup)
    • T_rv::Float64: Voltage Filter Time Constant, validation range: (0, nothing)
    • dbd_pnts::Tuple{Float64, Float64}: Voltage error deadband thresholds (dbd1, dbd2)
    • K_qv::Float64: Reactive current injection gain during over and undervoltage conditions, validation range: (0, nothing)
    • Iqinj_lim::MinMax: Limits for Iqinj (I_qh1, I_ql1)
    • V_ref0::Float64: User defined reference. If 0, PSID initializes to initial terminal voltage, validation range: (0, nothing)
    • K_vp::Float64: Voltage regulator proportional gain (used when QFlag = 1), validation range: (0, nothing)
    • K_vi::Float64: Voltage regulator integral gain (used when QFlag = 1), validation range: (0, nothing)
    • T_iq::Float64: Time constant for low-pass filter for state q_V when QFlag = 0, validation range: (0, nothing)
    • I_max::Float64: Maximum limit on total converter current, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the RECurrentControlB depends on the Flags
    • n_states::Int: The states of the RECurrentControlB depends on the Flags
    source

    VoltageModeControl

    PowerSystems.VoltageModeControlType
    mutable struct VoltageModeControl <: InnerControl
    +    kpv::Float64
    +    kiv::Float64
    +    kffv::Float64
    +    rv::Float64
    +    lv::Float64
    +    kpc::Float64
    +    kic::Float64
    +    kffi::Float64
    +    ωad::Float64
    +    kad::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of an inner loop current control PID using virtual impedance based on D'Arco, Suul and Fosso. "A Virtual Synchronous Machine implementation for distributed control of power converters in SmartGrids." Electric Power Systems Research 122 (2015) 180–197.

    Arguments

    • kpv::Float64: voltage controller proportional gain, validation range: (0, nothing)
    • kiv::Float64: voltage controller integral gain, validation range: (0, nothing)
    • kffv::Float64: Binary variable to enable feed-forward gain of voltage., validation range: (0, nothing)
    • rv::Float64: virtual resistance, validation range: (0, nothing)
    • lv::Float64: virtual inductance, validation range: (0, nothing)
    • kpc::Float64: current controller proportional gain, validation range: (0, nothing)
    • kic::Float64: current controller integral gain, validation range: (0, nothing)
    • kffi::Float64: Binary variable to enable feed-forward gain of current, validation range: (0, nothing)
    • ωad::Float64: active damping filter cutoff frequency (rad/sec), validation range: (0, nothing)
    • kad::Float64: active damping gain, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the VoltageModeControl model are:
    ξd_ic: d-axis integrator state of the PI voltage controller,
    +ξq_ic: q-axis integrator state of the PI voltage controller,
    +γd_ic: d-axis integrator state of the PI current controller,
    +γq_ic: q-axis integrator state of the PI current controller,
    +ϕd_ic: d-axis low-pass filter of active damping,
    +ϕq_ic: q-axis low-pass filter of active damping
    • n_states::Int: VoltageModeControl has 6 states
    source
    diff --git a/v3.3.0/model_library/generated_InterconnectingConverter/index.html b/v3.3.0/model_library/generated_InterconnectingConverter/index.html new file mode 100644 index 0000000000..fadb371629 --- /dev/null +++ b/v3.3.0/model_library/generated_InterconnectingConverter/index.html @@ -0,0 +1,68 @@ + +InterconnectingConverter · PowerSystems.jl

    InterconnectingConverter

    PowerSystems.InterconnectingConverterType
    mutable struct InterconnectingConverter <: StaticInjection
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    dc_bus::DCBus
    +    active_power::Float64
    +    rating::Float64
    +    active_power_limits::MinMax
    +    base_power::Float64
    +    operation_cost::OperationalCost
    +    efficiency::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Interconnecting Power Converter (IPC) for transforming power from an ACBus to a DCBus

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • dc_bus::DCBus
    • active_power::Float64: Active Power on the DCSide, validation range: active_power_limits, action if invalid: warn
    • rating::Float64: Thermal limited MVA Power Output of the converter. <= Capacity, validation range: (0, nothing), action if invalid: error
    • active_power_limits::MinMax
    • base_power::Float64: Base power of the converter in MVA, validation range: (0, nothing), action if invalid: warn
    • operation_cost::OperationalCost: Operation Cost of Generation OperationalCost
    • efficiency::Float64: Conversion efficiency from AC Power to DC Power
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_InterruptiblePowerLoad/index.html b/v3.3.0/model_library/generated_InterruptiblePowerLoad/index.html new file mode 100644 index 0000000000..aa24fc4bdf --- /dev/null +++ b/v3.3.0/model_library/generated_InterruptiblePowerLoad/index.html @@ -0,0 +1,64 @@ + +InterruptiblePowerLoad · PowerSystems.jl

    InterruptiblePowerLoad

    PowerSystems.InterruptiblePowerLoadType
    mutable struct InterruptiblePowerLoad <: ControllableLoad
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    max_active_power::Float64
    +    max_reactive_power::Float64
    +    base_power::Float64
    +    operation_cost::TwoPartCost
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64
    • max_active_power::Float64
    • max_reactive_power::Float64
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • operation_cost::TwoPartCost: Operation Cost of Generation TwoPartCost
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_InverterLimiter/index.html b/v3.3.0/model_library/generated_InverterLimiter/index.html new file mode 100644 index 0000000000..7881cd4bdc --- /dev/null +++ b/v3.3.0/model_library/generated_InverterLimiter/index.html @@ -0,0 +1,31 @@ + +InverterLimiter · PowerSystems.jl

    PowerSystems.InverterLimiter

    InstantaneousCurrentLimiter

    PowerSystems.InstantaneousCurrentLimiterType
    mutable struct InstantaneousCurrentLimiter <: InverterLimiter
    +    Id_max::Float64
    +    Iq_max::Float64
    +    ext::Dict{String, Any}
    +end

    Parameters of Instantaneous (Square) Current Controller Limiter

    Arguments

    • Id_max::Float64: Maximum limit on d-axis current controller input current (device base), validation range: (0, nothing)
    • Iq_max::Float64: Maximum limit on d-axis current controller input current (device base), validation range: (0, nothing)
    • ext::Dict{String, Any}
    source

    MagnitudeCurrentLimiter

    PowerSystems.MagnitudeCurrentLimiterType
    mutable struct MagnitudeCurrentLimiter <: InverterLimiter
    +    I_max::Float64
    +    ext::Dict{String, Any}
    +end

    Parameters of Magnitude (Circular) Current Controller Limiter

    Arguments

    • I_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)
    • ext::Dict{String, Any}
    source

    PriorityCurrentLimiter

    PowerSystems.PriorityCurrentLimiterType
    mutable struct PriorityCurrentLimiter <: InverterLimiter
    +    I_max::Float64
    +    ϕ_I::Float64
    +    ext::Dict{String, Any}
    +end

    Parameters of Priority-Based Current Controller Limiter

    Arguments

    • I_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)
    • ϕ_I::Float64: Pre-defined angle (measured against the d-axis) for Iref once limit is hit, validation range: (-1.571, 1.571)
    • ext::Dict{String, Any}
    source
    diff --git a/v3.3.0/model_library/generated_Line/index.html b/v3.3.0/model_library/generated_Line/index.html new file mode 100644 index 0000000000..5fa2708791 --- /dev/null +++ b/v3.3.0/model_library/generated_Line/index.html @@ -0,0 +1,48 @@ + +Line · PowerSystems.jl

    Line

    PowerSystems.LineType
    mutable struct Line <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    reactive_power_flow::Float64
    +    arc::Arc
    +    r::Float64
    +    x::Float64
    +    b::FromTo
    +    rate::Float64
    +    angle_limits::MinMax
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • reactive_power_flow::Float64
    • arc::Arc
    • r::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn
    • x::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn
    • b::FromTo: System per-unit value, validation range: (0, 100), action if invalid: warn
    • rate::Float64
    • angle_limits::MinMax, validation range: (-1.571, 1.571), action if invalid: error
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_LoadZone/index.html b/v3.3.0/model_library/generated_LoadZone/index.html new file mode 100644 index 0000000000..e45b230fa5 --- /dev/null +++ b/v3.3.0/model_library/generated_LoadZone/index.html @@ -0,0 +1,17 @@ + +LoadZone · PowerSystems.jl

    LoadZone

    PowerSystems.LoadZoneType
    mutable struct LoadZone <: AggregationTopology
    +    name::String
    +    peak_active_power::Float64
    +    peak_reactive_power::Float64
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    A collection of buses for electricity price analysis.

    Arguments

    • name::String
    • peak_active_power::Float64
    • peak_reactive_power::Float64
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Machine/index.html b/v3.3.0/model_library/generated_Machine/index.html new file mode 100644 index 0000000000..0d5ad97e28 --- /dev/null +++ b/v3.3.0/model_library/generated_Machine/index.html @@ -0,0 +1,548 @@ + +Machine · PowerSystems.jl

    Machine

    AndersonFouadMachine

    PowerSystems.AndersonFouadMachineType
    mutable struct AndersonFouadMachine <: Machine
    +    R::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Xd_pp::Float64
    +    Xq_pp::Float64
    +    Td0_p::Float64
    +    Tq0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_pp::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 6-states synchronous machine: Anderson-Fouad model

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    ψq: q-axis stator flux,
    +ψd: d-axis stator flux,
    +eq_p: q-axis transient voltage,
    +ed_p: d-axis transient voltage,
    +eq_pp: q-axis subtransient voltage,
    +ed_pp: d-axis subtransient voltage
    • n_states::Int: AndersonFouadMachine has 6 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    BaseMachine

    PowerSystems.BaseMachineType
    mutable struct BaseMachine <: Machine
    +    R::Float64
    +    Xd_p::Float64
    +    eq_p::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a Classic Machine: GENCLS in PSSE and PSLF

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd_p::Float64: Reactance after EMF in machine per unit, validation range: (0, nothing)
    • eq_p::Float64: Fixed EMF behind the impedance, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: BaseMachine has no states
    • n_states::Int: BaseMachine has no states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    FullMachine

    PowerSystems.FullMachineType
    mutable struct FullMachine <: Machine
    +    R::Float64
    +    R_f::Float64
    +    R_1d::Float64
    +    R_1q::Float64
    +    L_d::Float64
    +    L_q::Float64
    +    L_ad::Float64
    +    L_aq::Float64
    +    L_f1d::Float64
    +    L_ff::Float64
    +    L_1d::Float64
    +    L_1q::Float64
    +    ext::Dict{String, Any}
    +    inv_d_fluxlink::Array{Float64,2}
    +    inv_q_fluxlink::Array{Float64,2}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is NOT neglected. Only one q-axis damping circuit is considered. All parameters are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books.

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • R_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)
    • R_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski., validation range: (0, nothing)
    • R_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski., validation range: (0, nothing)
    • L_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski)., validation range: (0, nothing)
    • L_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur., validation range: (0, nothing)
    • L_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)
    • L_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)
    • L_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)
    • L_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)
    • L_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)
    • L_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • inv_d_fluxlink::Array{Float64,2}: Equations 3.127, 3.130, 3.131 From Kundur
    • inv_q_fluxlink::Array{Float64,2}: Equations 3.128, 3.132 From Kundur
    • states::Vector{Symbol}: The states are:
    ψd: d-axis stator flux,
    +ψq: q-axis stator flux,
    +ψf: field rotor flux,
    +ψ1d: d-axis rotor damping flux,
    +ψ1q: q-axis rotor damping flux
    • n_states::Int: FullMachine has 5 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    MarconatoMachine

    PowerSystems.MarconatoMachineType
    mutable struct MarconatoMachine <: Machine
    +    R::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Xd_pp::Float64
    +    Xq_pp::Float64
    +    Td0_p::Float64
    +    Tq0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_pp::Float64
    +    T_AA::Float64
    +    ext::Dict{String, Any}
    +    γd::Float64
    +    γq::Float64
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 6-states synchronous machine: Marconato model

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • T_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • γd::Float64
    • γq::Float64
    • states::Vector{Symbol}: The states are:
    ψq: q-axis stator flux,
    +ψd: d-axis stator flux,
    +eq_p: q-axis transient voltage,
    +ed_p: d-axis transient voltage,
    +eq_pp: q-axis subtransient voltage,
    +ed_pp: d-axis subtransient voltage
    • n_states::Int: MarconatoMachine has 6 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    OneDOneQMachine

    PowerSystems.OneDOneQMachineType
    mutable struct OneDOneQMachine <: Machine
    +    R::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Td0_p::Float64
    +    Tq0_p::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected.

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    eq_p: q-axis transient voltage,
    +ed_p: d-axis transient voltage
    • n_states::Int: OneDOneQMachine has 2 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    RoundRotorExponential

    PowerSystems.RoundRotorExponentialType
    mutable struct RoundRotorExponential <: Machine
    +    base_machine::RoundRotorMachine
    +    saturation_coeffs::Tuple{Float64, Float64}

    4-states round-rotor synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROE model in PSSE and PSLF.

    Arguments

    • base_machine::RoundRotorMachine: Round Rotor Machine model.
    • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.
    source

    RoundRotorMachine

    PowerSystems.RoundRotorMachineType
    mutable struct RoundRotorMachine <: Machine
    +    R::Float64
    +    Td0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_p::Float64
    +    Tq0_pp::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Xd_pp::Float64
    +    Xl::Float64
    +    Se::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    γ_d1::Float64
    +    γ_q1::Float64
    +    γ_d2::Float64
    +    γ_q2::Float64
    +    γ_qd::Float64
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 4-states round-rotor synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU or GENROE model in PSSE and PSLF.

    Arguments

    • R::Float64: Armature resistance, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)
    • Xl::Float64: Stator leakage reactance, validation range: (0, nothing)
    • Se::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: S(1.0) = B(|ψ_pp|-A)^2
    • ext::Dict{String, Any}
    • γ_d1::Float64: γ_d1 parameter
    • γ_q1::Float64: γ_q1 parameter
    • γ_d2::Float64: γ_d2 parameter
    • γ_q2::Float64: γ_q2 parameter
    • γ_qd::Float64: γ_qd parameter
    • states::Vector{Symbol}: The states are:
    eq_p: q-axis generator voltage behind the transient reactance,
    +ed_p: d-axis generator voltage behind the transient reactance,
    +ψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,
    +ψ_kq: flux linkage in the first equivalent damping circuit in the d-axis
    • n_states::Int: RoundRotorMachine has 4 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    RoundRotorQuadratic

    PowerSystems.RoundRotorQuadraticType
    mutable struct RoundRotorQuadratic <: Machine
    +    base_machine::RoundRotorMachine
    +    saturation_coeffs::Tuple{Float64, Float64}

    4-states round-rotor synchronous machine with quadratic saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU model in PSSE and PSLF.

    Arguments

    • base_machine::RoundRotorMachine: Round Rotor Machine model.
    • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.
    source

    SalientPoleExponential

    PowerSystems.SalientPoleExponentialType
    mutable struct SalientPoleExponential <: Machine
    +    base_machine::SalientPoleMachine
    +    saturation_coeffs::Tuple{Float64, Float64}

    3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAE in PSSE and PSLF.

    Arguments:

    • base_machine::SalientPoleMachine: Salient Pole Machine model.
    • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.
    source

    SalientPoleMachine

    PowerSystems.SalientPoleMachineType
    mutable struct SalientPoleMachine <: Machine
    +    R::Float64
    +    Td0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_pp::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xd_pp::Float64
    +    Xl::Float64
    +    Se::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    γ_d1::Float64
    +    γ_q1::Float64
    +    γ_d2::Float64
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 3-states salient-pole synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.1 (Model 2.1). GENSAL or GENSAE model in PSSE and PSLF.

    Arguments

    • R::Float64: Armature resistance, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)
    • Xl::Float64: Stator leakage reactance, validation range: (0, nothing)
    • Se::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: Se(eqp) = B(eqp-A)^2
    • ext::Dict{String, Any}
    • γ_d1::Float64: γ_d1 parameter
    • γ_q1::Float64: γ_q1 parameter
    • γ_d2::Float64: γ_d2 parameter
    • states::Vector{Symbol}: The states are:
    eq_p: q-axis generator voltage behind the transient reactance,
    +ψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,
    +ψq_pp: phasonf of the subtransient flux linkage in the q-axis
    • n_states::Int: SalientPoleMachine has 3 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SalientPoleQuadratic

    PowerSystems.SalientPoleQuadraticType
    mutable struct SalientPoleQuadratic <: Machine
    +    base_machine::SalientPoleMachine
    +    saturation_coeffs::Tuple{Float64, Float64}

    3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAL in PSSE and PSLF.

    Arguments:

    • base_machine::SalientPoleMachine: Salient Pole Machine model.
    • saturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.
    source

    SauerPaiMachine

    PowerSystems.SauerPaiMachineType
    mutable struct SauerPaiMachine <: Machine
    +    R::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Xd_pp::Float64
    +    Xq_pp::Float64
    +    Xl::Float64
    +    Td0_p::Float64
    +    Tq0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_pp::Float64
    +    ext::Dict{String, Any}
    +    γ_d1::Float64
    +    γ_q1::Float64
    +    γ_d2::Float64
    +    γ_q2::Float64
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of synchronous machine: Sauer Pai model

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xl::Float64: Stator Leakage Reactance, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • γ_d1::Float64
    • γ_q1::Float64
    • γ_d2::Float64
    • γ_q2::Float64
    • states::Vector{Symbol}: The states are:
    ψq: q-axis stator flux,
    +ψd: d-axis stator flux,
    +eq_p: q-axis transient voltage,
    +ed_p: d-axis transient voltage
    +ψd_pp: subtransient flux linkage in the d-axis
    +ψq_pp: subtransient flux linkage in the q-axis
    • n_states::Int: SauerPaiMachine has 6 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SimpleAFMachine

    PowerSystems.SimpleAFMachineType
    mutable struct SimpleAFMachine <: Machine
    +    R::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Xd_pp::Float64
    +    Xq_pp::Float64
    +    Td0_p::Float64
    +    Tq0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_pp::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 4-states simplified Anderson-Fouad (SimpleAFMachine) model. The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected. If transmission dynamics is considered use the full order Anderson Fouad model.

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    eq_p: q-axis transient voltage,
    +ed_p: d-axis transient voltage,
    +eq_pp: q-axis subtransient voltage,
    +ed_pp: d-axis subtransient voltage
    • n_states::Int: SimpleAFMachine has 4 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SimpleFullMachine

    PowerSystems.SimpleFullMachineType
    mutable struct SimpleFullMachine <: Machine
    +    R::Float64
    +    R_f::Float64
    +    R_1d::Float64
    +    R_1q::Float64
    +    L_d::Float64
    +    L_q::Float64
    +    L_ad::Float64
    +    L_aq::Float64
    +    L_f1d::Float64
    +    L_ff::Float64
    +    L_1d::Float64
    +    L_1q::Float64
    +    ext::Dict{String, Any}
    +    inv_d_fluxlink::Array{Float64,2}
    +    inv_q_fluxlink::Array{Float64,2}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is neglected. This is standard when transmission network dynamics is neglected. Only one q-axis damping circuit is considered. All per unit are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books.

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • R_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)
    • R_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski., validation range: (0, nothing)
    • R_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski., validation range: (0, nothing)
    • L_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski)., validation range: (0, nothing)
    • L_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur., validation range: (0, nothing)
    • L_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)
    • L_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)
    • L_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)
    • L_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)
    • L_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)
    • L_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • inv_d_fluxlink::Array{Float64,2}: Equations 3.127, 3.130, 3.131 From Kundur
    • inv_q_fluxlink::Array{Float64,2}: Equations 3.128, 3.132 From Kundur
    • states::Vector{Symbol}: The states are:
    ψf: field rotor flux,
    +ψ1d: d-axis rotor damping flux,
    +ψ1q: q-axis rotor damping flux
    • n_states::Int: SimpleFullMachine has 3 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SimpleMarconatoMachine

    PowerSystems.SimpleMarconatoMachineType
    mutable struct SimpleMarconatoMachine <: Machine
    +    R::Float64
    +    Xd::Float64
    +    Xq::Float64
    +    Xd_p::Float64
    +    Xq_p::Float64
    +    Xd_pp::Float64
    +    Xq_pp::Float64
    +    Td0_p::Float64
    +    Tq0_p::Float64
    +    Td0_pp::Float64
    +    Tq0_pp::Float64
    +    T_AA::Float64
    +    ext::Dict{String, Any}
    +    γd::Float64
    +    γq::Float64
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected.

    Arguments

    • R::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)
    • Xd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Xd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)
    • Xq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)
    • Td0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)
    • Tq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)
    • Td0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)
    • Tq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)
    • T_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • γd::Float64
    • γq::Float64
    • states::Vector{Symbol}: The states are:
    eq_p: q-axis transient voltage,
    +ed_p: d-axis transient voltage,
    +eq_pp: q-axis subtransient voltage,
    +ed_pp: d-axis subtransient voltage
    • n_states::Int: SimpleMarconatoMachine has 4 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_MarketBidCost/index.html b/v3.3.0/model_library/generated_MarketBidCost/index.html new file mode 100644 index 0000000000..d3a2a5a20d --- /dev/null +++ b/v3.3.0/model_library/generated_MarketBidCost/index.html @@ -0,0 +1,24 @@ + +MarketBidCost · PowerSystems.jl

    MarketBidCost

    PowerSystems.MarketBidCostType
    mutable struct MarketBidCost <: OperationalCost
    +    no_load::Float64
    +    start_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}
    +    shut_down::Float64
    +    variable::Union{Nothing, IS.TimeSeriesKey}
    +    ancillary_services::Vector{Service}
    +end

    Data Structure Operational Cost to reflect market bids of energy and ancilliary services. Compatible with most US Market bidding mechanisms

    Arguments

    • no_load::Float64: no load cost
    • start_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}: start-up cost at different stages of the thermal cycle. Warm is also refered as intermediate in some markets
    • shut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn
    • variable::Union{Nothing, IS.TimeSeriesKey}: Variable Cost TimeSeriesKey
    • ancillary_services::Vector{Service}: Bids for the ancillary services
    source
    diff --git a/v3.3.0/model_library/generated_MonitoredLine/index.html b/v3.3.0/model_library/generated_MonitoredLine/index.html new file mode 100644 index 0000000000..85c23d9ee1 --- /dev/null +++ b/v3.3.0/model_library/generated_MonitoredLine/index.html @@ -0,0 +1,53 @@ + +MonitoredLine · PowerSystems.jl

    MonitoredLine

    PowerSystems.MonitoredLineType
    mutable struct MonitoredLine <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    reactive_power_flow::Float64
    +    arc::Arc
    +    r::Float64
    +    x::Float64
    +    b::FromTo
    +    flow_limits::FromTo_ToFrom
    +    rate::Float64
    +    angle_limits::MinMax
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • reactive_power_flow::Float64
    • arc::Arc
    • r::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn
    • x::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn
    • b::FromTo: System per-unit value, validation range: (0, 2), action if invalid: warn
    • flow_limits::FromTo_ToFrom: throw warning above max SIL
    • rate::Float64: compare to SIL (warn) (theoretical limit)
    • angle_limits::MinMax, validation range: (-1.571, 1.571), action if invalid: error
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_MultiStartCost/index.html b/v3.3.0/model_library/generated_MultiStartCost/index.html new file mode 100644 index 0000000000..4f1cc629b9 --- /dev/null +++ b/v3.3.0/model_library/generated_MultiStartCost/index.html @@ -0,0 +1,20 @@ + +MultiStartCost · PowerSystems.jl

    MultiStartCost

    PowerSystems.MultiStartCostType
    mutable struct MultiStartCost <: OperationalCost
    +    variable::VariableCost
    +    no_load::Float64
    +    fixed::Float64
    +    start_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}
    +    shut_down::Float64
    +end

    Data Structure Operational Cost Data which includes fixed, variable cost, multiple start up cost and stop costs.

    Arguments

    • variable::VariableCost: variable cost
    • no_load::Float64: no load cost
    • fixed::Float64: fixed cost
    • start_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}: start-up cost
    • shut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn
    source
    diff --git a/v3.3.0/model_library/generated_PSS/index.html b/v3.3.0/model_library/generated_PSS/index.html new file mode 100644 index 0000000000..88fdf263cb --- /dev/null +++ b/v3.3.0/model_library/generated_PSS/index.html @@ -0,0 +1,463 @@ + +PSS · PowerSystems.jl

    PSS

    IEEEST

    PowerSystems.IEEESTType
    mutable struct IEEEST <: PSS
    +    input_code::Int
    +    remote_bus_control::Int
    +    A1::Float64
    +    A2::Float64
    +    A3::Float64
    +    A4::Float64
    +    A5::Float64
    +    A6::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    T4::Float64
    +    T5::Float64
    +    T6::Float64
    +    Ks::Float64
    +    Ls_lim::Tuple{Float64, Float64}
    +    Vcu::Float64
    +    Vcl::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    IEEE Stabilizing Model PSS.

    Arguments

    • input_code::Int: Code input for stabilizer, validation range: (1, 6), action if invalid: error
    • remote_bus_control::Int: Remote Bus number for control.
    • A1::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn
    • A2::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn
    • A3::Float64: Filter coefficient, validation range: (0, nothing)
    • A4::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn
    • A5::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn
    • A6::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn
    • T1::Float64: Time constant, validation range: (0, 10), action if invalid: warn
    • T2::Float64: Time constant, validation range: (0, 10), action if invalid: warn
    • T3::Float64: Time constant, validation range: (0, 10), action if invalid: warn
    • T4::Float64: Time constant, validation range: (0, 10), action if invalid: warn
    • T5::Float64: Time constant, validation range: (0, 10), action if invalid: warn
    • T6::Float64: Time constant, validation range: (eps(), 2.0), action if invalid: error
    • Ks::Float64: Proportional gain, validation range: (0, nothing), action if invalid: warn
    • Ls_lim::Tuple{Float64, Float64}: PSS output limits for regulator output (Ls_min, Ls_max)
    • Vcu::Float64: Cutoff limiter upper bound, validation range: (0, 1.25), action if invalid: warn
    • Vcl::Float64: Cutoff limiter lower bound, validation range: (0, 1.0), action if invalid: warn
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    x_p1: 1st filter integration,
    +x_p2: 2nd filter integration, 
    +x_p3: 3rd filter integration, 
    +x_p4: 4rd filter integration, 
    +x_p5: T1/T2 lead-lag integrator, 
    +x_p6: T3/T4 lead-lag integrator, 
    +:x_p7 last integer,
    • n_states::Int: IEEEST has 7 states
    • states_types::Vector{StateTypes}: IEEEST has 7 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    PSS2A

    PowerSystems.PSS2AType
    mutable struct PSS2A <: PSS
    +    input_code_1::Int
    +    remote_bus_control_1::Int
    +    input_code_2::Int
    +    remote_bus_control_2::Int
    +    M_rtf::Int
    +    N_rtf::Int
    +    Tw1::Float64
    +    Tw2::Float64
    +    T6::Float64
    +    Tw3::Float64
    +    Tw4::Float64
    +    T7::Float64
    +    Ks2::Float64
    +    Ks3::Float64
    +    T8::Float64
    +    T9::Float64
    +    Ks1::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    T4::Float64
    +    Vst_lim::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    IEEE Dual-Input Stabilizer Model

    Arguments

    • input_code_1::Int: First Input Code for stabilizer, validation range: (1, 6), action if invalid: error
    • remote_bus_control_1::Int: First Input Remote Bus number for control.
    • input_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6), action if invalid: error
    • remote_bus_control_2::Int: Second Input Remote Bus number for control.
    • M_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error
    • N_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error
    • Tw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing), action if invalid: warn
    • Tw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing), action if invalid: warn
    • T6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing), action if invalid: warn
    • Tw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing), action if invalid: warn
    • Tw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing), action if invalid: warn
    • T7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn
    • Ks2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn
    • Ks3::Float64: Gain for second input, validation range: (0, nothing), action if invalid: warn
    • T8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing), action if invalid: warn
    • T9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing), action if invalid: warn
    • Ks1::Float64: Gain before lead-lag blocks, validation range: (0, nothing), action if invalid: warn
    • T1::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T2::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T3::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T4::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn
    • Vst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    x_p1: 1st washout 1st input, 
    +x_p2: 2nd washout 1st input, 
    +x_p3: transducer 1st input, 
    +x_p4: 1st washout 2nd input, 
    +x_p5: 2nd washout 2nd input, 
    +x_p6: transducer 2nd input, 
    +x_p7: ramp tracking filter state 1, 
    +x_p8: ramp tracking filter state 2, 
    +x_p9: ramp tracking filter state 3, 
    +x_p10: ramp tracking filter state 4, 
    +x_p11: ramp tracking filter state 5, 
    +x_p12: ramp tracking filter state 6, 
    +x_p13: ramp tracking filter state 7, 
    +x_p14: ramp tracking filter state 8, 
    +x_p15: 1st lead-lag, 
    +x_p16: 2nd lead-lag,
    • n_states::Int: IEEEST has 16 states
    • states_types::Vector{StateTypes}: IEEEST has 16 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    PSS2B

    PowerSystems.PSS2BType
    mutable struct PSS2B <: PSS
    +    input_code_1::Int
    +    remote_bus_control_1::Int
    +    input_code_2::Int
    +    remote_bus_control_2::Int
    +    M_rtf::Int
    +    N_rtf::Int
    +    Tw1::Float64
    +    Tw2::Float64
    +    T6::Float64
    +    Tw3::Float64
    +    Tw4::Float64
    +    T7::Float64
    +    Ks2::Float64
    +    Ks3::Float64
    +    T8::Float64
    +    T9::Float64
    +    Ks1::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    T4::Float64
    +    T10::Float64
    +    T11::Float64
    +    Vs1_lim::Tuple{Float64, Float64}
    +    Vs2_lim::Tuple{Float64, Float64}
    +    Vst_lim::Tuple{Float64, Float64}
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    IEEE 421.5 2005 PSS2B IEEE Dual-Input Stabilizer Model

    Arguments

    • input_code_1::Int: First Input Code for stabilizer, validation range: (1, 6), action if invalid: error
    • remote_bus_control_1::Int: First Input Remote Bus number for control.
    • input_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6), action if invalid: error
    • remote_bus_control_2::Int: Second Input Remote Bus number for control.
    • M_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error
    • N_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error
    • Tw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing), action if invalid: warn
    • Tw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing), action if invalid: warn
    • T6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing), action if invalid: warn
    • Tw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing), action if invalid: warn
    • Tw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing), action if invalid: warn
    • T7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn
    • Ks2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn
    • Ks3::Float64: Gain for second input, validation range: (0, nothing), action if invalid: warn
    • T8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing), action if invalid: warn
    • T9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing), action if invalid: warn
    • Ks1::Float64: Gain before lead-lag blocks, validation range: (0, nothing), action if invalid: warn
    • T1::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T2::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T3::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T4::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T10::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T11::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn
    • Vs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)
    • Vs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)
    • Vst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    x_p1: 1st washout 1st input, 
    +x_p2: 2nd washout 1st input, 
    +x_p3: transducer 1st input, 
    +x_p4: 1st washout 2nd input, 
    +x_p5: 2nd washout 2nd input, 
    +x_p6: transducer 2nd input, 
    +x_p7: ramp tracking filter state 1, 
    +x_p8: ramp tracking filter state 2, 
    +x_p9: ramp tracking filter state 3, 
    +x_p10: ramp tracking filter state 4, 
    +x_p11: ramp tracking filter state 5, 
    +x_p12: ramp tracking filter state 6, 
    +x_p13: ramp tracking filter state 7, 
    +x_p14: ramp tracking filter state 8, 
    +x_p15: 1st lead-lag, 
    +x_p16: 2nd lead-lag, 
    +x_p17: 3rd lead-lag,
    • n_states::Int: IEEEST has 17 states
    • states_types::Vector{StateTypes}: IEEEST has 17 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    PSS2C

    PowerSystems.PSS2CType
    mutable struct PSS2C <: PSS
    +    input_code_1::Int
    +    remote_bus_control_1::Int
    +    input_code_2::Int
    +    remote_bus_control_2::Int
    +    M_rtf::Int
    +    N_rtf::Int
    +    Tw1::Float64
    +    Tw2::Float64
    +    T6::Float64
    +    Tw3::Float64
    +    Tw4::Float64
    +    T7::Float64
    +    Ks2::Float64
    +    Ks3::Float64
    +    T8::Float64
    +    T9::Float64
    +    Ks1::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    T4::Float64
    +    T10::Float64
    +    T11::Float64
    +    Vs1_lim::Tuple{Float64, Float64}
    +    Vs2_lim::Tuple{Float64, Float64}
    +    Vst_lim::Tuple{Float64, Float64}
    +    T12::Float64
    +    T13::Float64
    +    PSS_Hysteresis_param::Tuple{Float64, Float64}
    +    Xcomp::Float64
    +    Tcomp::Float64
    +    hysteresis_binary_logic::Int
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    IEEE 421.5 2016 PSS2C IEEE Dual-Input Stabilizer Model

    Arguments

    • input_code_1::Int: First Input Code for stabilizer, validation range: (1, 7), action if invalid: error
    • remote_bus_control_1::Int: First Input Remote Bus number for control.
    • input_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6), action if invalid: error
    • remote_bus_control_2::Int: Second Input Remote Bus number for control.
    • M_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error
    • N_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error
    • Tw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing), action if invalid: warn
    • Tw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing), action if invalid: warn
    • T6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing), action if invalid: warn
    • Tw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing), action if invalid: warn
    • Tw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing), action if invalid: warn
    • T7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn
    • Ks2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn
    • Ks3::Float64: Gain for second input, validation range: (0, nothing), action if invalid: warn
    • T8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing), action if invalid: warn
    • T9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing), action if invalid: warn
    • Ks1::Float64: Gain before lead-lag blocks, validation range: (0, nothing), action if invalid: warn
    • T1::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T2::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T3::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T4::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T10::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T11::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn
    • Vs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)
    • Vs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)
    • Vst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)
    • T12::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing), action if invalid: warn
    • T13::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing), action if invalid: warn
    • PSS_Hysteresis_param::Tuple{Float64, Float64}: PSS output hysteresis parameters (PSSOFF, PSSON)
    • Xcomp::Float64: Stator Leakage Reactance, validation range: (0, nothing)
    • Tcomp::Float64: Time measured with compensated frequency, validation range: (eps(), nothing), action if invalid: error
    • hysteresis_binary_logic::Int: Hysteresis memory variable
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    x_p1: 1st washout 1st input, 
    +x_p2: 2nd washout 1st input, 
    +x_p3: transducer 1st input, 
    +x_p4: 1st washout 2nd input, 
    +x_p5: 2nd washout 2nd input, 
    +x_p6: transducer 2nd input, 
    +x_p7: ramp tracking filter state 1, 
    +x_p8: ramp tracking filter state 2, 
    +x_p9: ramp tracking filter state 3, 
    +x_p10: ramp tracking filter state 4, 
    +x_p11: ramp tracking filter state 5, 
    +x_p12: ramp tracking filter state 6, 
    +x_p13: ramp tracking filter state 7, 
    +x_p14: ramp tracking filter state 8, 
    +x_p15: 1st lead-lag, 
    +x_p16: 2nd lead-lag, 
    +x_p17: 3rd lead-lag, 
    +x_p18: 4th lead-lag, 
    +x_p19: washout block for compensated frequency,
    • n_states::Int: IEEEST has 19 states
    • states_types::Vector{StateTypes}: IEEEST has 19 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    PSSFixed

    PowerSystems.PSSFixedType
    mutable struct PSSFixed <: PSS
    +    V_pss::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a PSS that returns a fixed voltage to add to the reference for the AVR

    Arguments

    • V_pss::Float64: Fixed voltage stabilization signal, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}
    • n_states::Int: PSSFixed has no states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    PSSSimple

    PowerSystems.PSSSimpleType
    mutable struct PSSSimple <: PSS
    +    K_ω::Float64
    +    K_p::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a PSS that returns a proportional droop voltage to add to the reference for the AVR

    Arguments

    • K_ω::Float64: Proportional gain for frequency, validation range: (0, nothing)
    • K_p::Float64: Proportional gain for active power, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}
    • n_states::Int: PSSSimple has no states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    STAB1

    PowerSystems.STAB1Type
    mutable struct STAB1 <: PSS
    +    KT::Float64
    +    T::Float64
    +    T1T3::Float64
    +    T3::Float64
    +    T2T4::Float64
    +    T4::Float64
    +    H_lim::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Speed-Sensitive Stabilizing Model

    Arguments

    • KT::Float64: K/T for washout filter, validation range: (0, nothing), action if invalid: warn
    • T::Float64: Time constant for washout filter, validation range: (0.01, nothing), action if invalid: warn
    • T1T3::Float64: Time constant division T1/T3, validation range: (0, nothing)
    • T3::Float64: Time constant, validation range: (0.01, nothing), action if invalid: warn
    • T2T4::Float64: Time constant division T2/T4, validation range: (0, nothing), action if invalid: warn
    • T4::Float64: Time constant, validation range: (0.01, nothing), action if invalid: warn
    • H_lim::Float64: PSS output limit, validation range: (0, 0.5), action if invalid: warn
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    x_p1: washout filter,
    +x_p2: T1/T3 lead-lag block, 
    +x_p3: T2/T4 lead-lag block,
    • n_states::Int: STAB1 has 3 states
    • states_types::Vector{StateTypes}: STAB1 has 3 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_PhaseShiftingTransformer/index.html b/v3.3.0/model_library/generated_PhaseShiftingTransformer/index.html new file mode 100644 index 0000000000..6d886af3d3 --- /dev/null +++ b/v3.3.0/model_library/generated_PhaseShiftingTransformer/index.html @@ -0,0 +1,77 @@ + +PhaseShiftingTransformer · PowerSystems.jl

    PhaseShiftingTransformer

    PowerSystems.PhaseShiftingTransformerType
    mutable struct PhaseShiftingTransformer <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    reactive_power_flow::Float64
    +    arc::Arc
    +    r::Float64
    +    x::Float64
    +    primary_shunt::Float64
    +    tap::Float64
    +    α::Float64
    +    rate::Union{Nothing, Float64}
    +    phase_angle_limits::MinMax
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • reactive_power_flow::Float64
    • arc::Arc
    • r::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn
    • x::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn
    • primary_shunt::Float64, validation range: (0, 2), action if invalid: warn
    • tap::Float64, validation range: (0, 2), action if invalid: error
    • α::Float64, validation range: (-1.571, 1.571), action if invalid: warn
    • rate::Union{Nothing, Float64}, validation range: (0, nothing), action if invalid: error
    • phase_angle_limits::MinMax, validation range: (-1.571, 1.571), action if invalid: error
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_PowerLoad/index.html b/v3.3.0/model_library/generated_PowerLoad/index.html new file mode 100644 index 0000000000..ee9af09a15 --- /dev/null +++ b/v3.3.0/model_library/generated_PowerLoad/index.html @@ -0,0 +1,42 @@ + +PowerLoad · PowerSystems.jl

    PowerLoad

    PowerSystems.PowerLoadType
    mutable struct PowerLoad <: StaticLoad
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    base_power::Float64
    +    max_active_power::Float64
    +    max_reactive_power::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data structure for a static power load.

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • max_active_power::Float64
    • max_reactive_power::Float64
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_RenewableDispatch/index.html b/v3.3.0/model_library/generated_RenewableDispatch/index.html new file mode 100644 index 0000000000..1d326774d4 --- /dev/null +++ b/v3.3.0/model_library/generated_RenewableDispatch/index.html @@ -0,0 +1,61 @@ + +RenewableDispatch · PowerSystems.jl

    RenewableDispatch

    PowerSystems.RenewableDispatchType
    mutable struct RenewableDispatch <: RenewableGen
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    prime_mover_type::PrimeMovers
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    power_factor::Float64
    +    operation_cost::TwoPartCost
    +    base_power::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • reactive_power_limits::Union{Nothing, MinMax}
    • power_factor::Float64, validation range: (0, 1), action if invalid: error
    • operation_cost::TwoPartCost: Operation Cost of Generation TwoPartCost
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_RenewableFix/index.html b/v3.3.0/model_library/generated_RenewableFix/index.html new file mode 100644 index 0000000000..301dab2b7c --- /dev/null +++ b/v3.3.0/model_library/generated_RenewableFix/index.html @@ -0,0 +1,45 @@ + +RenewableFix · PowerSystems.jl

    RenewableFix

    PowerSystems.RenewableFixType
    mutable struct RenewableFix <: RenewableGen
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    prime_mover_type::PrimeMovers
    +    power_factor::Float64
    +    base_power::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for fixed renewable generation technologies.

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • power_factor::Float64, validation range: (0, 1), action if invalid: error
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Shaft/index.html b/v3.3.0/model_library/generated_Shaft/index.html new file mode 100644 index 0000000000..5e7bc04396 --- /dev/null +++ b/v3.3.0/model_library/generated_Shaft/index.html @@ -0,0 +1,90 @@ + +Shaft · PowerSystems.jl

    Shaft

    FiveMassShaft

    PowerSystems.FiveMassShaftType
    mutable struct FiveMassShaft <: Shaft
    +    H::Float64
    +    H_hp::Float64
    +    H_ip::Float64
    +    H_lp::Float64
    +    H_ex::Float64
    +    D::Float64
    +    D_hp::Float64
    +    D_ip::Float64
    +    D_lp::Float64
    +    D_ex::Float64
    +    D_12::Float64
    +    D_23::Float64
    +    D_34::Float64
    +    D_45::Float64
    +    K_hp::Float64
    +    K_ip::Float64
    +    K_lp::Float64
    +    K_ex::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of 5 mass-spring shaft model. It contains a High-Pressure (HP) steam turbine, Intermediate-Pressure (IP) steam turbine, Low-Pressure (LP) steam turbine, the Rotor and an Exciter (EX) mover.

    Arguments

    • H::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)
    • H_hp::Float64: High pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)
    • H_ip::Float64: Intermediate pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)
    • H_lp::Float64: Low pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)
    • H_ex::Float64: Exciter inertia constant in MWs/MVA, validation range: (0, nothing)
    • D::Float64: Rotor natural damping in pu, validation range: (0, nothing)
    • D_hp::Float64: High pressure turbine natural damping in pu, validation range: (0, nothing)
    • D_ip::Float64: Intermediate pressure turbine natural damping in pu, validation range: (0, nothing)
    • D_lp::Float64: Low pressure turbine natural damping in pu, validation range: (0, nothing)
    • D_ex::Float64: Exciter natural damping in pu, validation range: (0, nothing)
    • D_12::Float64: High-Intermediate pressure turbine damping, validation range: (0, nothing)
    • D_23::Float64: Intermediate-Low pressure turbine damping, validation range: (0, nothing)
    • D_34::Float64: Low pressure turbine-Rotor damping, validation range: (0, nothing)
    • D_45::Float64: Rotor-Exciter damping, validation range: (0, nothing)
    • K_hp::Float64: High pressure turbine angle coefficient, validation range: (0, nothing)
    • K_ip::Float64: Intermediate pressure turbine angle coefficient, validation range: (0, nothing)
    • K_lp::Float64: Low pressure turbine angle coefficient, validation range: (0, nothing)
    • K_ex::Float64: Exciter angle coefficient, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    δ: rotor angle,
    +ω: rotor speed,
    +δ_hp: rotor angle of high pressure turbine,
    +ω_hp: rotor speed of high pressure turbine,
    +δ_ip: rotor angle of intermediate pressure turbine,
    +ω_ip: rotor speed of intermediate pressure turbine,
    +δ_lp: rotor angle of low pressure turbine,
    +ω_lp: rotor speed of low pressure turbine,
    +δ_ex: rotor angle of exciter,
    +ω_lp: rotor speed of exciter
    • n_states::Int: FiveMassShaft has 10 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SingleMass

    PowerSystems.SingleMassType
    mutable struct SingleMass <: Shaft
    +    H::Float64
    +    D::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of single mass shaft model. Typically represents the rotor mass.

    Arguments

    • H::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)
    • D::Float64: Rotor natural damping in pu, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states are:
    δ: rotor angle,
    +ω: rotor speed
    • n_states::Int: SingleMass has 1 state
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Source/index.html b/v3.3.0/model_library/generated_Source/index.html new file mode 100644 index 0000000000..2ea1a14f86 --- /dev/null +++ b/v3.3.0/model_library/generated_Source/index.html @@ -0,0 +1,40 @@ + +Source · PowerSystems.jl

    Source

    PowerSystems.SourceType
    mutable struct Source <: StaticInjection
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    R_th::Float64
    +    X_th::Float64
    +    internal_voltage::Float64
    +    internal_angle::Float64
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    This struct acts as an infinity bus.

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • active_power::Float64
    • reactive_power::Float64
    • R_th::Float64: Source Thevenin resistance, validation range: (0, nothing)
    • X_th::Float64: Source Thevenin reactance, validation range: (0, nothing)
    • internal_voltage::Float64: Internal Voltage, validation range: (0, nothing)
    • internal_angle::Float64: Internal Angle
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_StandardLoad/index.html b/v3.3.0/model_library/generated_StandardLoad/index.html new file mode 100644 index 0000000000..4f3b460f30 --- /dev/null +++ b/v3.3.0/model_library/generated_StandardLoad/index.html @@ -0,0 +1,90 @@ + +StandardLoad · PowerSystems.jl

    StandardLoad

    PowerSystems.StandardLoadType
    mutable struct StandardLoad <: StaticLoad
    +    name::String
    +    available::Bool
    +    bus::ACBus
    +    base_power::Float64
    +    constant_active_power::Float64
    +    constant_reactive_power::Float64
    +    impedance_active_power::Float64
    +    impedance_reactive_power::Float64
    +    current_active_power::Float64
    +    current_reactive_power::Float64
    +    max_constant_active_power::Float64
    +    max_constant_reactive_power::Float64
    +    max_impedance_active_power::Float64
    +    max_impedance_reactive_power::Float64
    +    max_current_active_power::Float64
    +    max_current_reactive_power::Float64
    +    services::Vector{Service}
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data structure for a standard load.

    Arguments

    • name::String
    • available::Bool
    • bus::ACBus
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • constant_active_power::Float64
    • constant_reactive_power::Float64
    • impedance_active_power::Float64
    • impedance_reactive_power::Float64
    • current_active_power::Float64
    • current_reactive_power::Float64
    • max_constant_active_power::Float64
    • max_constant_reactive_power::Float64
    • max_impedance_active_power::Float64
    • max_impedance_reactive_power::Float64
    • max_current_active_power::Float64
    • max_current_reactive_power::Float64
    • services::Vector{Service}: Services that this device contributes to
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_StaticReserveNonSpinning/index.html b/v3.3.0/model_library/generated_StaticReserveNonSpinning/index.html new file mode 100644 index 0000000000..be60d1dda2 --- /dev/null +++ b/v3.3.0/model_library/generated_StaticReserveNonSpinning/index.html @@ -0,0 +1,55 @@ + +StaticReserveNonSpinning · PowerSystems.jl

    StaticReserveNonSpinning

    PowerSystems.StaticReserveNonSpinningType
    mutable struct StaticReserveNonSpinning <: ReserveNonSpinning
    +    name::String
    +    available::Bool
    +    time_frame::Float64
    +    requirement::Float64
    +    sustained_time::Float64
    +    max_output_fraction::Float64
    +    max_participation_factor::Float64
    +    deployed_fraction::Float64
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for a non-spinning reserve product for system simulations.

    Arguments

    • name::String
    • available::Bool
    • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error
    • requirement::Float64: the static value of required reserves in system p.u., validation range: (0, nothing), action if invalid: error
    • sustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error
    • max_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error
    • max_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error
    • deployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_StorageManagementCost/index.html b/v3.3.0/model_library/generated_StorageManagementCost/index.html new file mode 100644 index 0000000000..c5284c7f7f --- /dev/null +++ b/v3.3.0/model_library/generated_StorageManagementCost/index.html @@ -0,0 +1,31 @@ + +StorageManagementCost · PowerSystems.jl

    StorageManagementCost

    PowerSystems.StorageManagementCostType
    mutable struct StorageManagementCost <: OperationalCost
    +    variable::VariableCost
    +    fixed::Float64
    +    start_up::Float64
    +    shut_down::Float64
    +    energy_shortage_cost::Float64
    +    energy_surplus_cost::Float64
    +end

    Data Structure for Operational Cost Data like variable cost and start - stop costs and energy storage cost.

    Arguments

    • variable::VariableCost: variable cost
    • fixed::Float64: fixed cost
    • start_up::Float64: start-up cost, validation range: (0, nothing), action if invalid: warn
    • shut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn
    • energy_shortage_cost::Float64: Cost incurred by the model for being short of the energy target., validation range: (0, nothing), action if invalid: warn
    • energy_surplus_cost::Float64: Cost incurred by the model for surplus energy stored., validation range: (0, nothing), action if invalid: warn
    source
    diff --git a/v3.3.0/model_library/generated_SwitchedAdmittance/index.html b/v3.3.0/model_library/generated_SwitchedAdmittance/index.html new file mode 100644 index 0000000000..4ee8360a2d --- /dev/null +++ b/v3.3.0/model_library/generated_SwitchedAdmittance/index.html @@ -0,0 +1,49 @@ + +SwitchedAdmittance · PowerSystems.jl

    SwitchedAdmittance

    diff --git a/v3.3.0/model_library/generated_TModelHVDCLine/index.html b/v3.3.0/model_library/generated_TModelHVDCLine/index.html new file mode 100644 index 0000000000..417c6b025f --- /dev/null +++ b/v3.3.0/model_library/generated_TModelHVDCLine/index.html @@ -0,0 +1,46 @@ + +TModelHVDCLine · PowerSystems.jl

    TModelHVDCLine

    PowerSystems.TModelHVDCLineType
    mutable struct TModelHVDCLine <: DCBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    arc::Arc
    +    r::Float64
    +    l::Float64
    +    c::Float64
    +    active_power_limits_from::MinMax
    +    active_power_limits_to::MinMax
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    a HVDC T-Model DC line.

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • arc::Arc
    • r::Float64: Series Resistance system per-unit value
    • l::Float64: Series Inductance system per-unit value
    • c::Float64: Shunt capacitance system per-unit value
    • active_power_limits_from::MinMax
    • active_power_limits_to::MinMax
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_TapTransformer/index.html b/v3.3.0/model_library/generated_TapTransformer/index.html new file mode 100644 index 0000000000..b02c063339 --- /dev/null +++ b/v3.3.0/model_library/generated_TapTransformer/index.html @@ -0,0 +1,47 @@ + +TapTransformer · PowerSystems.jl

    TapTransformer

    PowerSystems.TapTransformerType
    mutable struct TapTransformer <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    reactive_power_flow::Float64
    +    arc::Arc
    +    r::Float64
    +    x::Float64
    +    primary_shunt::Float64
    +    tap::Float64
    +    rate::Union{Nothing, Float64}
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • reactive_power_flow::Float64
    • arc::Arc
    • r::Float64: System per-unit value, validation range: (-2, 2), action if invalid: warn
    • x::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn
    • primary_shunt::Float64: System per-unit value, validation range: (0, 2), action if invalid: warn
    • tap::Float64, validation range: (0, 2), action if invalid: error
    • rate::Union{Nothing, Float64}, validation range: (0, nothing), action if invalid: error
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_ThermalMultiStart/index.html b/v3.3.0/model_library/generated_ThermalMultiStart/index.html new file mode 100644 index 0000000000..541561e6b3 --- /dev/null +++ b/v3.3.0/model_library/generated_ThermalMultiStart/index.html @@ -0,0 +1,103 @@ + +ThermalMultiStart · PowerSystems.jl

    ThermalMultiStart

    PowerSystems.ThermalMultiStartType
    mutable struct ThermalMultiStart <: ThermalGen
    +    name::String
    +    available::Bool
    +    status::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    prime_mover_type::PrimeMovers
    +    fuel::ThermalFuels
    +    active_power_limits::MinMax
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    ramp_limits::Union{Nothing, UpDown}
    +    power_trajectory::Union{Nothing, StartUpShutDown}
    +    time_limits::Union{Nothing, UpDown}
    +    start_time_limits::Union{Nothing, NamedTuple{(:hot, :warm, :cold), Tuple{Float64, Float64, Float64}}}
    +    start_types::Int
    +    operation_cost::OperationalCost
    +    base_power::Float64
    +    services::Vector{Service}
    +    time_at_status::Float64
    +    must_run::Bool
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for thermal generation technologies.

    Arguments

    • name::String
    • available::Bool
    • status::Bool
    • bus::ACBus
    • active_power::Float64, validation range: active_power_limits, action if invalid: warn
    • reactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • fuel::ThermalFuels: Prime mover fuel according to EIA 923
    • active_power_limits::MinMax
    • reactive_power_limits::Union{Nothing, MinMax}
    • ramp_limits::Union{Nothing, UpDown}, validation range: (0, nothing), action if invalid: error
    • power_trajectory::Union{Nothing, StartUpShutDown}: Power trajectory the unit will take during the start-up and shut-down ramp process, validation range: (0, nothing), action if invalid: error
    • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error
    • start_time_limits::Union{Nothing, NamedTuple{(:hot, :warm, :cold), Tuple{Float64, Float64, Float64}}}: Time limits for start-up based on turbine temperature in hours
    • start_types::Int: Number of start-up based on turbine temperature, validation range: (1, 3), action if invalid: error
    • operation_cost::OperationalCost
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • services::Vector{Service}: Services that this device contributes to
    • time_at_status::Float64
    • must_run::Bool
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_ThermalStandard/index.html b/v3.3.0/model_library/generated_ThermalStandard/index.html new file mode 100644 index 0000000000..537fed9a08 --- /dev/null +++ b/v3.3.0/model_library/generated_ThermalStandard/index.html @@ -0,0 +1,85 @@ + +ThermalStandard · PowerSystems.jl

    ThermalStandard

    PowerSystems.ThermalStandardType
    mutable struct ThermalStandard <: ThermalGen
    +    name::String
    +    available::Bool
    +    status::Bool
    +    bus::ACBus
    +    active_power::Float64
    +    reactive_power::Float64
    +    rating::Float64
    +    active_power_limits::MinMax
    +    reactive_power_limits::Union{Nothing, MinMax}
    +    ramp_limits::Union{Nothing, UpDown}
    +    operation_cost::OperationalCost
    +    base_power::Float64
    +    time_limits::Union{Nothing, UpDown}
    +    must_run::Bool
    +    prime_mover_type::PrimeMovers
    +    fuel::ThermalFuels
    +    services::Vector{Service}
    +    time_at_status::Float64
    +    dynamic_injector::Union{Nothing, DynamicInjection}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for thermal generation technologies.

    Arguments

    • name::String
    • available::Bool
    • status::Bool
    • bus::ACBus
    • active_power::Float64, validation range: active_power_limits, action if invalid: warn
    • reactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn
    • rating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error
    • active_power_limits::MinMax, validation range: (0, nothing), action if invalid: warn
    • reactive_power_limits::Union{Nothing, MinMax}
    • ramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error
    • operation_cost::OperationalCost
    • base_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn
    • time_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error
    • must_run::Bool
    • prime_mover_type::PrimeMovers: Prime mover technology according to EIA 923
    • fuel::ThermalFuels: Prime mover fuel according to EIA 923
    • services::Vector{Service}: Services that this device contributes to
    • time_at_status::Float64
    • dynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_ThreePartCost/index.html b/v3.3.0/model_library/generated_ThreePartCost/index.html new file mode 100644 index 0000000000..98c862ede4 --- /dev/null +++ b/v3.3.0/model_library/generated_ThreePartCost/index.html @@ -0,0 +1,15 @@ + +ThreePartCost · PowerSystems.jl

    ThreePartCost

    PowerSystems.ThreePartCostType
    mutable struct ThreePartCost <: OperationalCost
    +    variable::VariableCost
    +    fixed::Float64
    +    start_up::Float64
    +    shut_down::Float64
    +end

    Data Structure Operational Cost Data in Three parts fixed, variable cost and start - stop costs.

    Arguments

    • variable::VariableCost: variable cost
    • fixed::Float64: fixed cost
    • start_up::Float64: start-up cost, validation range: (0, nothing), action if invalid: warn
    • shut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn
    source
    diff --git a/v3.3.0/model_library/generated_Transfer/index.html b/v3.3.0/model_library/generated_Transfer/index.html new file mode 100644 index 0000000000..534e3c7fdf --- /dev/null +++ b/v3.3.0/model_library/generated_Transfer/index.html @@ -0,0 +1,20 @@ + +Transfer · PowerSystems.jl

    Transfer

    PowerSystems.TransferType
    mutable struct Transfer <: Service
    +    name::String
    +    available::Bool
    +    requirement::Float64
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Arguments

    • name::String
    • available::Bool
    • requirement::Float64
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_Transformer2W/index.html b/v3.3.0/model_library/generated_Transformer2W/index.html new file mode 100644 index 0000000000..3a644af41c --- /dev/null +++ b/v3.3.0/model_library/generated_Transformer2W/index.html @@ -0,0 +1,41 @@ + +Transformer2W · PowerSystems.jl

    Transformer2W

    PowerSystems.Transformer2WType
    mutable struct Transformer2W <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    reactive_power_flow::Float64
    +    arc::Arc
    +    r::Float64
    +    x::Float64
    +    primary_shunt::Float64
    +    rate::Union{Nothing, Float64}
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    The 2-W transformer model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side.

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • reactive_power_flow::Float64
    • arc::Arc
    • r::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn
    • x::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn
    • primary_shunt::Float64: System per-unit value, validation range: (0, 2), action if invalid: warn
    • rate::Union{Nothing, Float64}, validation range: (0, nothing), action if invalid: error
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_TransmissionInterface/index.html b/v3.3.0/model_library/generated_TransmissionInterface/index.html new file mode 100644 index 0000000000..40b9b8e1d7 --- /dev/null +++ b/v3.3.0/model_library/generated_TransmissionInterface/index.html @@ -0,0 +1,41 @@ + +TransmissionInterface · PowerSystems.jl

    TransmissionInterface

    PowerSystems.TransmissionInterfaceType
    mutable struct TransmissionInterface <: Service
    +    name::String
    +    available::Bool
    +    active_power_flow_limits::MinMax
    +    violation_penalty::Float64
    +    direction_mapping::Dict{String, Int}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    A collection of branches that make up an interface or corridor for the transfer of power.

    Arguments

    • name::String
    • available::Bool
    • active_power_flow_limits::MinMax
    • violation_penalty::Float64: Penalty for violating the flow limits in the interface
    • direction_mapping::Dict{String, Int}: Map to set of multiplier to the flow in the line for cases when the line has a reverse direction with respect to the interface
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_TurbineGov/index.html b/v3.3.0/model_library/generated_TurbineGov/index.html new file mode 100644 index 0000000000..f6e7f5bb30 --- /dev/null +++ b/v3.3.0/model_library/generated_TurbineGov/index.html @@ -0,0 +1,487 @@ + +TurbineGov · PowerSystems.jl

    TurbineGov

    DEGOV

    PowerSystems.DEGOVType
    mutable struct DEGOV <: TurbineGov
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    K::Float64
    +    T4::Float64
    +    T5::Float64
    +    T6::Float64
    +    Td::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters Woodward Diesel Governor Model. DEGOV in PowerWorld.

    Arguments

    • T1::Float64: Governor mechanism time constant, validation range: (eps(), 100)
    • T2::Float64: Turbine power time constant, validation range: (eps(), 100)
    • T3::Float64: Turbine exhaust temperature time constant, validation range: (eps(), 100)
    • K::Float64: Governor gain (reciprocal of droop), validation range: (eps(), 100)
    • T4::Float64: Governor lead time constant, validation range: (eps(), 100)
    • T5::Float64: Governor lag time constant, validation range: (eps(), 100)
    • T6::Float64: Actuator time constant, validation range: (eps(), 100)
    • Td::Float64: Engine time delay, validation range: (eps(), 100)
    • P_ref::Float64: Reference Load Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the DEGOV model are:
    x_ecb1: Electric control box 1,
    +x_ecb2: Electric control box 2,
    +x_a1: Actuator 1,
    +x_a2: Actuator 2,
    +x_a3: Actuator 3,
    • n_states::Int: DEGOV has 5 states
    • states_types::Vector{StateTypes}: DEGOV has 5 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    GasTG

    PowerSystems.GasTGType
    mutable struct GasTG <: TurbineGov
    +    R::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    AT::Float64
    +    Kt::Float64
    +    V_lim::Tuple{Float64, Float64}
    +    D_turb::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of Gas Turbine-Governor. GAST in PSSE and GAST_PTI in PowerWorld.

    Arguments

    • R::Float64: Speed droop parameter, validation range: (eps(), 0.1)
    • T1::Float64: Governor time constant in s, validation range: (eps(), 0.5)
    • T2::Float64: Combustion chamber time constant, validation range: (eps(), 0.5)
    • T3::Float64: Load limit time constant (exhaust gas measurement time), validation range: (eps(), 5)
    • AT::Float64: Ambient temperature load limit, validation range: (0, 1)
    • Kt::Float64: Load limit feedback gain, validation range: (0, 5)
    • V_lim::Tuple{Float64, Float64}: Operational control limits on fuel valve opening (Vmin, Vmax)
    • D_turb::Float64: Speed damping coefficient of gas turbine rotor, validation range: (0, 0.5)
    • P_ref::Float64: Reference Load Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the GAST model are:
    x_g1: Fuel valve opening,
    +x_g2: Fuel flow,
    +x_g3: Exhaust temperature load
    • n_states::Int: GasTG has 3 states
    • states_types::Vector{StateTypes}: GAST has 3 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    GeneralGovModel

    PowerSystems.GeneralGovModelType
    mutable struct GeneralGovModel <: TurbineGov
    +    Rselect::Int
    +    fuel_flag::Int
    +    R::Float64
    +    Tpelec::Float64
    +    speed_error_signal::MinMax
    +    Kp_gov::Float64
    +    Ki_gov::Float64
    +    Kd_gov::Float64
    +    Td_gov::Float64
    +    valve_position_limits::MinMax
    +    T_act::Float64
    +    K_turb::Float64
    +    Wf_nl::Float64
    +    Tb::Float64
    +    Tc::Float64
    +    T_eng::Float64
    +    Tf_load::Float64
    +    Kp_load::Float64
    +    Ki_load::Float64
    +    Ld_ref::Float64
    +    Dm::Float64
    +    R_open::Float64
    +    R_close::Float64
    +    Ki_mw::Float64
    +    A_set::Float64
    +    Ka::Float64
    +    Ta::Float64
    +    T_rate::Float64
    +    db::Float64
    +    Tsa::Float64
    +    Tsb::Float64
    +    R_lim::UpDown
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    GE General Governor/Turbine Model. The GeneralGovModel (GGOV1) model is a general purpose governor model used for a variety of prime movers controlled by proportional-integral-derivative (PID) governors including gas turbines.

    Arguments

    • Rselect::Int: Feedback signal for governor droop, validation range: (-2, 1), action if invalid: error
    • fuel_flag::Int: Flag Switch for fuel source characteristic, validation range: (0, 1), action if invalid: error
    • R::Float64: Speed droop parameter, validation range: (eps(), nothing), action if invalid: warn
    • Tpelec::Float64: Electrical power transducer time constant, seconds, validation range: (eps(), nothing), action if invalid: warn
    • speed_error_signal::MinMax: Speed error signal limits
    • Kp_gov::Float64: Governor proportional gain, validation range: (0, nothing), action if invalid: warn
    • Ki_gov::Float64: Governor integral gain, validation range: (0, nothing), action if invalid: warn
    • Kd_gov::Float64: Governor derivative gain, validation range: (0, nothing), action if invalid: warn
    • Td_gov::Float64: Governor derivative time constant, validation range: (0, nothing), action if invalid: warn
    • valve_position_limits::MinMax: Valve position limits
    • T_act::Float64: Actuator time constant, validation range: (0, nothing), action if invalid: warn
    • K_turb::Float64: Turbine gain, validation range: (0, nothing), action if invalid: warn
    • Wf_nl::Float64: No load fuel flow, pu, validation range: (0, nothing), action if invalid: warn
    • Tb::Float64: Turbine lag time constant, sec, validation range: (0, nothing), action if invalid: warn
    • Tc::Float64: Turbine lead time constant, sec, validation range: (0, nothing), action if invalid: warn
    • T_eng::Float64: Transport lag time constant for diesel engine, sec, validation range: (0, nothing), action if invalid: warn
    • Tf_load::Float64: Load limiter time constant, validation range: (0, nothing), action if invalid: warn
    • Kp_load::Float64: Load limiter proportional gain for PI controller, validation range: (0, nothing), action if invalid: warn
    • Ki_load::Float64: Load integral gain for PI controller, validation range: (0, nothing), action if invalid: warn
    • Ld_ref::Float64: Load limiter integral gain for PI controller, validation range: (0, nothing), action if invalid: warn
    • Dm::Float64: Mechanical damping coefficient, pu, validation range: (0, nothing), action if invalid: warn
    • R_open::Float64: Maximum valve opening rate, pu/sec, validation range: (0, nothing), action if invalid: warn
    • R_close::Float64: Maximum valve closing rate, pu/sec, validation range: (0, nothing), action if invalid: warn
    • Ki_mw::Float64: Power controller (reset) gain, validation range: (0, nothing), action if invalid: warn
    • A_set::Float64: Acceleration limiter setpoint, pu/sec, validation range: (0, nothing), action if invalid: warn
    • Ka::Float64: Acceleration limiter gain, validation range: (0, nothing), action if invalid: warn
    • Ta::Float64: Acceleration limiter time constant , validation range: (eps(), nothing), action if invalid: error
    • T_rate::Float64: Turbine rating, validation range: (0, nothing), action if invalid: warn
    • db::Float64: Speed governor deadband, validation range: (0, nothing), action if invalid: warn
    • Tsa::Float64: Temperature detection lead time constant, validation range: (0, nothing), action if invalid: warn
    • Tsb::Float64: Temperature detection lag time constant, validation range: (0, nothing), action if invalid: warn
    • R_lim::UpDown: Maximum rate of load increa
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the GGOV1 model are:
    Pe: Machine Electrical Power Measurement,
    +x_g1: Governor differential control,
    +x_g2: Governor integral control, 
    +x_g3: Turbine actuator, 
    +x_g4: Turbine Lead-Lag, 
    +x_g5: Turbine load limiter measurement, 
    +x_g6: Turbine Load Limiter Integral Control, 
    +x_g7: Supervisory Load Control, 
    +x_g8: Acceleration Control, 
    +x_g9 Temperature Detection Lead - Lag:
    • n_states::Int: GeneralGovModel has 10 states
    • states_types::Vector{StateTypes}: GGOV1 has 10 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    HydroTurbineGov

    PowerSystems.HydroTurbineGovType
    mutable struct HydroTurbineGov <: TurbineGov
    +    R::Float64
    +    r::Float64
    +    Tr::Float64
    +    Tf::Float64
    +    Tg::Float64
    +    VELM::Float64
    +    gate_position_limits::MinMax
    +    Tw::Float64
    +    At::Float64
    +    D_T::Float64
    +    q_nl::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Hydro Turbine-Governor.

    Arguments

    • R::Float64: Permanent droop parameter, validation range: (0, 0.1), action if invalid: warn
    • r::Float64: Temporary Droop, validation range: (0, 2), action if invalid: warn
    • Tr::Float64: Governor time constant, validation range: (eps(), 30), action if invalid: error
    • Tf::Float64: Filter Time constant, validation range: (eps(), 0.1)
    • Tg::Float64: Servo time constant, validation range: (eps(), 1), action if invalid: error
    • VELM::Float64: gate velocity limit, validation range: (eps(), 0.3), action if invalid: error
    • gate_position_limits::MinMax: Gate position limits
    • Tw::Float64: water time constant, validation range: (eps(), 3), action if invalid: error
    • At::Float64: Turbine gain, validation range: (0.8, 1.5), action if invalid: warn
    • D_T::Float64: Turbine Damping, validation range: (0, 0.5), action if invalid: warn
    • q_nl::Float64: No-power flow, validation range: (0, nothing), action if invalid: warn
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the HydroTurbineGov model are:
    x_g1: filter_output,
    +x_g2: desired gate, 
    +x_g3: gate opening, 
    +x_g4: turbine flow
    • n_states::Int: HYGOV has 4 states
    • states_types::Vector{StateTypes}: HYGOV has 4 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    IEEETurbineGov1

    PowerSystems.IEEETurbineGov1Type
    mutable struct IEEETurbineGov1 <: TurbineGov
    +    K::Float64
    +    T1::Float64
    +    T2::Float64
    +    T3::Float64
    +    U0::Float64
    +    U_c::Float64
    +    valve_position_limits::MinMax
    +    T4::Float64
    +    K1::Float64
    +    K2::Float64
    +    T5::Float64
    +    K3::Float64
    +    K4::Float64
    +    T6::Float64
    +    K5::Float64
    +    K6::Float64
    +    T7::Float64
    +    K7::Float64
    +    K8::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    IEEE Type 1 Speed-Governing Model

    Arguments

    • K::Float64: Governor Gain, validation range: (5, 30), action if invalid: warn
    • T1::Float64: Input Filter Lag, validation range: (0, 5), action if invalid: warn
    • T2::Float64: Input Filter Lead, validation range: (0, 10), action if invalid: warn
    • T3::Float64: Valve position Time Constant, validation range: (eps(), 1), action if invalid: error
    • U0::Float64: Maximum Valve Opening Rate, validation range: (0.01, 0.03), action if invalid: warn
    • U_c::Float64: Maximum Valve closing rate, validation range: (-0.3, 0), action if invalid: warn
    • valve_position_limits::MinMax: Valve position limits in MW
    • T4::Float64: Time Constant inlet steam, validation range: (0, 1), action if invalid: warn
    • K1::Float64: Fraction of high presure shaft power, validation range: (-2, 1), action if invalid: warn
    • K2::Float64: Fraction of low presure shaft power, validation range: (0, nothing), action if invalid: warn
    • T5::Float64: Time constant for second boiler pass, validation range: (0, 10), action if invalid: warn
    • K3::Float64: Fraction of high presure shaft power second boiler pass, validation range: (0, 0.5), action if invalid: warn
    • K4::Float64: Fraction of low presure shaft power second boiler pass, validation range: (0, 0.5), action if invalid: warn
    • T6::Float64: Time constant for third boiler pass, validation range: (0, 10), action if invalid: warn
    • K5::Float64: Fraction of high presure shaft power third boiler pass, validation range: (0, 0.35), action if invalid: warn
    • K6::Float64: Fraction of low presure shaft power third boiler pass, validation range: (0, 0.55), action if invalid: warn
    • T7::Float64: Time constant for fourth boiler pass, validation range: (0, 10), action if invalid: warn
    • K7::Float64: Fraction of high presure shaft power fourth boiler pass, validation range: (0, 0.3), action if invalid: warn
    • K8::Float64: Fraction of low presure shaft power fourth boiler pass, validation range: (0, 0.3), action if invalid: warn
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the IEEETurbineGov model are:
    x_g1: First Governor integrator,
    +x_g2: Governor output,
    +x_g3: First Turbine integrator, 
    +x_g4: Second Turbine Integrator, 
    +x_g5: Third Turbine Integrator, 
    +x_g6: Fourth Turbine Integrator,
    • n_states::Int: IEEEG1 has 6 states
    • states_types::Vector{StateTypes}: IEEEG1 has 6 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    SteamTurbineGov1

    PowerSystems.SteamTurbineGov1Type
    mutable struct SteamTurbineGov1 <: TurbineGov
    +    R::Float64
    +    T1::Float64
    +    valve_position_limits::MinMax
    +    T2::Float64
    +    T3::Float64
    +    D_T::Float64
    +    DB_h::Float64
    +    DB_l::Float64
    +    T_rate::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    states_types::Vector{StateTypes}
    +    internal::InfrastructureSystemsInternal
    +end

    Steam Turbine-Governor. This model considers both TGOV1 or TGOV1DU in PSS/E.

    Arguments

    • R::Float64: Droop parameter, validation range: (0, 0.1), action if invalid: warn
    • T1::Float64: Governor time constant, validation range: (eps(), 0.5), action if invalid: error
    • valve_position_limits::MinMax: Valve position limits
    • T2::Float64: Lead Lag Lead Time constant , validation range: (0, nothing), action if invalid: warn
    • T3::Float64: Lead Lag Lag Time constant , validation range: (eps(), 10), action if invalid: error
    • D_T::Float64: Turbine Damping, validation range: (0, 0.5), action if invalid: warn
    • DB_h::Float64: Deadband for overspeed, validation range: (0, nothing), action if invalid: warn
    • DB_l::Float64: Deadband for underspeed, validation range: (nothing, 0), action if invalid: warn
    • T_rate::Float64: Turbine Rate (MW). If zero, generator base is used., validation range: (0, nothing), action if invalid: warn
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the SteamTurbineGov1 model are:
    x_g1: Valve Opening,
    +x_g2: Lead-lag state
    • n_states::Int: TGOV1 has 2 states
    • states_types::Vector{StateTypes}: TGOV1 has 2 differential states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    TGFixed

    PowerSystems.TGFixedType
    mutable struct TGFixed <: TurbineGov
    +    efficiency::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a fixed Turbine Governor that returns a fixed mechanical torque given by the product of P_ref*efficiency

    Arguments

    • efficiency::Float64: Efficiency factor that multiplies P_ref, validation range: (0, nothing)
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}
    • n_states::Int: TGFixed has no states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    TGTypeI

    PowerSystems.TGTypeIType
    mutable struct TGTypeI <: TurbineGov
    +    R::Float64
    +    Ts::Float64
    +    Tc::Float64
    +    T3::Float64
    +    T4::Float64
    +    T5::Float64
    +    valve_position_limits::MinMax
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a Turbine Governor Type I.

    Arguments

    • R::Float64: Droop parameter, validation range: (0, nothing)
    • Ts::Float64: Governor time constant, validation range: (0, nothing)
    • Tc::Float64: Servo time constant, validation range: (0, nothing)
    • T3::Float64: Transient gain time constant, validation range: (0, nothing)
    • T4::Float64: Power fraction time constant, validation range: (0, nothing)
    • T5::Float64: Reheat time constant, validation range: (0, nothing)
    • valve_position_limits::MinMax: Valve position limits in MW
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the TGTypeI model are:
    x_g1: Governor state,
    +x_g2: Servo state,
    +x_g3: Reheat state
    • n_states::Int: TGTypeI has 3 states
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    TGTypeII

    PowerSystems.TGTypeIIType
    mutable struct TGTypeII <: TurbineGov
    +    R::Float64
    +    T1::Float64
    +    T2::Float64
    +    τ_limits::MinMax
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +    internal::InfrastructureSystemsInternal
    +end

    Parameters of a Turbine Governor Type II.

    Arguments

    • R::Float64: Droop parameter, validation range: (0, nothing)
    • T1::Float64: Transient gain time constant, validation range: (0, nothing)
    • T2::Float64: Power fraction time constant, validation range: (0, nothing)
    • τ_limits::MinMax: Power into the governor limits
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the TGTypeI model are:
    x_g1: lead-lag state
    • n_states::Int: TGTypeII has 1 state
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_TwoPartCost/index.html b/v3.3.0/model_library/generated_TwoPartCost/index.html new file mode 100644 index 0000000000..19b4ee9996 --- /dev/null +++ b/v3.3.0/model_library/generated_TwoPartCost/index.html @@ -0,0 +1,9 @@ + +TwoPartCost · PowerSystems.jl

    TwoPartCost

    PowerSystems.TwoPartCostType
    mutable struct TwoPartCost <: OperationalCost
    +    variable::VariableCost
    +    fixed::Float64
    +end

    Data Structure Operational Cost Data in two parts: fixed and variable cost.

    Arguments

    • variable::VariableCost: variable cost
    • fixed::Float64: fixed cost, validation range: (0, nothing), action if invalid: warn
    source
    diff --git a/v3.3.0/model_library/generated_TwoTerminalHVDCLine/index.html b/v3.3.0/model_library/generated_TwoTerminalHVDCLine/index.html new file mode 100644 index 0000000000..ab721aa318 --- /dev/null +++ b/v3.3.0/model_library/generated_TwoTerminalHVDCLine/index.html @@ -0,0 +1,69 @@ + +TwoTerminalHVDCLine · PowerSystems.jl

    TwoTerminalHVDCLine

    PowerSystems.TwoTerminalHVDCLineType
    mutable struct TwoTerminalHVDCLine <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    arc::Arc
    +    active_power_limits_from::MinMax
    +    active_power_limits_to::MinMax
    +    reactive_power_limits_from::MinMax
    +    reactive_power_limits_to::MinMax
    +    loss::NamedTuple{(:l0, :l1), Tuple{Float64, Float64}}
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    a High voltage DC line.

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • arc::Arc
    • active_power_limits_from::MinMax
    • active_power_limits_to::MinMax
    • reactive_power_limits_from::MinMax
    • reactive_power_limits_to::MinMax
    • loss::NamedTuple{(:l0, :l1), Tuple{Float64, Float64}}
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_TwoTerminalVSCDCLine/index.html b/v3.3.0/model_library/generated_TwoTerminalVSCDCLine/index.html new file mode 100644 index 0000000000..85bf89829e --- /dev/null +++ b/v3.3.0/model_library/generated_TwoTerminalVSCDCLine/index.html @@ -0,0 +1,70 @@ + +TwoTerminalVSCDCLine · PowerSystems.jl

    TwoTerminalVSCDCLine

    PowerSystems.TwoTerminalVSCDCLineType
    mutable struct TwoTerminalVSCDCLine <: ACBranch
    +    name::String
    +    available::Bool
    +    active_power_flow::Float64
    +    arc::Arc
    +    rectifier_tap_limits::MinMax
    +    rectifier_xrc::Float64
    +    rectifier_firing_angle::MinMax
    +    inverter_tap_limits::MinMax
    +    inverter_xrc::Float64
    +    inverter_firing_angle::MinMax
    +    services::Vector{Service}
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    As implemented in Milano's Book, Page 397.

    Arguments

    • name::String
    • available::Bool
    • active_power_flow::Float64
    • arc::Arc
    • rectifier_tap_limits::MinMax
    • rectifier_xrc::Float64
    • rectifier_firing_angle::MinMax
    • inverter_tap_limits::MinMax
    • inverter_xrc::Float64
    • inverter_firing_angle::MinMax
    • services::Vector{Service}: Services that this device contributes to
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/generated_VariableReserveNonSpinning/index.html b/v3.3.0/model_library/generated_VariableReserveNonSpinning/index.html new file mode 100644 index 0000000000..1ae1760709 --- /dev/null +++ b/v3.3.0/model_library/generated_VariableReserveNonSpinning/index.html @@ -0,0 +1,69 @@ + +VariableReserveNonSpinning · PowerSystems.jl

    VariableReserveNonSpinning

    PowerSystems.VariableReserveNonSpinningType
    mutable struct VariableReserveNonSpinning <: ReserveNonSpinning
    +    name::String
    +    available::Bool
    +    time_frame::Float64
    +    requirement::Float64
    +    sustained_time::Float64
    +    max_output_fraction::Float64
    +    max_participation_factor::Float64
    +    deployed_fraction::Float64
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for the procurement products for system simulations.

    Arguments

    • name::String
    • available::Bool
    • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error
    • requirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData
    • sustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error
    • max_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error
    • max_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error
    • deployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/model_library/outer_control/index.html b/v3.3.0/model_library/outer_control/index.html new file mode 100644 index 0000000000..caef8b6a66 --- /dev/null +++ b/v3.3.0/model_library/outer_control/index.html @@ -0,0 +1,49 @@ + +OuterControl · PowerSystems.jl

    OuterControl

    The outer control is composed by the ReactivePowerControl and the ActivePowerControl types.

    PowerSystems.OuterControlType
    mutable struct OuterControl{
    +    A <: ActivePowerControl,
    +    R <: ReactivePowerControl
    +} <: DynamicInverterComponent
    +    active_power_control::A
    +    reactive_power_control::R
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a Outer-Loop controller using a active power controller and a reactive power droop controller.

    Arguments

    • A <: ActivePowerControl: Active power controller (typically droop or virtual inertia).
    • R <: ReactivePowerControl: Reactive power controller (typically droop).
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: Vector of states (will depend on the components).
    • n_states::Int: Number of states (will depend on the components).
    source

    Virtual Inertia

    PowerSystems.VirtualInertiaType
    mutable struct VirtualInertia <: ActivePowerControl
    +    Ta::Float64
    +    kd::Float64
    +    kω::Float64
    +    P_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a Virtual Inertia with SRF using VSM for active power controller

    Arguments

    • Ta::Float64: VSM inertia constant, validation range: (0, nothing)
    • kd::Float64: VSM damping constant, validation range: (0, nothing)
    • kω::Float64: frequency droop gain, validation range: (0, nothing)
    • P_ref::Float64: Reference Power Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the VirtualInertia model are:
    θ_oc: Phase angle displacement of the virtual synchronous generator model
    +ω_oc: Speed of the rotating reference frame of the virtual synchronous generator model
    • n_states::Int: VirtualInertia has two states
    source

    Reactive Power Droop

    PowerSystems.ReactivePowerDroopType
    mutable struct ReactivePowerDroop <: ReactivePowerControl
    +    kq::Float64
    +    ωf::Float64
    +    V_ref::Float64
    +    ext::Dict{String, Any}
    +    states::Vector{Symbol}
    +    n_states::Int
    +end

    Parameters of a Reactive Power droop controller

    Arguments

    • kq::Float64: frequency droop gain, validation range: (0, nothing)
    • ωf::Float64: filter frequency cutoff, validation range: (0, nothing)
    • V_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)
    • ext::Dict{String, Any}
    • states::Vector{Symbol}: The states of the ReactivePowerDroop model are:
    q_oc: Filtered reactive output power
    • n_states::Int: ReactivePowerDroop has 1 state
    source
    diff --git a/v3.3.0/model_library/regulation_device/index.html b/v3.3.0/model_library/regulation_device/index.html new file mode 100644 index 0000000000..f6c29888b7 --- /dev/null +++ b/v3.3.0/model_library/regulation_device/index.html @@ -0,0 +1,2 @@ + +Regulation Device · PowerSystems.jl
    diff --git a/v3.3.0/model_library/reserves/index.html b/v3.3.0/model_library/reserves/index.html new file mode 100644 index 0000000000..1f3a999ad9 --- /dev/null +++ b/v3.3.0/model_library/reserves/index.html @@ -0,0 +1,136 @@ + +Reserves · PowerSystems.jl

    Reserves

    Static Reserve

    PowerSystems.StaticReserveType
    mutable struct StaticReserve{T <: ReserveDirection} <: Reserve{T}
    +    name::String
    +    available::Bool
    +    time_frame::Float64
    +    requirement::Float64
    +    sustained_time::Float64
    +    max_output_fraction::Float64
    +    max_participation_factor::Float64
    +    deployed_fraction::Float64
    +    ext::Dict{String, Any}
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for a proportional reserve product for system simulations.

    Arguments

    • name::String
    • available::Bool
    • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error
    • requirement::Float64: the static value of required reserves in system p.u., validation range: (0, nothing), action if invalid: error
    • sustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error
    • max_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error
    • max_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error
    • deployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error
    • ext::Dict{String, Any}
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    Static Reserve Group

    PowerSystems.StaticReserveGroupType
    mutable struct StaticReserveGroup{T <: ReserveDirection} <: Service
    +    name::String
    +    available::Bool
    +    requirement::Float64
    +    ext::Dict{String, Any}
    +    contributing_services::Vector{Service}
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for a group reserve product for system simulations.

    Arguments

    • name::String
    • available::Bool
    • requirement::Float64: the static value of required reserves in system p.u., validation range: (0, nothing), action if invalid: error
    • ext::Dict{String, Any}
    • contributing_services::Vector{Service}: Services that contribute for this requirement constraint
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    Variable Reserve

    PowerSystems.VariableReserveType
    mutable struct VariableReserve{T <: ReserveDirection} <: Reserve{T}
    +    name::String
    +    available::Bool
    +    time_frame::Float64
    +    requirement::Float64
    +    sustained_time::Float64
    +    max_output_fraction::Float64
    +    max_participation_factor::Float64
    +    deployed_fraction::Float64
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for the procurement products for system simulations.

    Arguments

    • name::String
    • available::Bool
    • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error
    • requirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData
    • sustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error
    • max_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error
    • max_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error
    • deployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source

    Reserve Demand Curve

    PowerSystems.ReserveDemandCurveType
    mutable struct ReserveDemandCurve{T <: ReserveDirection} <: Reserve{T}
    +    variable::Union{Nothing, IS.TimeSeriesKey}
    +    name::String
    +    available::Bool
    +    time_frame::Float64
    +    sustained_time::Float64
    +    max_participation_factor::Float64
    +    deployed_fraction::Float64
    +    ext::Dict{String, Any}
    +    time_series_container::InfrastructureSystems.TimeSeriesContainer
    +    internal::InfrastructureSystemsInternal
    +end

    Data Structure for a operating reserve with demand curve product for system simulations.

    Arguments

    • variable::Union{Nothing, IS.TimeSeriesKey}: Variable Cost TimeSeriesKey
    • name::String
    • available::Bool
    • time_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error
    • sustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error
    • max_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error
    • deployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error
    • ext::Dict{String, Any}
    • time_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage
    • internal::InfrastructureSystemsInternal: power system internal reference, do not modify
    source
    diff --git a/v3.3.0/modeler_guide/enumerated_types/index.html b/v3.3.0/modeler_guide/enumerated_types/index.html new file mode 100644 index 0000000000..2d5ecdbd8a --- /dev/null +++ b/v3.3.0/modeler_guide/enumerated_types/index.html @@ -0,0 +1,2 @@ + +Enumerated Types · PowerSystems.jl

    Enumerated Types

    To specify fields representing an option from a pre-defined list, some of the fields of Component structs are specified with IS.scoped_enums (e.g. set_fuel!(gen, ThermalFuels.COAL)). Below are the enumerated types contained in PowerSystems.

    ThermalFuels

    Each ThermalGen generator struct contains a field for fuel::ThermalFuels where ThermalFuels are intended to reflect the options denoted by the Aggregated Fuel Codes from the EIA Annual Energy Review. Specifically, ThermalFuels is an enumerated type with the following options:

    EnumNameEIA Fuel CodeDescription
    COALCOLAnthracite Coal and Bituminous Coal
    WASTE_COALWOCWaste/Other Coal (includes anthracite culm, gob, fine coal, lignite waste, waste coal)
    DISTILLATE_FUEL_OILDFODistillate Fuel Oil (Diesel, No. 1, No. 2, and No. 4)
    WASTE_OILWOOWaste Oil Kerosene and JetFuel Butane, Propane
    PETROLEUM_COKEPCPetroleum Coke
    RESIDUAL_FUEL_OILRFOResidual Fuel Oil (No. 5, No. 6 Fuel Oils, and Bunker Oil)
    NATURAL_GASNGNatural Gas
    OTHER_GASOOGOther Gas and blast furnace gas
    NUCLEARNUCNuclear Fission (Uranium, Plutonium, Thorium)
    AG_BIPRODUCTORWAgricultural Crop Byproducts/Straw/Energy Crops
    MUNICIPAL_WASTEMLGMunicipal Solid Waste – Biogenic component
    WOOD_WASTEWWWWood Waste Liquids excluding Black Liquor (BLQ) (Includes red liquor, sludge wood, spent sulfite liquor, and other wood-based liquids)
    GEOTHERMALGEOGeothermal
    OTHEROTHOther

    PrimeMovers

    Each generator struct contains a field for prime_mover::PrimeMovers where PrimeMovers are intended to reflect the options denoted by EIA form 923. Specifically, PrimeMovers is an enumerated type with the following options:

    EnumNameDescription
    BAEnergy Storage, Battery
    BTTurbines Used in a Binary Cycle (including those used for geothermal applications)
    CACombined-Cycle – Steam Part
    CCCombined-Cycle - Aggregated Plant *augmentation of EIA
    CEEnergy Storage, Compressed Air
    CPEnergy Storage, Concentrated Solar Power
    CSCombined-Cycle Single-Shaft Combustion turbine and steam turbine share a single generator
    CTCombined-Cycle Combustion Turbine Part
    ESEnergy Storage, Other
    FCFuel Cell
    FWEnergy Storage, Flywheel
    GTCombustion (Gas) Turbine (including jet engine design)
    HAHydrokinetic, Axial Flow Turbine
    HBHydrokinetic, Wave Buoy
    HKHydrokinetic, Other
    HYHydraulic Turbine (including turbines associated with delivery of water by pipeline)
    ICInternal Combustion (diesel, piston, reciprocating) Engine
    PSEnergy Storage, Reversible Hydraulic Turbine (Pumped Storage)
    OTOther
    STSteam Turbine (including nuclear, geothermal and solar steam; does not include combined-cycle turbine)
    PVPhotovoltaic *renaming from EIA PV to PVe to avoid conflict with ACBusType.PV
    WTWind Turbine, Onshore
    WSWind Turbine, Offshore

    ACBusTypes

    ACBusTypes is used to denote which quantities are specified for load flow calculations and to otherwise categorize buses for modeling activities.

    EnumNameDescription
    ISOLATEDDisconnected from network
    PQActive and reactive power defined (load bus)
    PVActive power and voltage magnitude defined (generator bus)
    REFReference bus (θ = 0)
    SLACKSlack bus

    AngleUnits

    EnumName
    DEGREES
    RADIANS

    StateTypes

    EnumName
    Differential
    Algebraic
    Hybrid
    diff --git a/v3.3.0/modeler_guide/example_dynamic_data/index.html b/v3.3.0/modeler_guide/example_dynamic_data/index.html new file mode 100644 index 0000000000..dddd56446a --- /dev/null +++ b/v3.3.0/modeler_guide/example_dynamic_data/index.html @@ -0,0 +1,2 @@ + +Dynamic Devices · PowerSystems.jl

    Dynamic Devices

    Each sub-type is composed of the corresponding dynamic components that define the model. As a result, it is possible to flexibly define dynamic data models and methods according to the analysis requirements. DynamicInjection components use parametric a parametric type pattern to materialize the full specification of the dynamic injection model with parameters. This design enable the use of parametric methods to specify the mathematical model of the dynamic components separately.

    DynamicInjection components also implement some additional information useful for the modeling like the usual states assumed by the model and the number. These values are derived from the documentation associated with the model, for instance PSS/e models provide parameters, states and variables. Although PowerSystems.jl doesn't assume a specific mathematical model for the components, the default values for these parameters are derived directly from the data model source.

    Dynamic Generator

    Each generator is a data structure that is defined by the following components:

    Each inverter is a data structure that is defined by the following components:

    • DC Source: Defines the dynamics of the DC side of the converter.
    • Frequency Estimator: That describes how the frequency of the grid can be estimated using the grid voltages. Typically a phase-locked loop (PLL).
    • Outer Loop Control: That describes the active and reactive power control dynamics.
    • Inner Loop Control: That can describe virtual impedance, voltage control and current control dynamics.
    • Converter: That describes the dynamics of the pulse width modulation (PWM) or space vector modulation (SVM).
    • Filter: Used to connect the converter output to the grid.

    diff --git a/v3.3.0/modeler_guide/market_bid_cost/index.html b/v3.3.0/modeler_guide/market_bid_cost/index.html new file mode 100644 index 0000000000..17c3a34df0 --- /dev/null +++ b/v3.3.0/modeler_guide/market_bid_cost/index.html @@ -0,0 +1,116 @@ + +PowerSystems MarketBidCost · PowerSystems.jl

    PowerSystems MarketBidCost

    Is an OperationalCost data structure that allows the user to run a production cost model that is very similar to most US electricity market auctions with bids for energy and ancillary services jointly. This page showcases how to create data for this cost function.

    Adding Energy bids to MarketBidCost

    Step 1: Constructiong device with MarketBidCost

    When using MarketBidCost, the user can add the cost struct to the device specifying only certain elements, at this point the actual energy cost bids don't need to be populated/passed.

    The code below shows an example how we can create a thermal device with MarketBidCost.

    julia> using PowerSystems, Dates
    julia> bus = ACBus(1, "nodeE", "REF", 0, 1.0, (min = 0.9, max = 1.05), 230, nothing, nothing) +nodeE (ACBus): + number: 1 + name: nodeE + bustype: ACBusTypes.REF = 3 + angle: 0.0 + magnitude: 1.0 + voltage_limits: (min = 0.9, max = 1.05) + base_voltage: 230.0 + area: nothing + load_zone: nothing + ext: Dict{String, Any}() + internal: InfrastructureSystems.InfrastructureSystemsInternal
    julia> generator = ThermalStandard( + name = "Brighton", + available = true, + status = true, + bus = bus, + active_power = 6.0, + reactive_power = 1.50, + rating = 0.75, + prime_mover_type = PrimeMovers.ST, + fuel = ThermalFuels.COAL, + active_power_limits = (min = 0.0, max = 6.0), + reactive_power_limits = (min = -4.50, max = 4.50), + time_limits = (up = 0.015, down = 0.015), + ramp_limits = (up = 5.0, down = 3.0), + operation_cost = MarketBidCost( + no_load = 0.0, + start_up = (hot = 0.0, warm = 0.0, cold = 0.0), + shut_down = 0.0, + ), + base_power = 100.0, + ) +Brighton (ThermalStandard): + name: Brighton + available: true + status: true + bus: nodeE (ACBus) + active_power: 600.0 + reactive_power: 150.0 + rating: 75.0 + active_power_limits: (min = 0.0, max = 600.0) + reactive_power_limits: (min = -450.0, max = 450.0) + ramp_limits: (up = 500.0, down = 300.0) + operation_cost: MarketBidCost + base_power: 100.0 + time_limits: (up = 0.015, down = 0.015) + must_run: false + prime_mover_type: PrimeMovers.ST = 20 + fuel: ThermalFuels.COAL = 1 + services: 0-element Vector{Service} + time_at_status: 10000.0 + dynamic_injector: nothing + ext: Dict{String, Any}() + time_series_container: + internal: InfrastructureSystems.InfrastructureSystemsInternal

    Step 2: Creating the TimeSeriesData for the Market Bid

    The user is expected to pass the TimeSeriesData that holds the energy bid data which can be of any type (i.e. SingleTimeSeries or Deterministic) and data can be Array{Float64}, Array{Tuple{Float64, Float64}} or Array{Array{Tuple{Float64,Float64}}. If the data is just floats then the cost in the optimization is seen as a constant variable cost, but if data is a Tuple or Array{Tuple} then the model expects the tuples to be cost & power-point pairs (cost in /p.u-hr & power-point in p.u-hr), which is modeled same as TwoPartCost or ThreePartCost. Code below shows an example of how to build a TimeSeriesData.

    julia> data =
    +           Dict(Dates.DateTime("2020-01-01") => [
    +               [(0.0, 0.05), (290.1, 0.0733), (582.72, 0.0967), (894.1, 0.120)],
    +               [(0.0, 0.05), (300.1, 0.0733), (600.72, 0.0967), (900.1, 0.120)],]
    +           )Dict{Dates.DateTime, Vector{Vector{Tuple{Float64, Float64}}}} with 1 entry:
    +  DateTime("2020-01-01T00:00:00") => [[(0.0, 0.05), (290.1, 0.0733), (582.72, 0…
    julia> time_series_data = Deterministic( + name = "variable_cost", + data = data, + resolution = Dates.Hour(1) + )Deterministic time_series (1): + name: variable_cost + data: DataStructures.SortedDict(Dates.DateTime("2020-01-01T00:00:00") => [[(0.0, 0.05), (290.1, 0.0733), (582.72, 0.0967), (894.1, 0.12)], [(0.0, 0.05), (300.1, 0.0733), (600.72, 0.0967), (900.1, 0.12)]]) + resolution: 1 hour + scaling_factor_multiplier: nothing

    NOTE: Due to limitations in DataStructures.jl, in PowerSystems.jl when creating Forecasts or TimeSeries for your MarketBidCost, you need to define your data as in the example or with a very explicit container. Otherwise, it won't discern the types properly in the constructor and will return SortedDict{Any,Any,Base.Order.ForwardOrdering} which causes the constructor in PowerSystems.jl to fail. For instance, you need to define the Dict with the data as follows:

        # Very verbose dict definition
    +    data = Dict{DateTime,Array{Array{Tuple{Float64,Float64},1},1}}()
    +    for t in range(initial_time_sys; step = Hour(1), length = window_count)
    +        data[t] = MY_BID_DATA
    +    end

    Step 3a: Adding Energy Bid TimeSeriesData to the device

    To add energy market bids time-series to the MarketBidCost, the use of set_variable_cost! is recommended. The arguments for set_variable_cost! are:

    • sys::System: PowerSystem System
    • component::StaticInjection: Static injection device
    • time_series_data::TimeSeriesData: TimeSeriesData
    julia> sys = System(100.0, [bus], [generator])┌ Warning: There are no ElectricLoad Components in the System
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/utils/IO/system_checks.jl:59
    +System
    +┌───────────────────┬─────────────┐
    +│ Property          │ Value       │
    +├───────────────────┼─────────────┤
    +│ Name              │             │
    +│ Description       │             │
    +│ System Units Base │ SYSTEM_BASE │
    +│ Base Power        │ 100.0       │
    +│ Base Frequency    │ 60.0        │
    +│ Num Components    │ 2           │
    +└───────────────────┴─────────────┘
    +
    +Static Components
    +┌─────────────────┬───────┬────────────────────────┬───────────────┐
    +│ Type            │ Count │ Has Static Time Series │ Has Forecasts │
    +├─────────────────┼───────┼────────────────────────┼───────────────┤
    +│ ACBus           │ 1     │ false                  │ false         │
    +│ ThermalStandard │ 1     │ false                  │ false         │
    +└─────────────────┴───────┴────────────────────────┴───────────────┘
    julia> set_variable_cost!(sys, generator, time_series_data)

    Step 3b: Adding Service Bid TimeSeriesData to the device

    Similar to adding energy market bids, for adding bids for ancillary services the use of set_service_bid! is recommended.

    julia> service = VariableReserve{ReserveUp}("example_reserve", true, 0.6, 2.0)
    +example_reserve (VariableReserve{ReserveUp}):
    +   name: example_reserve
    +   available: true
    +   time_frame: 0.6
    +   requirement: 2.0
    +   sustained_time: 3600.0
    +   max_output_fraction: 1.0
    +   max_participation_factor: 1.0
    +   deployed_fraction: 0.0
    +   ext: Dict{String, Any}()
    +   time_series_container:
    +   internal: InfrastructureSystems.InfrastructureSystemsInternal
    julia> add_service!(sys, service, get_component(ThermalStandard, sys, "Brighton"))
    julia> data = + Dict(Dates.DateTime("2020-01-01") => [650.3, 750.0])Dict{Dates.DateTime, Vector{Float64}} with 1 entry: + DateTime("2020-01-01T00:00:00") => [650.3, 750.0]
    julia> time_series_data = Deterministic( + name = get_name(service), + data = data, + resolution = Dates.Hour(1) + )Deterministic time_series (1): + name: example_reserve + data: DataStructures.SortedDict(Dates.DateTime("2020-01-01T00:00:00") => [650.3, 750.0]) + resolution: 1 hour + scaling_factor_multiplier: nothing
    julia> set_service_bid!(sys, generator, service, time_series_data)
    diff --git a/v3.3.0/modeler_guide/modeling_with_JuMP/index.html b/v3.3.0/modeler_guide/modeling_with_JuMP/index.html new file mode 100644 index 0000000000..3873a36598 --- /dev/null +++ b/v3.3.0/modeler_guide/modeling_with_JuMP/index.html @@ -0,0 +1,143 @@ + +Modeling with JuMP · PowerSystems.jl

    Modeling with JuMP

    This page shows a minimal example of PowerSystems.jl used to develop and Economic Dispatch model. The code shows the stages to develop modeling code

    1. Make the data set from power flow and time series data,
    2. Serialize the data,
    3. Pass the data and algorithm to the model.

    One of the main uses of `PowerSystems.jl is not having re-run the data generation for every model execution. The model code shows an example of populating the constraints and cost functions using accessor functions inside the model function. The example concludes by reading the data created earlier and passing the algorithm with the data.

    julia> using PowerSystems
    julia> const PSY = PowerSystemsPowerSystems
    julia> using JuMP
    julia> using Ipopt
    julia> using PowerSystemCaseBuilder

    The first step is to load the test data used throughout the rest of these tutorials (or set DATA_DIR as appropriate if it already exists).

    julia> system_data =  build_system(PSISystems, "c_sys5_pjm")┌ Info: Building new system c_sys5_pjm from raw data
    +└   sys_descriptor.raw_data = "/home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0/psy_data/data_5bus_pu.jl"
    +[ Info: Serialized time series data to /home/runner/.julia/packages/PowerSystemCaseBuilder/8GyJc/data/serialized_system/ForecastOnly/c_sys5_pjm_time_series_storage.h5.
    +[ Info: Serialized System to /home/runner/.julia/packages/PowerSystemCaseBuilder/8GyJc/data/serialized_system/ForecastOnly/c_sys5_pjm.json
    +[ Info: Serialized System metadata to /home/runner/.julia/packages/PowerSystemCaseBuilder/8GyJc/data/serialized_system/ForecastOnly/c_sys5_pjm_metadata.json
    +System
    +┌───────────────────┬─────────────┐
    +│ Property          │ Value       │
    +├───────────────────┼─────────────┤
    +│ Name              │             │
    +│ Description       │             │
    +│ System Units Base │ SYSTEM_BASE │
    +│ Base Power        │ 100.0       │
    +│ Base Frequency    │ 60.0        │
    +│ Num Components    │ 27          │
    +└───────────────────┴─────────────┘
    +
    +Static Components
    +┌───────────────────┬───────┬────────────────────────┬───────────────┐
    +│ Type              │ Count │ Has Static Time Series │ Has Forecasts │
    +├───────────────────┼───────┼────────────────────────┼───────────────┤
    +│ ACBus             │ 5     │ false                  │ false         │
    +│ Arc               │ 6     │ false                  │ false         │
    +│ Line              │ 6     │ false                  │ false         │
    +│ PowerLoad         │ 3     │ true                   │ false         │
    +│ RenewableDispatch │ 2     │ true                   │ false         │
    +│ ThermalStandard   │ 5     │ false                  │ false         │
    +└───────────────────┴───────┴────────────────────────┴───────────────┘
    +
    +Time Series Summary
    +┌──────────────────────────────────┬────────────┐
    +│ Property                         │ Value      │
    +├──────────────────────────────────┼────────────┤
    +│ Components with time series data │ 5          │
    +│ Total StaticTimeSeries           │ 5          │
    +│ Total Forecasts                  │ 0          │
    +│ Resolution                       │ 60 minutes │
    +└──────────────────────────────────┴────────────┘
    julia> function ed_model(system::System, optimizer) + ed_m = Model(optimizer) + time_periods = 1:24 + thermal_gens_names = get_name.(get_components(ThermalStandard, system)) + @variable(ed_m, pg[g in thermal_gens_names, t in time_periods] >= 0) + + for g in get_components(ThermalStandard, system), t in time_periods + name = get_name(g) + @constraint(ed_m, pg[name, t] >= get_active_power_limits(g).min) + @constraint(ed_m, pg[name, t] <= get_active_power_limits(g).max) + end + + net_load = zeros(length(time_periods)) + for g in get_components(RenewableGen, system) + net_load -= get_time_series_values(SingleTimeSeries, g, "max_active_power")[time_periods] + end + + for g in get_components(StaticLoad, system) + net_load += get_time_series_values(SingleTimeSeries, g, "max_active_power")[time_periods] + end + + for t in time_periods + @constraint(ed_m, sum(pg[g, t] for g in thermal_gens_names) == net_load[t]) + end + + @objective(ed_m, Min, sum( + pg[get_name(g), t]^2*get_cost(get_variable(get_operation_cost(g)))[1] + + pg[get_name(g), t]*get_cost(get_variable(get_operation_cost(g)))[2] + for g in get_components(ThermalGen, system), t in time_periods + ) + ) + optimize!(ed_m) + return ed_m + ended_model (generic function with 1 method)
    julia> results = ed_model(system_data, Ipopt.Optimizer) +****************************************************************************** +This program contains Ipopt, a library for large-scale nonlinear optimization. + Ipopt is released as open source code under the Eclipse Public License (EPL). + For more information visit https://github.com/coin-or/Ipopt +****************************************************************************** + +This is Ipopt version 3.14.14, running with linear solver MUMPS 5.6.2. + +Number of nonzeros in equality constraint Jacobian...: 120 +Number of nonzeros in inequality constraint Jacobian.: 240 +Number of nonzeros in Lagrangian Hessian.............: 0 + +Total number of variables............................: 120 + variables with only lower bounds: 120 + variables with lower and upper bounds: 0 + variables with only upper bounds: 0 +Total number of equality constraints.................: 24 +Total number of inequality constraints...............: 240 + inequality constraints with only lower bounds: 120 + inequality constraints with lower and upper bounds: 0 + inequality constraints with only upper bounds: 120 + +iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls + 0 2.6159974e+01 2.52e+00 6.07e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0 + 1 6.4569853e+02 7.10e-01 3.42e+01 -1.0 5.65e-01 - 2.08e-02 7.18e-01h 1 + 2 5.2023163e+02 6.87e-01 3.31e+01 -1.0 2.09e+01 - 2.97e-02 3.25e-02f 1 + 3 4.4033326e+02 6.50e-01 3.14e+01 -1.0 6.64e+00 - 1.08e-01 5.30e-02f 1 + 4 4.0560222e+02 5.78e-01 2.79e+01 -1.0 2.88e+00 - 1.73e-01 1.12e-01f 1 + 5 4.0100081e+02 5.39e-01 2.60e+01 -1.0 5.67e+00 - 9.29e-02 6.75e-02f 1 + 6 3.9908466e+02 4.48e-01 2.16e+01 -1.0 1.99e+00 - 3.84e-01 1.68e-01h 1 + 7 4.3287862e+02 1.43e-01 7.23e+00 -1.0 5.96e-01 - 1.00e+00 6.81e-01h 1 + 8 4.6122880e+02 4.44e-16 1.00e-06 -1.0 1.51e-01 - 1.00e+00 1.00e+00h 1 + 9 4.4374486e+02 4.44e-16 2.63e-02 -2.5 9.43e-02 - 9.17e-01 1.00e+00f 1 +iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls + 10 4.4264070e+02 4.44e-16 1.50e-09 -3.8 9.08e-03 - 1.00e+00 1.00e+00f 1 + 11 4.4261103e+02 4.44e-16 1.85e-11 -5.7 1.71e-04 - 1.00e+00 1.00e+00f 1 + 12 4.4261068e+02 4.44e-16 2.84e-14 -8.6 1.98e-06 - 1.00e+00 1.00e+00f 1 + +Number of Iterations....: 12 + + (scaled) (unscaled) +Objective...............: 4.4261067891368759e+02 4.4261067891368759e+02 +Dual infeasibility......: 2.8421709430404007e-14 2.8421709430404007e-14 +Constraint violation....: 4.4408920985006262e-16 4.4408920985006262e-16 +Variable bound violation: 9.8329323571942150e-09 9.8329323571942150e-09 +Complementarity.........: 2.5091354477996078e-09 2.5091354477996078e-09 +Overall NLP error.......: 2.5091354477996078e-09 2.5091354477996078e-09 + + +Number of objective function evaluations = 13 +Number of objective gradient evaluations = 13 +Number of equality constraint evaluations = 13 +Number of inequality constraint evaluations = 13 +Number of equality constraint Jacobian evaluations = 1 +Number of inequality constraint Jacobian evaluations = 1 +Number of Lagrangian Hessian evaluations = 1 +Total seconds in IPOPT = 0.011 + +EXIT: Optimal Solution Found. +A JuMP Model +Minimization problem with: +Variables: 120 +Objective function type: JuMP.QuadExpr +`JuMP.AffExpr`-in-`MathOptInterface.EqualTo{Float64}`: 24 constraints +`JuMP.AffExpr`-in-`MathOptInterface.GreaterThan{Float64}`: 120 constraints +`JuMP.AffExpr`-in-`MathOptInterface.LessThan{Float64}`: 120 constraints +`JuMP.VariableRef`-in-`MathOptInterface.GreaterThan{Float64}`: 120 constraints +Model mode: AUTOMATIC +CachingOptimizer state: ATTACHED_OPTIMIZER +Solver name: Ipopt +Names registered in the model: pg
    diff --git a/v3.3.0/modeler_guide/parsing/index.html b/v3.3.0/modeler_guide/parsing/index.html new file mode 100644 index 0000000000..b85be45fde --- /dev/null +++ b/v3.3.0/modeler_guide/parsing/index.html @@ -0,0 +1,224 @@ + +Parsing Data · PowerSystems.jl

    Parsing Data

    PowerSystems.jl supports the creation of a System from a variety of common data formats:

    MATPOWER / PSS/e

    The following code will create a System from a MATPOWER or PSS/e file:

    julia> using PowerSystems
    julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"
    julia> sys = System(joinpath(file_dir, "case5.m"))[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "nesta_case5_pjm" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 28 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ false │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘

    PSS/e dynamic data parsing

    PSS/e's dynamic model library is extensive, we currently support parsing a limited amount of models out of the box.

    Machine modelsAVR ModelsPrime MoversPSS models
    GENSAEIEEET1HYGOVIEEEST
    GENSALESDC1AIEEEG1
    GENROEESAC1AGGOV1
    GENCLSESST4B
    GENROUEXAC2
    EXPIC1
    ESAC6A
    EXAC1
    SCRX
    ESDC2A

    Creating a Dynamic System using .RAW and .DYR data

    A PowerSystems.jl system can be created using a .RAW and a .DYR file. In this example we will create the following three bus system using the following RAW file:

    0, 100, 33, 0, 0, 60  / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev
    +
    +
    +     101, 'BUS 1       ',       138, 3,    1,    1, 1,           1.02,        0,  1.1,  0.9,  1.1,  0.9
    +     102, 'BUS 2       ',       138, 2,    1,    1, 1,           1.0142,           0,  1.1,  0.9,  1.1,  0.9
    +     103, 'BUS 3       ',       138, 2,    1,    1, 1,           1.0059,           0,  1.1,  0.9,  1.1,  0.9
    +0 / END OF BUS DATA, BEGIN LOAD DATA
    +     101,  1, 1,    1,    1,       100,       20, 0, 0, 0, 0, 1, 1, 0
    +     102,  1, 1,    1,    1,       70,       10, 0, 0, 0, 0, 1, 1, 0
    +     103,  1, 1,    1,    1,       50,       10, 0, 0, 0, 0, 1, 1, 0
    +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
    +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
    +     101,  1,       20,         0,       100,      -100,    1.02, 0,     100, 0, 0, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
    +     102,  1,       100,         0,       100,      -100,   1.0142, 0,     100, 0, 0.7, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
    +     103,  1,       100,         0,       100,      -100,   1.0059, 0,     100, 0, 0.2, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
    +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
    +     101,      103, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +     101,      102, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +     102,      103, 1,  0.01000,     0.12,      0.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +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 VOLTAGE SOURCE CONVERTER DATA
    +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA
    +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA
    +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA
    +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA
    +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA
    +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA
    +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA
    +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA
    +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA
    +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA
    +0 / END OF INDUCTION MACHINE DATA
    +Q

    This system is a three bus system with three generators, three loads and three branches. The dynamic data for the generators is provided in the DYR file:

      101 'GENROE' 1   8.000000  0.030000  0.400000  0.050000  6.500000  0.000000  1.800000
    +  1.700000  0.300000  0.550000  0.250000  0.200000  0.039200  0.267200  /
    +  101 'ESST1A' 1   1  1  0.01  99  -99  1  10  1  1  200  0  4  -4  4  -4  0  0  1  0  3  /
    +  102 'GENCLS' 1   0.0   0.0 /
    +  103 'GENCLS' 1   3.1   2.0 /

    That assigns a GENROU generator and a ESST1A voltage regulator at the generator located at bus 101, while classic machine models for the generators located at bus 102 and 103.

    To create the system we can do it passing both files directories:

    julia> RAW_dir = joinpath(file_dir, "ThreeBusNetwork.raw")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data/ThreeBusNetwork.raw"
    julia> DYR_dir = joinpath(file_dir, "TestGENCLS.dyr")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data/TestGENCLS.dyr"
    julia> dyn_system = System(RAW_dir, DYR_dir, runchecks = false)[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines +[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines +[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Load data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict... +┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing... +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:985 +┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing... +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:991 +[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 3 to +/- 60.0 deg. +┌ Info: Constructing System from Power Models +│ data["name"] = "threebusnetwork" +└ data["source_type"] = "pti" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +[ Info: Generators provided in .dyr, without a generator in .raw file will be skipped. +[ Info: Machine at bus 102, id 1 has zero inertia. Modeling it as Voltage Source +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 19 │ +└───────────────────┴─────────────┘ + +Static Components +┌─────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├─────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 3 │ false │ false │ +│ Arc │ 3 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 3 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ Source │ 1 │ false │ false │ +│ StandardLoad │ 3 │ false │ false │ +│ ThermalStandard │ 2 │ false │ false │ +└─────────────────┴───────┴────────────────────────┴───────────────┘ + +Dynamic Components +┌──────────────────┬───────┐ +│ Type │ Count │ +├──────────────────┼───────┤ +│ DynamicGenerator │ 1 │ +│ DynamicGenerator │ 1 │ +└──────────────────┴───────┘

    Common Issues

    Please note that while PSS/e does not enforce unique bus names, PowerSystems.jl does. To reparse bus names to comply with this requirement the bus_name_formatter *kwarg can be used in System() as shown in the example below:

    julia> dyn_system = System(RAW_dir, DYR_dir; bus_name_formatter = x -> strip(string(x["name"])) * "-" * string(x["index"]))[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
    +[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
    +[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Load data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict...
    +┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing...
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:985
    +┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing...
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:991
    +[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg.
    +[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg.
    +[ Info: angmin and angmax values are 0, widening these values on branch 3 to +/- 60.0 deg.
    +┌ Info: Constructing System from Power Models
    +│   data["name"] = "threebusnetwork"
    +└   data["source_type"] = "pti"
    +[ Info: Reading bus data
    +[ Info: Reading Load data in PowerModels dict to populate System ...
    +[ Info: Reading LoadZones data in PowerModels dict to populate System ...
    +[ Info: Reading generator data
    +[ Info: Reading branch data
    +[ Info: Reading branch data
    +[ Info: Reading DC Line data
    +[ Info: Reading storage data
    +[ Info: Generators provided in .dyr, without a generator in .raw file will be skipped.
    +[ Info: Machine at bus 102, id 1 has zero inertia. Modeling it as Voltage Source
    +┌ Warning: struct DynamicGenerator does not exist in validation configuration file, validation skipped
    +└ @ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/9btGb/src/validation.jl:51
    +┌ Warning: struct DynamicGenerator does not exist in validation configuration file, validation skipped
    +└ @ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/9btGb/src/validation.jl:51
    +System
    +┌───────────────────┬─────────────┐
    +│ Property          │ Value       │
    +├───────────────────┼─────────────┤
    +│ Name              │             │
    +│ Description       │             │
    +│ System Units Base │ SYSTEM_BASE │
    +│ Base Power        │ 100.0       │
    +│ Base Frequency    │ 60.0        │
    +│ Num Components    │ 19          │
    +└───────────────────┴─────────────┘
    +
    +Static Components
    +┌─────────────────┬───────┬────────────────────────┬───────────────┐
    +│ Type            │ Count │ Has Static Time Series │ Has Forecasts │
    +├─────────────────┼───────┼────────────────────────┼───────────────┤
    +│ ACBus           │ 3     │ false                  │ false         │
    +│ Arc             │ 3     │ false                  │ false         │
    +│ Area            │ 1     │ false                  │ false         │
    +│ Line            │ 3     │ false                  │ false         │
    +│ LoadZone        │ 1     │ false                  │ false         │
    +│ Source          │ 1     │ false                  │ false         │
    +│ StandardLoad    │ 3     │ false                  │ false         │
    +│ ThermalStandard │ 2     │ false                  │ false         │
    +└─────────────────┴───────┴────────────────────────┴───────────────┘
    +
    +Dynamic Components
    +┌──────────────────┬───────┐
    +│ Type             │ Count │
    +├──────────────────┼───────┤
    +│ DynamicGenerator │ 1     │
    +│ DynamicGenerator │ 1     │
    +└──────────────────┴───────┘

    In this example the anonymous function x -> strip(string(x["name"])) * "-" * string(x["index"]) takes the bus name and index from PSSe and concatenates them to produce the name.

    PowerSystems Table Data

    This is a custom format that allows users to define power system component data by category and column with custom names, types, and units.

    Categories

    Components for each category must be defined in their own CSV file. The following categories are currently supported:

    • branch.csv
    • bus.csv (required)
      • columns specifying area and zone will create a corresponding set of Area and LoadZone objects.
      • columns specifying max_active_power or max_reactive_power will create PowerLoad objects when nonzero values are encountered and will contribute to the peak_active_power and peak_reactive_power values for the
      corresponding LoadZone object.
    • dc_branch.csv
    • gen.csv
    • load.csv
    • reserves.csv
    • storage.csv

    These must reside in the directory passed when constructing PowerSystemTableData.

    Adding Time Series Data

    PowerSystems requires a metadata file that maps components to their time series data in order to be able to automatically construct time_series from raw data files. The following fields are required for each time array:

    • simulation: User description of simulation
    • resolution: Resolution of time series in seconds
    • module: Module that defines the abstract type of the component
    • category: Type of component. Must map to abstract types defined by the "module" entry (Bus, ElectricLoad, Generator, LoadZone, Reserve)
    • component_name: Name of component
    • name: User-defined name for the time series data.
    • normalization_factor: Controls normalization of the data. Use 1.0 for pre-normalized data. Use 'Max' to divide the time series by the max value in the column. Use any float for a custom scaling factor.
    • scaling_factor_multiplier_module: Module that defines the accessor function for the

    scaling factor

    • scaling_factor_multiplier: Accessor function of the scaling factor
    • data_file: Path to the time series data file

    Notes:

    • The "module", "category", and "component_name" entries must be valid arguments to retrieve

    a component using get_component(${module}.${category}, sys, $name).

    • The "scalingfactormultipliermodule" and the "scalingfactor_multiplier" entries must

    be sufficient to return the scaling factor data using ${scaling_factor_multiplier_module}.${scaling_factor_multiplier}(component).

    PowerSystems supports this metadata in either CSV or JSON formats. Refer to RTS_GMLC for an example.

    Performance considerations

    By default PowerSystems stores time series data in HDF5 files. It does not keep all of the data in memory. This means that every time you access a timeseries PowerSystems will have to read the data from storage, which will add latency. If you know ahead of time that all of your data will fit in memory then you can change this behavior by passing `timeseriesinmemory = true` when you create the System.

    If the time series data is stored in HDF5 then PowerSystems will use the tmp filesystem by default. You can change this by passing time_series_directory = X when you create the System. This is required if the time series data is larger than the amount of tmp space available. You can also override the location by setting the environment variable SIIPTIMESERIES_DIRECTORY to another directory.

    Customization

    The tabular data parser in PowerSystems.jl can be customized to read a variety of datasets by configuring:

    Here is an example of how to construct a System with all customizations listed in this section:

    data_dir = "/data/my-data-dir"
    +base_power = 100.0
    +descriptors = "./user_descriptors.yaml"
    +timeseries_metadata_file = "./timeseries_pointers.json"
    +generator_mapping_file = "./generator_mapping.yaml"
    +data = PowerSystemTableData(
    +    data_dir,
    +    base_power,
    +    descriptors;
    +    timeseries_metadata_file = timeseries_metadata_file,
    +    generator_mapping_file = generator_mapping_file,
    +)
    +sys = System(data, time_series_in_memory = true)

    Examples configuration files can be found in the RTS-GMLC repo:

    CSV Data Configurations

    Custom construction of generators

    PowerSystems supports custom construction of subtypes of the abstract type Generator based on fuel and type. The parsing code detects these fields in the raw data and then constructs the concrete type listed in the passed generator mapping file. The default file is src/parsers/generator_mapping.yaml. You can override this behavior by specifying your own file when constructing PowerSystemTableData.

    Column names

    PowerSystems provides am input mapping capability that allows you to keep your own column names.

    For example, when parsing raw data for a generator the code expects a column called name. If the raw data instead defines that column as GEN UID then you can change the custom_name field under the generator category to GEN UID in your YAML file.

    To enable the parsing of a custom set of csv files, you can generate a configuration file (such as user_descriptors.yaml) from the defaults, which are stored in src/descriptors/power_system_inputs.json.

    python ./bin/generate_config_file.py ./user_descriptors.yaml

    Next, edit this file with your customizations.

    Note that the user-specific customizations are stored in YAML rather than JSON to allow for easier editing. The next few sections describe changes you can make to this YAML file. Do not edit the default JSON file.

    Per-unit conversion

    For more info on the per-unit conventions in PowerSystems.jl, refer to the per-unit section of the system documentation.

    PowerSystems defines whether it expects a column value to be per-unit system base, per-unit device base, or natural units in power_system_inputs.json. If it expects a per-unit convention that differs from your values then you can set the unit_system in user_descriptors.yaml and PowerSystems will automatically convert the values. For example, if you have a max_active_power value stored in natural units (MW), but power_system_inputs.json specifies unit_system: device_base, you can enter unit_system: natural_units in user_descriptors.yaml and PowerSystems will divide the value by the value of the corresponding entry in the column identified by the base_reference field in power_system_inputs.json. You can also override the base_reference setting by adding base_reference: My Column to make device base per-unit conversion by dividing the value by the entry in My Column. System base per-unit conversions always divide the value by the system base_power value instantiated when constructing a System.

    Unit conversion

    PowerSystems provides a limited set of unit conversions. For example, if power_system_inputs.json indicates that a value's unit is degrees but your values are in radians then you can set unit: radian in your YAML file. Other valid unit entries include GW, GWh, MW, MWh, kW, and kWh.

    diff --git a/v3.3.0/modeler_guide/system/index.html b/v3.3.0/modeler_guide/system/index.html new file mode 100644 index 0000000000..b4d0ad71e5 --- /dev/null +++ b/v3.3.0/modeler_guide/system/index.html @@ -0,0 +1,504 @@ + +System · PowerSystems.jl

    System

    The System is the main container of components and the time series data references. PowerSystems.jl uses a hybrid approach to data storage, where the component data and time series references are stored in volatile memory while the actual time series data is stored in an HDF5 file. This design loads into memory the portions of the data that are relevant at time of the query, and so avoids overwhelming the memory resources.

    Accessing components stored in the system

    PowerSystems.jl implements a wide variety of methods to search for components to aid in the development of models. The code block shows an example of retrieving components through the type hierarchy with the get_components function and exploiting the type hierarchy for modeling purposes.

    The default implementation of the function get_components takes the desired device type (concrete or abstract) and the system and it also accepts filter functions for a more refined search. The container is optimized for iteration over abstract or concrete component types as described by the Type Structure. Given the potential size of the return, PowerSystems.jl returns Julia iterators in order to avoid unnecessary memory allocations.

    julia> using PowerSystems
    julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"
    julia> system = System(joinpath(file_dir, "RTS_GMLC.m"));┌ Error: Matlab parser skipping line number 802 consisting of: +│ ]; +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 101 to 1.0468 to match generator set-point +[ Info: Correcting vm in bus 102 to 1.0467 to match generator set-point +[ Info: Correcting vm in bus 107 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 113 to 1.0347 to match generator set-point +[ Info: Correcting vm in bus 115 to 1.0428 to match generator set-point +[ Info: Correcting vm in bus 116 to 1.0461 to match generator set-point +[ Info: Correcting vm in bus 201 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 202 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 207 to 0.9699 to match generator set-point +[ Info: Correcting vm in bus 213 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 215 to 1.0437 to match generator set-point +[ Info: Correcting vm in bus 216 to 1.0473 to match generator set-point +[ Info: Correcting vm in bus 301 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 302 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 307 to 0.9568 to match generator set-point +[ Info: Correcting vm in bus 313 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 315 to 1.0422 to match generator set-point +[ Info: Correcting vm in bus 316 to 1.0449 to match generator set-point +[ Info: Correcting vm in bus 114 to 1.0441 to match generator set-point +[ Info: Correcting vm in bus 214 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 314 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 118 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 122 to 1.0 to match generator set-point +[ Info: extending matpower format with data: areas 3x3 +[ Info: extending matpower format with data: gen_name 158x4 +[ Info: added zero cost function data for dclines +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 32 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 32 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 29 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 29 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 1 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 1 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 54 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 54 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 78 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 78 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 81 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 81 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 101 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 101 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 2 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 2 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 105 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 105 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 109 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 109 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 74 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 74 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 41 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 41 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 65 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 65 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 51 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 51 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 53 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 53 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 106 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 106 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 119 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 119 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 27 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 27 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 75 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 75 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 42 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 42 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 33 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 33 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 28 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 28 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 50 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 50 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 52 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 52 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 111 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 111 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 63 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 63 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 115 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 115 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 92 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 92 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 88 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 88 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 93 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 93 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 26 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 26 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 10 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 10 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 120 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 120 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 77 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 77 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 24 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 24 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 87 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 87 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 117 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 117 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 58 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 58 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 25 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 25 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 114 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 114 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 23 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 23 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 49 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 49 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 59 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 59 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 5 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 5 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 31 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 31 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 89 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 89 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 62 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 62 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 43 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 43 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 90 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 90 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 39 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 39 from 90.0 to 60.0 deg. +[ Info: the voltage setpoint on generator 78 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 105 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 109 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 155 does not match the value at bus 317 +[ Info: the voltage setpoint on generator 106 does not match the value at bus 312 +[ Info: the voltage setpoint on generator 75 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 111 does not match the value at bus 319 +[ Info: the voltage setpoint on generator 121 does not match the value at bus 103 +[ Info: the voltage setpoint on generator 141 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 77 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 117 does not match the value at bus 212 +[ Info: the voltage setpoint on generator 154 does not match the value at bus 309 +[ Info: the voltage setpoint on generator 122 does not match the value at bus 119 +[ Info: the voltage setpoint on generator 137 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 79 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 80 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 104 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 123 does not match the value at bus 308 +[ Info: the voltage setpoint on generator 140 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 107 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 97 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 156 does not match the value at bus 303 +[ Info: the voltage setpoint on generator 136 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 148 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 108 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 116 does not match the value at bus 104 +[ Info: the voltage setpoint on generator 76 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 138 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 18 does not match the value at bus 118 +[ Info: the from bus voltage setpoint on dc line 1 does not match the value at bus 113 +[ Info: the to bus voltage setpoint on dc line 1 does not match the value at bus 316 +[ Info: simplifying pwl cost on generator 78, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 81, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 101, [0.0, 0.0, 0.309, 0.0, 0.618, 0.0, 0.927, 0.0] -> [0.0, 0.0, 0.927, 0.0] +[ Info: simplifying pwl cost on generator 105, [0.0, 0.0, 0.16566669999999997, 0.0, 0.3313333, 0.0, 0.49700000000000005, 0.0] -> [0.0, 0.0, 0.49700000000000005, 0.0] +[ Info: simplifying pwl cost on generator 109, [0.0, 0.0, 0.17, 0.0, 0.34, 0.0, 0.51, 0.0] -> [0.0, 0.0, 0.51, 0.0] +[ Info: simplifying pwl cost on generator 74, [3.96, 3208.986, 3.9733332999999997, 3219.79067, 3.9866667000000002, 3230.59533, 4.0, 3241.4] -> [3.96, 3208.986, 4.0, 3241.4] +[ Info: simplifying pwl cost on generator 132, [0.0, 0.0, 0.20800000000000002, 0.0, 0.41600000000000004, 0.0, 0.624, 0.0] -> [0.0, 0.0, 0.624, 0.0] +[ Info: simplifying pwl cost on generator 153, [0.0, 0.0, 0.044000000000000004, 0.0, 0.08800000000000001, 0.0, 0.132, 0.0] -> [0.0, 0.0, 0.132, 0.0] +[ Info: simplifying pwl cost on generator 155, [0.0, 0.0, 2.6636667, 0.0, 5.3273333, 0.0, 7.9910000000000005, 0.0] -> [0.0, 0.0, 7.9910000000000005, 0.0] +[ Info: simplifying pwl cost on generator 106, [0.0, 0.0, 0.31366669999999996, 0.0, 0.6273333, 0.0, 0.941, 0.0] -> [0.0, 0.0, 0.941, 0.0] +[ Info: simplifying pwl cost on generator 119, [0.0, 0.0, 0.0873333, 0.0, 0.1746667, 0.0, 0.262, 0.0] -> [0.0, 0.0, 0.262, 0.0] +[ Info: simplifying pwl cost on generator 75, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 111, [0.0, 0.0, 0.6273333, 0.0, 1.2546667, 0.0, 1.882, 0.0] -> [0.0, 0.0, 1.882, 0.0] +[ Info: simplifying pwl cost on generator 121, [0.0, 0.0, 0.205, 0.0, 0.41, 0.0, 0.615, 0.0] -> [0.0, 0.0, 0.615, 0.0] +[ Info: simplifying pwl cost on generator 115, [0.0, 0.0, 0.0843333, 0.0, 0.1686667, 0.0, 0.253, 0.0] -> [0.0, 0.0, 0.253, 0.0] +[ Info: simplifying pwl cost on generator 141, [0.0, 0.0, 0.094, 0.0, 0.188, 0.0, 0.282, 0.0] -> [0.0, 0.0, 0.282, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 92 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 92 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 92 +[ Info: simplifying pwl cost on generator 92, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 88, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 93, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 120, [0.0, 0.0, 0.086, 0.0, 0.172, 0.0, 0.258, 0.0] -> [0.0, 0.0, 0.258, 0.0] +[ Info: simplifying pwl cost on generator 77, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 87, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 117, [0.3, 0.0, 0.66, 0.0, 1.2, 0.0, 1.6, 0.0] -> [0.3, 0.0, 1.6, 0.0] +[ Info: simplifying pwl cost on generator 114, [0.0, 0.0, 0.0863333, 0.0, 0.1726667, 0.0, 0.259, 0.0] -> [0.0, 0.0, 0.259, 0.0] +[ Info: simplifying pwl cost on generator 154, [0.0, 0.0, 0.4943333, 0.0, 0.9886667, 0.0, 1.483, 0.0] -> [0.0, 0.0, 1.483, 0.0] +[ Info: simplifying pwl cost on generator 149, [0.0, 0.0, 0.0393333, 0.0, 0.0786667, 0.0, 0.11800000000000001, 0.0] -> [0.0, 0.0, 0.11800000000000001, 0.0] +[ Info: simplifying pwl cost on generator 89, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 122, [0.0, 0.0, 0.222, 0.0, 0.444, 0.0, 0.6659999999999999, 0.0] -> [0.0, 0.0, 0.6659999999999999, 0.0] +[ Info: simplifying pwl cost on generator 90, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 143, [0.0, 0.0, 0.0323333, 0.0, 0.0646667, 0.0, 0.09699999999999999, 0.0] -> [0.0, 0.0, 0.09699999999999999, 0.0] +[ Info: simplifying pwl cost on generator 112, [0.0, 0.0, 0.41700000000000004, 0.0, 0.8340000000000001, 0.0, 1.251, 0.0] -> [0.0, 0.0, 1.251, 0.0] +[ Info: simplifying pwl cost on generator 129, [0.0, 0.0, 0.21266670000000001, 0.0, 0.42533329999999997, 0.0, 0.638, 0.0] -> [0.0, 0.0, 0.638, 0.0] +[ Info: simplifying pwl cost on generator 150, [0.0, 0.0, 0.0373333, 0.0, 0.0746667, 0.0, 0.11199999999999999, 0.0] -> [0.0, 0.0, 0.11199999999999999, 0.0] +[ Info: simplifying pwl cost on generator 137, [0.0, 0.0, 0.09, 0.0, 0.18, 0.0, 0.27, 0.0] -> [0.0, 0.0, 0.27, 0.0] +[ Info: simplifying pwl cost on generator 94, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 86, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 126, [0.0, 0.0, 0.218, 0.0, 0.436, 0.0, 0.654, 0.0] -> [0.0, 0.0, 0.654, 0.0] +[ Info: simplifying pwl cost on generator 99, [0.0, 0.0, 0.172, 0.0, 0.344, 0.0, 0.516, 0.0] -> [0.0, 0.0, 0.516, 0.0] +[ Info: simplifying pwl cost on generator 152, [0.0, 0.0, 0.015, 0.0, 0.03, 0.0, 0.045, 0.0] -> [0.0, 0.0, 0.045, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 73 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 73 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 73 +[ Info: simplifying pwl cost on generator 73, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 82 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 82 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 82 +[ Info: simplifying pwl cost on generator 82, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 79, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 146, [0.0, 0.0, 0.030333299999999997, 0.0, 0.060666700000000004, 0.0, 0.091, 0.0] -> [0.0, 0.0, 0.091, 0.0] +[ Info: simplifying pwl cost on generator 142, [0.0, 0.0, 0.031, 0.0, 0.062, 0.0, 0.09300000000000001, 0.0] -> [0.0, 0.0, 0.09300000000000001, 0.0] +[ Info: simplifying pwl cost on generator 84, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 80, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 104, [0.0, 0.0, 0.1723333, 0.0, 0.3446667, 0.0, 0.517, 0.0] -> [0.0, 0.0, 0.517, 0.0] +[ Info: simplifying pwl cost on generator 124, [0.0, 0.0, 0.33899999999999997, 0.0, 0.6779999999999999, 0.0, 1.0170000000000001, 0.0] -> [0.0, 0.0, 1.0170000000000001, 0.0] +[ Info: simplifying pwl cost on generator 125, [0.0, 0.0, 0.2103333, 0.0, 0.4206667, 0.0, 0.631, 0.0] -> [0.0, 0.0, 0.631, 0.0] +[ Info: simplifying pwl cost on generator 98, [0.0, 0.0, 0.172, 0.0, 0.344, 0.0, 0.516, 0.0] -> [0.0, 0.0, 0.516, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "RTS_GMLC" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +┌ Warning: GenericBattery should be defined as a PowerModels storage... Skipping +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_models_data.jl:551 +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data
    julia> thermal_gens = get_components(ThermalStandard, system)ThermalStandard Counts: +ThermalStandard: 76

    It is also possible to execute get_components with abstract types from the abstract tree. For instance, it is possible to retrieve all renewable generators

    julia> thermal_gens = get_components(RenewableGen, system)RenewableGen Counts:
    +RenewableDispatch: 30
    +RenewableFix: 31

    The most common filtering requirement is by component name and for this case the method get_component returns a single component taking the device type, system and name as arguments.

    julia> my_thermal_gen = get_component(ThermalStandard, system, "323_CC_1")323_CC_1 (ThermalStandard):
    +   name: 323_CC_1
    +   available: true
    +   status: true
    +   bus: COMTE (ACBus)
    +   active_power: 3.55
    +   reactive_power: 0.3741
    +   rating: 3.853894134508627
    +   active_power_limits: (min = 1.7, max = 3.55)
    +   reactive_power_limits: (min = -0.25, max = 1.5)
    +   ramp_limits: (up = 0.0414, down = 0.0414)
    +   operation_cost: ThreePartCost
    +   base_power: 100.0
    +   time_limits: nothing
    +   must_run: false
    +   prime_mover_type: PrimeMovers.CC = 4
    +   fuel: ThermalFuels.NATURAL_GAS = 7
    +   services: 0-element Vector{Service}
    +   time_at_status: 10000.0
    +   dynamic_injector: nothing
    +   ext: Dict{String, Any}()
    +   time_series_container:
    +   InfrastructureSystems.SystemUnitsSettings:
    +      base_value: 100.0
    +      unit_system: UnitSystem.SYSTEM_BASE = 0

    Accessing data stored in a component

    Using the "dot" access to get a parameter value from a component is actively discouraged, use "getter" functions instead

    Using code autogeneration, PowerSystems.jl implements accessor (or "getter") functions to enable the retrieval of parameters defined in the component struct fields. Julia syntax enables access to this data using the "dot" access (e.g. component.field), however this is actively discouraged for two reasons:

    1. We make no guarantees on the stability of component structure definitions. We will maintain version stability on the accessor methods.
    2. Per-unit conversions are made in the return of data from the accessor functions. (see the per-unit section for more details)

    For example, the my_thermal_gen.active_power_limits parameter of a thermal generator should be accessed as follows:

    julia> get_active_power_limits(my_thermal_gen)(min = 1.7, max = 3.55)

    You can also view data from all instances of a concrete type in one table with the function show_components. It provides a few options:

    1. View the standard fields by accepting the defaults.
    2. Pass a dictionary where the keys are column names and the values are functions that accept a component as a single argument.
    3. Pass a vector of symbols that are field names of the type.
    julia> show_components(system, ThermalStandard)ThermalStandard
    +┌─────────────────┬───────────┐
    +│ name            │ available │
    +├─────────────────┼───────────┤
    +│ 322_CT_6        │ true      │
    +│ 321_CC_1        │ true      │
    +│ 202_STEAM_3     │ true      │
    +│ 315_STEAM_1     │ true      │
    +│ 223_CT_4        │ true      │
    +│ 213_CT_1        │ true      │
    +│ 313_CC_1        │ true      │
    +│ 123_STEAM_2     │ true      │
    +│ 223_CT_6        │ true      │
    +│ 202_CT_2        │ true      │
    +│ 101_STEAM_3     │ true      │
    +│ 302_CT_1        │ true      │
    +│ 123_CT_1        │ true      │
    +│ 113_CT_3        │ true      │
    +│ 302_CT_3        │ true      │
    +│ 215_CT_4        │ true      │
    +│ 102_STEAM_3     │ true      │
    +│ 301_CT_4        │ true      │
    +│ 202_CT_1        │ true      │
    +│ 113_CT_2        │ true      │
    +│ 221_CC_1        │ true      │
    +│ 315_CT_7        │ true      │
    +│ 223_CT_5        │ true      │
    +│ 215_CT_5        │ true      │
    +│ 114_SYNC_COND_1 │ true      │
    +│ 323_CC_1        │ true      │
    +│ 101_STEAM_4     │ true      │
    +│ 113_CT_1        │ true      │
    +│ 223_STEAM_3     │ true      │
    +│ 318_CC_1        │ true      │
    +│ 307_CT_2        │ true      │
    +│ 213_CT_2        │ true      │
    +│ 113_CT_4        │ true      │
    +│ 315_STEAM_3     │ true      │
    +│ 118_CC_1        │ true      │
    +│ 315_CT_8        │ true      │
    +│ 302_CT_2        │ true      │
    +│ 218_CC_1        │ true      │
    +│ 213_CC_3        │ true      │
    +│ 115_STEAM_3     │ true      │
    +│ 323_CC_2        │ true      │
    +│ 101_CT_1        │ true      │
    +│ 314_SYNC_COND_1 │ true      │
    +│ 115_STEAM_2     │ true      │
    +│ 101_CT_2        │ true      │
    +│ 322_CT_5        │ true      │
    +│ 214_SYNC_COND_1 │ true      │
    +│ 315_STEAM_5     │ true      │
    +│ 207_CT_2        │ true      │
    +│ 123_STEAM_3     │ true      │
    +│ 223_STEAM_1     │ true      │
    +│ 123_CT_5        │ true      │
    +│ 301_CT_1        │ true      │
    +│ 223_STEAM_2     │ true      │
    +│ 202_STEAM_4     │ true      │
    +│ 116_STEAM_1     │ true      │
    +│ 315_STEAM_4     │ true      │
    +│ 315_STEAM_2     │ true      │
    +│ 115_STEAM_1     │ true      │
    +│ 121_NUCLEAR_1   │ true      │
    +│ 102_CT_2        │ true      │
    +│ 123_CT_4        │ true      │
    +│ 207_CT_1        │ true      │
    +│ 301_CT_3        │ true      │
    +│ 316_STEAM_1     │ true      │
    +│ 102_CT_1        │ true      │
    +│ 216_STEAM_1     │ true      │
    +│ 315_CT_6        │ true      │
    +│ 201_STEAM_3     │ true      │
    +│ 201_CT_2        │ true      │
    +│ 201_CT_1        │ true      │
    +│ 301_CT_2        │ true      │
    +│ 302_CT_4        │ true      │
    +│ 307_CT_1        │ true      │
    +│ 102_STEAM_4     │ true      │
    +│ 107_CC_1        │ true      │
    +└─────────────────┴───────────┘
    julia> show_components(system, ThermalStandard, Dict("has_time_series" => x -> has_time_series(x)))ThermalStandard +┌─────────────────┬───────────┬─────────────────┐ +│ name │ available │ has_time_series │ +├─────────────────┼───────────┼─────────────────┤ +│ 322_CT_6 │ true │ false │ +│ 321_CC_1 │ true │ false │ +│ 202_STEAM_3 │ true │ false │ +│ 315_STEAM_1 │ true │ false │ +│ 223_CT_4 │ true │ false │ +│ 213_CT_1 │ true │ false │ +│ 313_CC_1 │ true │ false │ +│ 123_STEAM_2 │ true │ false │ +│ 223_CT_6 │ true │ false │ +│ 202_CT_2 │ true │ false │ +│ 101_STEAM_3 │ true │ false │ +│ 302_CT_1 │ true │ false │ +│ 123_CT_1 │ true │ false │ +│ 113_CT_3 │ true │ false │ +│ 302_CT_3 │ true │ false │ +│ 215_CT_4 │ true │ false │ +│ 102_STEAM_3 │ true │ false │ +│ 301_CT_4 │ true │ false │ +│ 202_CT_1 │ true │ false │ +│ 113_CT_2 │ true │ false │ +│ 221_CC_1 │ true │ false │ +│ 315_CT_7 │ true │ false │ +│ 223_CT_5 │ true │ false │ +│ 215_CT_5 │ true │ false │ +│ 114_SYNC_COND_1 │ true │ false │ +│ 323_CC_1 │ true │ false │ +│ 101_STEAM_4 │ true │ false │ +│ 113_CT_1 │ true │ false │ +│ 223_STEAM_3 │ true │ false │ +│ 318_CC_1 │ true │ false │ +│ 307_CT_2 │ true │ false │ +│ 213_CT_2 │ true │ false │ +│ 113_CT_4 │ true │ false │ +│ 315_STEAM_3 │ true │ false │ +│ 118_CC_1 │ true │ false │ +│ 315_CT_8 │ true │ false │ +│ 302_CT_2 │ true │ false │ +│ 218_CC_1 │ true │ false │ +│ 213_CC_3 │ true │ false │ +│ 115_STEAM_3 │ true │ false │ +│ 323_CC_2 │ true │ false │ +│ 101_CT_1 │ true │ false │ +│ 314_SYNC_COND_1 │ true │ false │ +│ 115_STEAM_2 │ true │ false │ +│ 101_CT_2 │ true │ false │ +│ 322_CT_5 │ true │ false │ +│ 214_SYNC_COND_1 │ true │ false │ +│ 315_STEAM_5 │ true │ false │ +│ 207_CT_2 │ true │ false │ +│ 123_STEAM_3 │ true │ false │ +│ 223_STEAM_1 │ true │ false │ +│ 123_CT_5 │ true │ false │ +│ 301_CT_1 │ true │ false │ +│ 223_STEAM_2 │ true │ false │ +│ 202_STEAM_4 │ true │ false │ +│ 116_STEAM_1 │ true │ false │ +│ 315_STEAM_4 │ true │ false │ +│ 315_STEAM_2 │ true │ false │ +│ 115_STEAM_1 │ true │ false │ +│ 121_NUCLEAR_1 │ true │ false │ +│ 102_CT_2 │ true │ false │ +│ 123_CT_4 │ true │ false │ +│ 207_CT_1 │ true │ false │ +│ 301_CT_3 │ true │ false │ +│ 316_STEAM_1 │ true │ false │ +│ 102_CT_1 │ true │ false │ +│ 216_STEAM_1 │ true │ false │ +│ 315_CT_6 │ true │ false │ +│ 201_STEAM_3 │ true │ false │ +│ 201_CT_2 │ true │ false │ +│ 201_CT_1 │ true │ false │ +│ 301_CT_2 │ true │ false │ +│ 302_CT_4 │ true │ false │ +│ 307_CT_1 │ true │ false │ +│ 102_STEAM_4 │ true │ false │ +│ 107_CC_1 │ true │ false │ +└─────────────────┴───────────┴─────────────────┘
    julia> show_components(system, ThermalStandard, [:active_power, :reactive_power])ThermalStandard +┌─────────────────┬───────────┬──────────────┬────────────────┐ +│ name │ available │ active_power │ reactive_power │ +├─────────────────┼───────────┼──────────────┼────────────────┤ +│ 322_CT_6 │ true │ 0.55 │ -0.0973 │ +│ 321_CC_1 │ true │ 3.55 │ -0.0334 │ +│ 202_STEAM_3 │ true │ 0.76 │ 0.0201 │ +│ 315_STEAM_1 │ true │ 0.05 │ 0.06 │ +│ 223_CT_4 │ true │ 0.22 │ 0.0024 │ +│ 213_CT_1 │ true │ 0.55 │ 0.0923 │ +│ 313_CC_1 │ true │ 3.55 │ 1.5 │ +│ 123_STEAM_2 │ true │ 1.55 │ -0.0519 │ +│ 223_CT_6 │ true │ 0.22 │ 0.0024 │ +│ 202_CT_2 │ true │ 0.08 │ 0.0513 │ +│ 101_STEAM_3 │ true │ 0.76 │ 0.0014 │ +│ 302_CT_1 │ true │ 0.08 │ 0.0616 │ +│ 123_CT_1 │ true │ 0.55 │ 0.0062 │ +│ 113_CT_3 │ true │ 0.55 │ 0.19 │ +│ 302_CT_3 │ true │ 0.55 │ 0.1099 │ +│ 215_CT_4 │ true │ 0.55 │ 0.19 │ +│ 102_STEAM_3 │ true │ 0.76 │ -0.0231 │ +│ 301_CT_4 │ true │ 0.44 │ 0.1653 │ +│ 202_CT_1 │ true │ 0.08 │ 0.0513 │ +│ 113_CT_2 │ true │ 0.55 │ 0.19 │ +│ 221_CC_1 │ true │ 2.9697 │ -0.0752 │ +│ 315_CT_7 │ true │ 0.55 │ 0.19 │ +│ 223_CT_5 │ true │ 0.22 │ 0.0024 │ +│ 215_CT_5 │ true │ 0.55 │ 0.19 │ +│ 114_SYNC_COND_1 │ true │ 0.0 │ 1.0332 │ +│ 323_CC_1 │ true │ 3.55 │ 0.3741 │ +│ 101_STEAM_4 │ true │ 0.76 │ 0.0014 │ +│ 113_CT_1 │ true │ 0.55 │ 0.19 │ +│ 223_STEAM_3 │ true │ 3.5 │ 0.2059 │ +│ 318_CC_1 │ true │ 3.55 │ 0.6312 │ +│ 307_CT_2 │ true │ 0.55 │ 0.19 │ +│ 213_CT_2 │ true │ 0.55 │ 0.0923 │ +│ 113_CT_4 │ true │ 0.55 │ 0.19 │ +│ 315_STEAM_3 │ true │ 0.05 │ 0.06 │ +│ 118_CC_1 │ true │ 3.55 │ 0.6843 │ +│ 315_CT_8 │ true │ 0.55 │ 0.6 │ +│ 302_CT_2 │ true │ 0.08 │ 0.0616 │ +│ 218_CC_1 │ true │ 3.55 │ 0.603 │ +│ 213_CC_3 │ true │ 3.55 │ 1.358 │ +│ 115_STEAM_3 │ true │ 1.55 │ 0.8 │ +│ 323_CC_2 │ true │ 3.55 │ 0.3741 │ +│ 101_CT_1 │ true │ 0.08 │ 0.0496 │ +│ 314_SYNC_COND_1 │ true │ 0.0 │ 1.6663 │ +│ 115_STEAM_2 │ true │ 0.05 │ 0.06 │ +│ 101_CT_2 │ true │ 0.08 │ 0.0496 │ +│ 322_CT_5 │ true │ 0.55 │ -0.0973 │ +│ 214_SYNC_COND_1 │ true │ 0.0 │ 1.2528 │ +│ 315_STEAM_5 │ true │ 0.05 │ 0.06 │ +│ 207_CT_2 │ true │ 0.55 │ 0.19 │ +│ 123_STEAM_3 │ true │ 3.5 │ 0.2841 │ +│ 223_STEAM_1 │ true │ 1.55 │ -0.1031 │ +│ 123_CT_5 │ true │ 0.55 │ 0.0062 │ +│ 301_CT_1 │ true │ 0.08 │ 0.0795 │ +│ 223_STEAM_2 │ true │ 1.55 │ -0.1031 │ +│ 202_STEAM_4 │ true │ 0.76 │ 0.0201 │ +│ 116_STEAM_1 │ true │ 1.55 │ 0.8 │ +│ 315_STEAM_4 │ true │ 0.05 │ 0.06 │ +│ 315_STEAM_2 │ true │ 0.05 │ 0.06 │ +│ 115_STEAM_1 │ true │ 0.05 │ 0.06 │ +│ 121_NUCLEAR_1 │ true │ 4.0 │ -0.2187 │ +│ 102_CT_2 │ true │ 0.08 │ 0.0488 │ +│ 123_CT_4 │ true │ 0.55 │ 0.0062 │ +│ 207_CT_1 │ true │ 0.55 │ 0.19 │ +│ 301_CT_3 │ true │ 0.44 │ 0.1653 │ +│ 316_STEAM_1 │ true │ 1.55 │ 0.8 │ +│ 102_CT_1 │ true │ 0.08 │ 0.0488 │ +│ 216_STEAM_1 │ true │ 1.55 │ 0.8 │ +│ 315_CT_6 │ true │ 0.55 │ 0.19 │ +│ 201_STEAM_3 │ true │ 0.76 │ 0.0699 │ +│ 201_CT_2 │ true │ 0.08 │ 0.0529 │ +│ 201_CT_1 │ true │ 0.08 │ 0.0529 │ +│ 301_CT_2 │ true │ 0.08 │ 0.0795 │ +│ 302_CT_4 │ true │ 0.55 │ 0.1099 │ +│ 307_CT_1 │ true │ 0.55 │ 0.19 │ +│ 102_STEAM_4 │ true │ 0.76 │ -0.0231 │ +│ 107_CC_1 │ true │ 3.55 │ 0.4951 │ +└─────────────────┴───────────┴──────────────┴────────────────┘

    Per-unit conventions and data conversions

    It is often useful to express power systems data in relative terms using per-unit conventions. PowerSystems.jl supports the automatic conversion of data between three different unit systems:

    1. Natural Units: The naturally defined units of each parameter (typically MW).
    2. System Base: Parameter values are divided by the system base_power.
    3. Device Base: Parameter values are divided by the device base_mva.

    To see the unit system setting of a System:

    julia> get_units_base(system)"SYSTEM_BASE"

    To change the unit system setting of a System:

    julia> set_units_base_system!(system, "DEVICE_BASE")[ Info: Unit System changed to UnitSystem.DEVICE_BASE = 1

    The units of the parameter values stored in each struct are defined in src/descriptors/power_system_structs.json. Conversion between unit systems does not change the stored parameter values. Instead, unit system conversions are made when accessing parameters using the accessor functions (see above), thus making it imperative to utilize the accessor functions instead of the "dot" accessor methods to ensure the return of the correct values.

    JSON Serialization

    PowerSystems.jl provides functionality to serialize an entire system to a JSON file and then deserialize it back to a system. The main benefit is that deserializing is significantly faster than reconstructing the system from raw data files.

    The function that serializes the system to_json requires the system and a file name

    to_json(system, "system.json")

    The serialization process stores 3 files

    1. System data file (*.json file)
    2. Validation data file (*.json file)
    3. Time Series data file (*.h5 file)

    To deserialize:

    system2 = System("system.json")

    PowerSystems generates UUIDs for the System and all components in order to have a way to uniquely identify objects. During deserialization it restores the same UUIDs. If you will modify the System or components after deserialization then it is recommended that you set this flag to generate new UUIDs.

    system2 = System("system.json", assign_new_uuids = true)

    Reducing REPL printing

    By default PowerSystems.jl outputs to the REPL all Logging values, this can be overwhelming in some cases. Use configure_logging to create a logger with your preferences (console and/or file, levels, etc.). For more detail refer to Logging.

    Example: Set log output to only error messages

    using PowerSystems
    +using Logging
    +configure_logging(console_level = Logging.Error)

    Note: log messages are not automatically flushed to files. Call flush(logger) to make this happen.

    Refer to this page for more logging configuration options. Note that it describes how to enable debug logging for some log messages but not others.

    Viewing PowerSystems Data in JSON Format

    PowerSystems data can be serialized and deserialized in JSON. This section shows how to explore the data outside of Julia using.

    system = System("system.json")

    It can be useful to view and filter the PowerSystems data in this format. There are many tools available to browse JSON data.

    Here is an example GUI tool that is available online in a browser.

    The command line utility jq offers even more features. The rest of this document provides example commands.

    • View the entire file pretty-printed
    jq . system.json
    • View the PowerSystems component types
    jq '.data.components | .[] | .__metadata__ | .type' system.json | sort | uniq
    • View specific components
    jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard")' system.json
    • Get the count of a component type
    # There is almost certainly a better way.
    +jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard")' system.json | grep -c ThermalStandard
    • View specific component by name
    jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard" and .name == "107_CC_1")' system.json
    • Filter on a field value
    jq '.data.components | .[] | select(.__metadata__.type == "ThermalStandard" and .active_power > 2.3)' system.json
    • View the time series metadata for a component.
    jq '.data.components | .[] | select(.__metadata__.type == "RenewableDispatch") | .time_series_container' system.json
    diff --git a/v3.3.0/modeler_guide/system_dynamic_data/index.html b/v3.3.0/modeler_guide/system_dynamic_data/index.html new file mode 100644 index 0000000000..2121614bd0 --- /dev/null +++ b/v3.3.0/modeler_guide/system_dynamic_data/index.html @@ -0,0 +1,347 @@ + +Creating a System with Dynamic devices · PowerSystems.jl

    Creating a System with Dynamic devices

    You can access example data in the Power Systems Test Data Repository. Most of these systems are available to use using PowerSystemCaseBuilder.jl.

    julia> using PowerSystems
    julia> const PSY = PowerSystemsPowerSystems
    julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data")"/home/runner/work/PowerSystems.jl/PowerSystems.jl/docs/src/tutorials/tutorials_data"

    Although PowerSystems.jl is not constrained to only PSS/e files, commonly the data available comes in a pair of files: One for the static data power flow case and a second one with the dynamic components information. However, PowerSystems.jl is able to take any power flow case and specify dynamic components to it.

    The following describes the system creation for the one machine infinite bus case using custom component specifications.

    One Machine Infinite Bus Example

    First load data from any format (see Constructing a System from RAW data for details. In this example we will load a PTI power flow data format (.raw file) as follows:

    0, 100, 33, 0, 0, 60  / 24-Apr-2020 17:05:49 - MATPOWER 7.0.1-dev
    +
    +
    +     101, 'BUS 1       ',       230, 3,    1,    1, 1,        1.05,           0, 1.06, 0.94, 1.06, 0.94
    +     102, 'BUS 2       ',       230, 2,    1,    1, 1,        1.04,           0, 1.06, 0.94, 1.06, 0.94
    +0 / END OF BUS DATA, BEGIN LOAD DATA
    +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
    +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
    +     102,  1,        50,         0,       100,      -100,     1.00, 0,     100, 0, 1, 0, 0, 1, 1, 100,       100,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
    +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
    +     101,      102, 1,    0.00,     0.05,   0.000,     100,     100,     100, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +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 VOLTAGE SOURCE CONVERTER DATA
    +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA
    +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA
    +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA
    +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA
    +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA
    +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA
    +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA
    +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA
    +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA
    +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA
    +0 / END OF INDUCTION MACHINE DATA
    +Q

    Based on the description provided in PTI files, this is a two-bus system, on which the bus 101 (bus 1) is the reference bus at 1.05 pu, and bus 102 (bus 2) is PV bus, to be set at 1.04 pu. There is one 100 MVA generator connected at bus 2, producing 50 MW. There is an equivalent line connecting buses 1 and 2 with a reactance of $0.05$ pu.

    We can load this data file first

    julia> omib_sys = System(joinpath(file_dir, "OMIB.raw"), runchecks = false)[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
    +[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
    +[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Load data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict...
    +┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing...
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:985
    +┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing...
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:991
    +[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg.
    +[ Info: the voltage setpoint on generator 1 does not match the value at bus 102
    +┌ Info: Constructing System from Power Models
    +│   data["name"] = "omib"
    +└   data["source_type"] = "pti"
    +[ Info: Reading bus data
    +[ Info: Reading Load data in PowerModels dict to populate System ...
    +[ Info: Reading LoadZones data in PowerModels dict to populate System ...
    +[ Info: Reading generator data
    +[ Info: Reading branch data
    +[ Info: Reading branch data
    +[ Info: Reading DC Line data
    +[ Info: Reading storage data
    +System
    +┌───────────────────┬─────────────┐
    +│ Property          │ Value       │
    +├───────────────────┼─────────────┤
    +│ Name              │             │
    +│ Description       │             │
    +│ System Units Base │ SYSTEM_BASE │
    +│ Base Power        │ 100.0       │
    +│ Base Frequency    │ 60.0        │
    +│ Num Components    │ 7           │
    +└───────────────────┴─────────────┘
    +
    +Static Components
    +┌─────────────────┬───────┬────────────────────────┬───────────────┐
    +│ Type            │ Count │ Has Static Time Series │ Has Forecasts │
    +├─────────────────┼───────┼────────────────────────┼───────────────┤
    +│ ACBus           │ 2     │ false                  │ false         │
    +│ Arc             │ 1     │ false                  │ false         │
    +│ Area            │ 1     │ false                  │ false         │
    +│ Line            │ 1     │ false                  │ false         │
    +│ LoadZone        │ 1     │ false                  │ false         │
    +│ ThermalStandard │ 1     │ false                  │ false         │
    +└─────────────────┴───────┴────────────────────────┴───────────────┘

    Dynamic Generator

    We are now interested in attaching to the system the dynamic component that will be modeling our dynamic generator. The data can be added by directly passing a .dyr file, but in this example we want to add custom dynamic data.

    Dynamic generator devices are composed by 5 components, namely, machine, shaft, avr, tg and pss (see DynamicGenerator). So we will be adding functions to create all of its components and the generator itself. The example code creates all the components for a DynamicGenerator based on specific models for its components. This result will be a classic machine model without AVR, Turbine Governor and PSS.

    julia> #Machine
    +       machine_classic = BaseMachine(
    +           R = 0.0,
    +           Xd_p = 0.2995,
    +           eq_p = 0.7087,
    +       )
    +       
    +       #ShaftBaseMachine(0.0, 0.2995, 0.7087, Dict{String, Any}(), Symbol[], 0, InfrastructureSystems.InfrastructureSystemsInternal(UUID("e15f2710-3335-489e-91cc-eb0c9ef7b93e"), nothing, nothing))
    julia> shaft_damping = SingleMass( + H = 3.148, + D = 2.0, + ) + + #AVRSingleMass(3.148, 2.0, Dict{String, Any}(), [:δ, :ω], 2, InfrastructureSystems.InfrastructureSystemsInternal(UUID("27528249-9917-4b1a-a833-8a1b8ef95d49"), nothing, nothing))
    julia> avr_none = AVRFixed(Vf = 0.0) + + #TurbineGovernorAVRFixed(0.0, 1.0, Dict{String, Any}(), Symbol[], 0, StateTypes[], InfrastructureSystems.InfrastructureSystemsInternal(UUID("9a313e8c-7ba0-4278-9001-82da3c0b8606"), nothing, nothing))
    julia> tg_none = TGFixed(efficiency = 1.0) + + #PSSTGFixed(1.0, 1.0, Dict{String, Any}(), Symbol[], 0, InfrastructureSystems.InfrastructureSystemsInternal(UUID("61278543-2665-4264-be0e-e6ab38baee7b"), nothing, nothing))
    julia> pss_none = PSSFixed(V_pss = 0.0);

    Then we can collect all the dynamic components and create the dynamic generator and assign it to a static generator of choice. In this example we will add it to the generator "generator-102-1" as follows:

    julia> #Collect the static gen in the system
    +       static_gen = get_component(Generator, omib_sys, "generator-102-1")
    +       #Creates the dynamic generatorgenerator-102-1 (ThermalStandard):
    +   name: generator-102-1
    +   available: true
    +   status: true
    +   bus: BUS 2 (ACBus)
    +   active_power: 0.5
    +   reactive_power: 0.0
    +   rating: 1.4142135623730951
    +   active_power_limits: (min = 0.0, max = 1.0)
    +   reactive_power_limits: (min = -1.0, max = 1.0)
    +   ramp_limits: (up = 1.0, down = 1.0)
    +   operation_cost: ThreePartCost
    +   base_power: 100.0
    +   time_limits: nothing
    +   must_run: false
    +   prime_mover_type: PrimeMovers.OT = 19
    +   fuel: ThermalFuels.OTHER = 14
    +   services: 0-element Vector{Service}
    +   time_at_status: 10000.0
    +   dynamic_injector: nothing
    +   ext: Dict{String, Any}("z_source" => (r = 0.0, x = 1.0))
    +   time_series_container:
    +   InfrastructureSystems.SystemUnitsSettings:
    +      base_value: 100.0
    +      unit_system: UnitSystem.SYSTEM_BASE = 0
    julia> dyn_gen = DynamicGenerator( + name = get_name(static_gen), + ω_ref = 1.0, + machine = machine_classic, + shaft = shaft_damping, + avr = avr_none, + prime_mover = tg_none, + pss = pss_none, + ) + #Add the dynamic generator the system +generator-102-1 (DynamicGenerator{BaseMachine, SingleMass, AVRFixed, TGFixed, PSSFixed}): + name: generator-102-1 + ω_ref: 1.0 + machine: BaseMachine + shaft: SingleMass + avr: AVRFixed + prime_mover: TGFixed + pss: PSSFixed + base_power: 100.0 + n_states: 2 + states: [:δ, :ω] + ext: Dict{String, Any}() + internal: InfrastructureSystems.InfrastructureSystemsInternal
    julia> add_component!(omib_sys, dyn_gen, static_gen)

    Once the data is created, we can export our system data such that it can be reloaded later:

    to_json(omib_sys, "YOUR_DIR/omib_sys.json")

    Example with Dynamic Inverter

    We will now create a three bus system with one inverter and one generator. In order to do so, we will parse the following file ThreebusInverter.raw:

    0, 100, 33, 0, 0, 60  / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev
    +
    +
    +     101, 'BUS 1       ',       138, 3,    1,    1, 1,           1.02,        0,  1.1,  0.9,  1.1,  0.9
    +     102, 'BUS 2       ',       138, 2,    1,    1, 1,           1.0142,           0,  1.1,  0.9,  1.1,  0.9
    +     103, 'BUS 3       ',       138, 2,    1,    1, 1,           1.0059,           0,  1.1,  0.9,  1.1,  0.9
    +0 / END OF BUS DATA, BEGIN LOAD DATA
    +     101,  1, 1,    1,    1,       50,       10, 0, 0, 0, 0, 1, 1, 0
    +     102,  1, 1,    1,    1,       100,      30, 0, 0, 0, 0, 1, 1, 0
    +     103,  1, 1,    1,    1,       30,       10, 0, 0, 0, 0, 1, 1, 0
    +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA
    +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA
    +     102,  1,       70,         0,       100,      -100,   1.0142, 0,     100, 0, 1, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
    +     103,  1,       80,         0,       100,      -100,   1.0059, 0,     100, 0, 1, 0, 0, 1, 1, 100,       318,         0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1
    +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA
    +     101,      103, 1,  0.01000,     0.12,      0.2,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +     101,      102, 1,  0.01000,     0.12,      0.2,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +     102,      103, 1,  0.02000,     0.9,      1.0,     250,     250,     250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1
    +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 VOLTAGE SOURCE CONVERTER DATA
    +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA
    +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA
    +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA
    +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA
    +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA
    +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA
    +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA
    +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA
    +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA
    +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA
    +0 / END OF INDUCTION MACHINE DATA
    +Q

    That describes a three bus connected system, with generators connected at bus 2 and 3, and loads in three buses. We can load the system and attach an infinite source on the reference bus:

    julia> threebus_sys = System(joinpath(file_dir, "ThreeBusInverter.raw"), runchecks = false)[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
    +[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines
    +[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Load data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict...
    +[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict...
    +┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing...
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:985
    +┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing...
    +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:991
    +[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg.
    +[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg.
    +[ Info: angmin and angmax values are 0, widening these values on branch 3 to +/- 60.0 deg.
    +┌ Info: Constructing System from Power Models
    +│   data["name"] = "threebusinverter"
    +└   data["source_type"] = "pti"
    +[ Info: Reading bus data
    +[ Info: Reading Load data in PowerModels dict to populate System ...
    +[ Info: Reading LoadZones data in PowerModels dict to populate System ...
    +[ Info: Reading generator data
    +[ Info: Reading branch data
    +[ Info: Reading branch data
    +[ Info: Reading DC Line data
    +[ Info: Reading storage data
    +System
    +┌───────────────────┬─────────────┐
    +│ Property          │ Value       │
    +├───────────────────┼─────────────┤
    +│ Name              │             │
    +│ Description       │             │
    +│ System Units Base │ SYSTEM_BASE │
    +│ Base Power        │ 100.0       │
    +│ Base Frequency    │ 60.0        │
    +│ Num Components    │ 16          │
    +└───────────────────┴─────────────┘
    +
    +Static Components
    +┌─────────────────┬───────┬────────────────────────┬───────────────┐
    +│ Type            │ Count │ Has Static Time Series │ Has Forecasts │
    +├─────────────────┼───────┼────────────────────────┼───────────────┤
    +│ ACBus           │ 3     │ false                  │ false         │
    +│ Arc             │ 3     │ false                  │ false         │
    +│ Area            │ 1     │ false                  │ false         │
    +│ Line            │ 3     │ false                  │ false         │
    +│ LoadZone        │ 1     │ false                  │ false         │
    +│ StandardLoad    │ 3     │ false                  │ false         │
    +│ ThermalStandard │ 2     │ false                  │ false         │
    +└─────────────────┴───────┴────────────────────────┴───────────────┘

    We will connect a OneDOneQMachine machine at bus 102, and a Virtual Synchronous Generator Inverter at bus 103. An inverter is composed by a converter, outer control, inner control, dc source, frequency estimator and a filter (see DynamicInverter).

    Dynamic Inverter definition

    We will create specific components of the inverter as follows:

    julia> #Define converter as an AverageConverter
    +       converter_high_power = AverageConverter(rated_voltage = 138.0, rated_current = 100.0)
    +       
    +       #Define Outer Control as a composition of Virtual Inertia + Reactive Power DroopAverageConverter(138.0, 100.0, Dict{String, Any}(), Symbol[], 0)
    julia> outer_cont = OuterControl( + active_power_control = VirtualInertia(Ta = 2.0, kd = 400.0, kω = 20.0), + reactive_power_control = ReactivePowerDroop(kq = 0.2, ωf = 1000.0), + ) + + #Define an Inner Control as a Voltage+Current Controler with Virtual Impedance:OuterControl{VirtualInertia, ReactivePowerDroop}(VirtualInertia(2.0, 400.0, 20.0, 1.0, Dict{String, Any}(), [:θ_oc, :ω_oc], 2), ReactivePowerDroop(0.2, 1000.0, 1.0, Dict{String, Any}(), [:q_oc], 1), Dict{String, Any}(), [:θ_oc, :ω_oc, :q_oc], 3)
    julia> inner_cont = VoltageModeControl( + kpv = 0.59, #Voltage controller proportional gain + kiv = 736.0, #Voltage controller integral gain + kffv = 0.0, #Binary variable enabling the voltage feed-forward in output of current controllers + rv = 0.0, #Virtual resistance in pu + lv = 0.2, #Virtual inductance in pu + kpc = 1.27, #Current controller proportional gain + kic = 14.3, #Current controller integral gain + kffi = 0.0, #Binary variable enabling the current feed-forward in output of current controllers + ωad = 50.0, #Active damping low pass filter cut-off frequency + kad = 0.2, #Active damping gain + ) + + #Define DC Source as a FixedSource:VoltageModeControl(0.59, 736.0, 0.0, 0.0, 0.2, 1.27, 14.3, 0.0, 50.0, 0.2, Dict{String, Any}(), [:ξd_ic, :ξq_ic, :γd_ic, :γq_ic, :ϕd_ic, :ϕq_ic], 6)
    julia> dc_source_lv = FixedDCSource(voltage = 600.0) + + #Define a Frequency Estimator as a PLL based on Vikram Kaura and Vladimir Blaskoc 1997 paper:FixedDCSource(600.0, Dict{String, Any}(), Symbol[], 0, InfrastructureSystems.InfrastructureSystemsInternal(UUID("22858dcd-f3d0-4252-819d-a3e4108d2fc4"), nothing, nothing))
    julia> pll = KauraPLL( + ω_lp = 500.0, #Cut-off frequency for LowPass filter of PLL filter. + kp_pll = 0.084, #PLL proportional gain + ki_pll = 4.69, #PLL integral gain + ) + + #Define an LCL filter:KauraPLL(500.0, 0.084, 4.69, Dict{String, Any}(), [:vd_pll, :vq_pll, :ε_pll, :θ_pll], 4)
    julia> filt = LCLFilter(lf = 0.08, rf = 0.003, cf = 0.074, lg = 0.2, rg = 0.01)LCLFilter(0.08, 0.003, 0.074, 0.2, 0.01, Dict{String, Any}(), [:ir_cnv, :ii_cnv, :vr_filter, :vi_filter, :ir_filter, :ii_filter], 6)

    Similarly we will construct a dynamic generator as follows:

    julia> #Create the machine
    +       machine_oneDoneQ = OneDOneQMachine(
    +           R = 0.0,
    +           Xd = 1.3125,
    +           Xq = 1.2578,
    +           Xd_p = 0.1813,
    +           Xq_p = 0.25,
    +           Td0_p = 5.89,
    +           Tq0_p = 0.6,
    +       )
    +       
    +       #ShaftOneDOneQMachine(0.0, 1.3125, 1.2578, 0.1813, 0.25, 5.89, 0.6, Dict{String, Any}(), [:eq_p, :ed_p], 2, InfrastructureSystems.InfrastructureSystemsInternal(UUID("05e2dfc6-9e77-4d0e-becc-d57e1bae202f"), nothing, nothing))
    julia> shaft_no_damping = SingleMass( + H = 3.01, + D = 0.0, + ) + + #AVR: Type I: Resembles a DC1 AVRSingleMass(3.01, 0.0, Dict{String, Any}(), [:δ, :ω], 2, InfrastructureSystems.InfrastructureSystemsInternal(UUID("640e2f64-fe3a-42cf-a654-1894ae074434"), nothing, nothing))
    julia> avr_type1 = AVRTypeI( + Ka = 20.0, + Ke = 0.01, + Kf = 0.063, + Ta = 0.2, + Te = 0.314, + Tf = 0.35, + Tr = 0.001, + Va_lim = (min = -5.0, max = 5.0), + Ae = 0.0039, #1st ceiling coefficient + Be = 1.555, #2nd ceiling coefficient + ) + + #No TGAVRTypeI(20.0, 0.01, 0.063, 0.2, 0.314, 0.35, 0.001, (min = -5.0, max = 5.0), 0.0039, 1.555, 1.0, Dict{String, Any}(), [:Vf, :Vr1, :Vr2, :Vm], 4, StateTypes[StateTypes.Differential = 1, StateTypes.Differential = 1, StateTypes.Differential = 1, StateTypes.Differential = 1], InfrastructureSystems.InfrastructureSystemsInternal(UUID("5a865b6b-e100-4540-aa78-8f2d5c7073f0"), nothing, nothing))
    julia> tg_none = TGFixed(efficiency = 1.0) + + #No PSSTGFixed(1.0, 1.0, Dict{String, Any}(), Symbol[], 0, InfrastructureSystems.InfrastructureSystemsInternal(UUID("7acda1f4-3de3-46cb-8701-fc4bbe809d0c"), nothing, nothing))
    julia> pss_none = PSSFixed(V_pss = 0.0);

    Add the components to the System

    julia> for g in get_components(Generator, threebus_sys)
    +           #Find the generator at bus 102
    +           if get_number(get_bus(g)) == 102
    +               #Create the dynamic generator
    +               case_gen = DynamicGenerator(
    +                   name = get_name(g),
    +                   ω_ref = 1.0,
    +                   machine = machine_oneDoneQ,
    +                   shaft = shaft_no_damping,
    +                   avr = avr_type1,
    +                   prime_mover = tg_none,
    +                   pss = pss_none,
    +               )
    +               #Attach the dynamic generator to the system
    +               add_component!(threebus_sys, case_gen, g)
    +           #Find the generator at bus 103
    +           elseif get_number(get_bus(g)) == 103
    +               #Create the dynamic inverter
    +               case_inv = DynamicInverter(
    +                   name = get_name(g),
    +                   ω_ref = 1.0,
    +                   converter = converter_high_power,
    +                   outer_control = outer_cont,
    +                   inner_control = inner_cont,
    +                   dc_source = dc_source_lv,
    +                   freq_estimator = pll,
    +                   filter = filt,
    +               )
    +               #Attach the dynamic inverter to the system
    +               add_component!(threebus_sys, case_inv, g)
    +           end
    +       end
    +       
    +       # We can check that the system has the Dynamic Inverter and Generator
    julia> threebus_sysSystem +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 18 │ +└───────────────────┴─────────────┘ + +Static Components +┌─────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├─────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 3 │ false │ false │ +│ Arc │ 3 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 3 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ StandardLoad │ 3 │ false │ false │ +│ ThermalStandard │ 2 │ false │ false │ +└─────────────────┴───────┴────────────────────────┴───────────────┘ + +Dynamic Components +┌──────────────────┬───────┐ +│ Type │ Count │ +├──────────────────┼───────┤ +│ DynamicGenerator │ 1 │ +│ DynamicInverter │ 1 │ +└──────────────────┴───────┘

    Finally we can seraliaze the system data for later reloading

    to_json(threebus_sys, "YOUR_DIR/threebus_sys.json")
    diff --git a/v3.3.0/modeler_guide/time_series/index.html b/v3.3.0/modeler_guide/time_series/index.html new file mode 100644 index 0000000000..752aa8bc35 --- /dev/null +++ b/v3.3.0/modeler_guide/time_series/index.html @@ -0,0 +1,70 @@ + +Time Series Data · PowerSystems.jl

    Time Series Data

    Introduction

    The bulk of the data in many power system models is time series data, in order to organize the data the potential inherent complexity, PowerSystems.jl has a set of definitions to enable consistent modeling.

    • Resolution: The period of time between each discrete value in the data, all resolutions are represented using Dates.Period types. For instance, a Day-ahead market data set usually has a resolution of Hour(1), a Real-Time market data set usually has a resolution of Minute(5).

    • Static data: a single column of time series values for a component field (such as active power) where each time period is represented by a single value. This data commonly is obtained from historical information or the realization of a time-varying quantity.

    This category of Time Series data usually comes in the following format:

    DateTimeValue
    2020-09-01T00:00:00100.0
    2020-09-01T01:00:00101.0
    2020-09-01T02:00:0099.0

    Where a column (or several columns) represent the timestamp associated with the value and a column stores the values of interest.

    • Forecasts: Predicted values of a time-varying quantity that commonly features a look-ahead and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms.

    Forecast data usually comes in the following format:

    DateTime01234567
    2020-09-01T00:00:00100.0101.0101.390.098.087.088.067.0
    2020-09-01T01:00:00101.0101.399.098.088.988.367.189.4
    2020-09-01T02:00:0099.067.089.099.9100.0101.0112.0101.3

    Where a column (or several columns) represent the time stamp associated with the initial time of the forecast, and the columns represent the forecasted values.

    • Interval: The period of time between forecasts initial times. In PowerSystems.jl all intervals are represented using Dates.Period types. For instance, in a Day-Ahead market simulation, the interval of the time series is usually Hour(24), in the example above, the interval is Hour(1).

    • Horizon: Is the count of discrete forecasted values, all horizons in PowerSystems.jl are represented with Int. For instance, many Day-ahead markets will have a forecast with a horizon 24.

    • Forecast window: Represents the forecasted value starting at a particular initial time.

    Currently PowerSystems.jl does not support Forecasts or SingleTimeSeries with dissimilar intervals or resolution.

    Types

    PowerSystems.jl supports two categories of time series data depending on the process to obtain the data:

    • Static data: a single column of time series values for a component field (such as active power) where each time period is represented by a single value. This data commonly is obtained from historical information or the realization of a time-varying quantity.
    • Forecasts: Predicted values of a time-varying quantity that commonly features a look-ahead and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms.

    Static Time Series Data

    PowerSystems defines the Julia struct SingleTimeSeries to represent this data.

    Forecasts

    PowerSystems defines the following Julia structs to represent forecasts:

    • Deterministic: Point forecast without any uncertainty representation.
    • Probabilistic: Stores a discretized cumulative distribution functions (CDFs) or probability distribution functions (PDFs) at each time step in the look-ahead window.
    • Scenarios: Stores a set of probable trajectories for forecasted quantity with equal probability.

    Storage

    By default PowerSystems stores time series data in an HDF5 file. This prevents large datasets from overwhelming system memory. If you know that your dataset will fit in your computer's memory then you can increase performance by storing it in memory. Here is an example of how to do this:

    sys = System(100.0; time_series_in_memory = true)

    PowerSystems stores the HDF5 file in the tmp filesystem by default. You can change this by passing time_series_directory = X when you create the System. This is required if the time series data is larger than the amount of tmp space available. You can also override the location by setting the environment variable SIIPTIMESERIES_DIRECTORY to another directory.

    Compression

    PowerSystems does not enable HDF5 compression by default. You can enable it to get significant storage savings at the cost of CPU time.

    # Take defaults.
    +sys = System(100.0; enable_compression = true)
    # Customize.
    +settings = CompressionSettings(
    +    enabled = true,
    +    type = CompressionTypes.DEFLATE,  # BLOSC is also supported
    +    level = 3,
    +    shuffle = true,
    +)
    +sys = System(100.0; compression = settings)

    Refer to the HDF5.jl and HDF5 documentation for more details on the options.

    Creating Time Series Data

    PowerSystems supports several methods to load time series data (Forecasts or StaticTimeSeries) into a System.

    • Automated parsing during system construction, this method loads the data from CSV files. Refer to the parsing documentation.

    • Create directly from data in TimeSeries.TimeArray or DataFrames.DataFrame.

    Examples:

    When creating data for SingleTimeSeries the user can directly pass a TimeSeries.TimeArray to the constructor.

        resolution = Dates.Hour(1)
    +    dates = range(DateTime("2020-01-01T00:00:00"), step = resolution, length = 24)
    +    data = TimeArray(dates, ones(24))
    +    time_series = SingleTimeSeries("max_active_power", data)

    When creating time series data that represents forecasts, the data can be stored in any AbstractDict where the key is the initial time of the forecast and the value field is the forecast value. The value fields in the dictionary can be regular vectors or TimeSeries.TimeArray.

        resolution = Dates.Hour(1)
    +    data = Dict(
    +        DateTime("2020-01-01T00:00:00") => 10.0*ones(24),
    +        DateTime("2020-01-01T01:00:00") => 5.0*ones(24),
    +    )
    +    forecast = Deterministic("max_active_power", data, resolution)
    • Load from CSV file. For Deterministic forecasts, each row represents one look-ahead window. The first column must be the initial time and the rest must be the forecast values. The CSV file must have no header in the first row.
        resolution = Dates.Hour(1)
    +    forecast = Deterministic("max_active_power", csv_filename, component, resolution)

    Scaling factors

    Time series data can store actual component values (for instance MW) or scaling factors intended to be multiplied by a scalar to generate the component values. By default PowerSystems treats the values in the time series data as physical units. In order to specify them as scaling factors, you must pass the accessor function that provides the multiplier value. This value must be passed into the forecast when you create it.

    Example:

        resolution = Dates.Hour(1)
    +    data = Dict(
    +        DateTime("2020-01-01T00:00:00") => ones(24),
    +        DateTime("2020-01-01T01:00:00") => ones(24),
    +    )
    +    forecast = Deterministic(
    +	"max_active_power",
    +	data,
    +	resolution,
    +	scaling_factor_multiplier = get_max_active_power,
    +    )

    In this example, the forecasted component is a generator. Whenever the user retrieves the forecast data PowerSystems will call get_max_active_power(component) and multiply the result with the forecast values (scaling factors). For instance it the maximum active power returns the value 50.0 and the scaling factor at some time point is 0.65, the forecast value will correspond to 32.5.

    Adding time series to the System

    Adding time series data to a system requires a component that is already attached to the system. Extending the example above:

        add_time_series!(sys, component, forecast)

    In order to optimize the storage of time series data, time series can be shared across devices to avoid duplication. If the same forecast applies to multiple components then can call add_time_series!, passing the collection of components that share the time series data.

        add_time_series!(sys, components, forecast)

    This function stores a single copy of the data. Each component will store a reference to that data.

    Removing time series data

    Time series instances can be removed from a system like this:

        remove_time_series!(Deterministic, sys, "max_active_power")

    Note: If you are storing time series data in an HDF5 file, this does not actually free up file space (HDF5 behavior). If you want to remove all or most time series instances then consider using clear_time_series!. It will delete the HDF5 file and create a new one. PowerSystems has plans to automate this type of workflow.

        clear_time_series!(sys)

    Retrieving time series data

    PowerSystems provides several methods to retrieve time series data. It is important that you choose the best one for your use case as there are performance implications. When an accessor function is used to create the forecast, the get_time_series_array methods will apply the associated multiplier and return a different value than is stored. If you want to explore the data as it's stored rather than as it's intended for modeling use, refer to the next section.

    Get a TimeArray for a SingleTimeSeries

        ta = get_time_series_array(
    +        SingleTimeSeries,
    +        component,
    +        "max_active_power",
    +        start_time = DateTime("2020-01-01T00:00:00"),
    +        len = 24,
    +    )

    Note: The default behavior is to read all data, so specify start_time and len if you only need a subset of data.

    Get a TimeArray for a Deterministic forecast

    For forecasts, the interfaces assume that modeling code will access one forecast window at a time. Here's how to get one window:

        ta = get_time_series_array(
    +        Deterministic,
    +        component,
    +        "max_active_power",
    +        start_time = DateTime("2020-01-01T00:00:00"),
    +    )

    Data exploration

    If you want to explore the time series data as it is stored in a system then you will want to use the get_time_series function.

    Warning: This will load all forecast windows into memory by default. Be aware of how much data is stored.

    Note: Unlike the functions above this will only return the exact stored data. It will not apply a scaling factor multiplier.

        forecast = get_time_series(Deterministic, component, "max_active_power")

    You can limit the data returned by specifying start_time and count.

        forecast = get_time_series(
    +        Deterministic,
    +        component,
    +        "max_active_power",
    +        start_time = DateTime("2020-01-09T00:00:00"),
    +        count = 10,
    +    )

    Once you have a forecast instance you can access a specific window like this:

        window = get_window(forecast, DateTime("2020-01-09T00:00:00"))

    or iterate over the look-ahead windows like this:

        for window in iterate_windows(forecast)
    +        @show window
    +    end

    Using forecast data in simulations

    The interfaces documented up to this point are useful for the development of scripts and models that use a small amount of forecasting data or do not require accessing time series data multiple times. It is important to understand the performance implications of accessing forecast windows repeatedly like in the case of production cost modeling simulations.

    If each forecast window contains an array of 24 floats and the windows cover an entire year then each retrieval will involve a small disk read. This can slow down a simulation significantly, especially if the underlying storage uses spinning disks.

    PowerSystems provides an alternate interface that pre-fetches data into the system memory with large reads in order to mitigate this potential problem. The mechanism creates a cache of data and makes it available to the user.

    It is highly recommended that you use this interface for modeling implementations. This is particularly relevant for models using large datasets.

        cache = ForecastCache(Deterministic, component, "max_active_power")
    +    window1 = get_next_time_series_array(cache)
    +    window2 = get_next_time_series_array(cache)
    +
    +    # or
    +
    +    for window in cache
    +        @show window
    +    end

    Each iteration on the cache object will deliver the next forecast window. get_next_time_series_array will return nothing when all windows have been delivered.

    Transform static time series into forecasts

    A common workflow in developing models is transforming data generated from a realization and stored in a single column into deterministic forecasts to account for the effects of the look-ahead. Usually, this workflow leads to large data duplications in the overlapping windows between forecasts.

    PowerSystems provides a method to transform SingleTimeSeries data into Deterministic forecasts without duplicating any data. The resulting object behaves exactly like a Deterministic. Instead of storing windows at each initial time it provides a view into the existing data at incrementing offsets.

    Here's an example:

        # Create static time series data.
    +    resolution = Dates.Hour(1)
    +    dates = range(DateTime("2020-01-01T00:00:00"), step = resolution, length = 8760)
    +    data = TimeArray(dates, ones(8760))
    +    ts = SingleTimeSeries("max_active_power", data)
    +    add_time_series!(sys, component, ts)
    +
    +    # Transform it to Deterministic
    +    transform_single_time_series!(sys, 24, Hour(24))

    This function transforms all SingleTimeSeries instances stored in the system. You can also call it on a single component.

    You can now access either a Deterministic or the original SingleTimeSeries.

        ta_forecast = get_time_series_array(
    +        Deterministic,
    +        component,
    +        "max_active_power",
    +        start_time = DateTime("2020-01-01T00:00:00"),
    +    )
    +    ta_static = get_time_series_array(SingleTimeSeries, component, "max_active_power")

    Note: The actual type of the returned forecast will be DeterministicSingleTimeSeries. This type and Deterministic are subtypes of AbstractDeterministic and implement all of the same methods (i.e., they behave identically).

    Time Series Validation

    PowerSystems applies validation rules whenever users add time series to a System. It will throw an exception if any rule is violated.

    1. All time series data, static or forecasts, must have the same resolution.
    2. All forecasts must have identical parameters: initial timestamp, horizon, interval, look-ahead window count.

    Static time series instances may have different start times and lengths.

    Data Format

    Refer to this page for details on how the time series data is stored in HDF5 files.

    diff --git a/v3.3.0/modeler_guide/type_structure/index.html b/v3.3.0/modeler_guide/type_structure/index.html new file mode 100644 index 0000000000..5e38c1ef06 --- /dev/null +++ b/v3.3.0/modeler_guide/type_structure/index.html @@ -0,0 +1,2 @@ + +Type Structure · PowerSystems.jl

    Type Structure

    The abstract hierarchy enables categorization of the devices by their operational characteristics and modeling requirements.

    For instance, generation is classified by the distinctive data requirements for modeling in three categories: ThermalGen, RenewableGen, and HydroGen.

    As a result of this design, developers can define model logic entirely based on abstract types and create generic code to support modeling technologies that are not yet implemented in the package.

    PowerSystems.jl has a category Topology of topological components (e.g., ACBus, Arc), separate from the physical components.

    The hierarchy also includes components absent in standard data models, such as services. The services category includes reserves, transfers and AGC. The power of PowerSystems.jl lies in providing the abstraction without an implicit mathematical representation of the component.

    In this tutorial you can find a more detailed introduction to the type system and how to manipulate data.

    diff --git a/v3.3.0/quick_start_guide/index.html b/v3.3.0/quick_start_guide/index.html new file mode 100644 index 0000000000..7222602688 --- /dev/null +++ b/v3.3.0/quick_start_guide/index.html @@ -0,0 +1,409 @@ + +Quick Start Guide · PowerSystems.jl

    Quick Start Guide

    PowerSystems.jl is structured to enable data creation scripts, flexible interfaces for data intake and extension of the data model. These features are enabled through three main features:

    • Abstract type hierarchy,
    • Optimized read/write data container (the container is called System),
    • Utilities to facilitate modeling, extensions, and integration.

    It is possible to load examples systems directly using PowerSystemCaseBuilder.

    julia> using PowerSystems

    Loading data from files

    Data can be loaded from several file formats and return a summary of the system's components and time-series. Some example files can be found in the tutorials data folder


    julia> system_data = System(joinpath(file_dir, "RTS_GMLC.m"))┌ Error: Matlab parser skipping line number 802 consisting of: +│ ]; +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 101 to 1.0468 to match generator set-point +[ Info: Correcting vm in bus 102 to 1.0467 to match generator set-point +[ Info: Correcting vm in bus 107 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 113 to 1.0347 to match generator set-point +[ Info: Correcting vm in bus 115 to 1.0428 to match generator set-point +[ Info: Correcting vm in bus 116 to 1.0461 to match generator set-point +[ Info: Correcting vm in bus 201 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 202 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 207 to 0.9699 to match generator set-point +[ Info: Correcting vm in bus 213 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 215 to 1.0437 to match generator set-point +[ Info: Correcting vm in bus 216 to 1.0473 to match generator set-point +[ Info: Correcting vm in bus 301 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 302 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 307 to 0.9568 to match generator set-point +[ Info: Correcting vm in bus 313 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 315 to 1.0422 to match generator set-point +[ Info: Correcting vm in bus 316 to 1.0449 to match generator set-point +[ Info: Correcting vm in bus 114 to 1.0441 to match generator set-point +[ Info: Correcting vm in bus 214 to 1.05 to match generator set-point +[ Info: Correcting vm in bus 314 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 118 to 1.0 to match generator set-point +[ Info: Correcting vm in bus 122 to 1.0 to match generator set-point +[ Info: extending matpower format with data: areas 3x3 +[ Info: extending matpower format with data: gen_name 158x4 +[ Info: added zero cost function data for dclines +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 32 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 32 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 29 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 29 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 1 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 1 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 54 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 54 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 78 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 78 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 81 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 81 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 101 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 101 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 2 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 2 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 105 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 105 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 109 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 109 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 74 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 74 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 41 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 41 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 65 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 65 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 51 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 51 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 53 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 53 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 106 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 106 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 119 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 119 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 27 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 27 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 75 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 75 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 42 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 42 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 33 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 33 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 28 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 28 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 50 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 50 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 52 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 52 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 111 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 111 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 63 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 63 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 115 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 115 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 92 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 92 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 88 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 88 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 93 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 93 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 26 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 26 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 10 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 10 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 120 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 120 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 77 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 77 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 24 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 24 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 87 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 87 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 117 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 117 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 58 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 58 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 25 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 25 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 114 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 114 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 23 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 23 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 49 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 49 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 59 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 59 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 5 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 5 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 31 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 31 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 89 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 89 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 62 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 62 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 43 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 43 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 90 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 90 from 90.0 to 60.0 deg. +[ Info: this code only supports angmin values in -90 deg. to 90 deg., tightening the value on branch 39 from -90.0 to -60.0 deg. +[ Info: this code only supports angmax values in -90 deg. to 90 deg., tightening the value on branch 39 from 90.0 to 60.0 deg. +[ Info: the voltage setpoint on generator 78 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 105 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 109 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 155 does not match the value at bus 317 +[ Info: the voltage setpoint on generator 106 does not match the value at bus 312 +[ Info: the voltage setpoint on generator 75 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 111 does not match the value at bus 319 +[ Info: the voltage setpoint on generator 121 does not match the value at bus 103 +[ Info: the voltage setpoint on generator 141 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 77 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 117 does not match the value at bus 212 +[ Info: the voltage setpoint on generator 154 does not match the value at bus 309 +[ Info: the voltage setpoint on generator 122 does not match the value at bus 119 +[ Info: the voltage setpoint on generator 137 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 79 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 80 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 104 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 123 does not match the value at bus 308 +[ Info: the voltage setpoint on generator 140 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 107 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 97 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 156 does not match the value at bus 303 +[ Info: the voltage setpoint on generator 136 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 148 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 108 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 116 does not match the value at bus 104 +[ Info: the voltage setpoint on generator 76 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 138 does not match the value at bus 320 +[ Info: the voltage setpoint on generator 18 does not match the value at bus 118 +[ Info: the from bus voltage setpoint on dc line 1 does not match the value at bus 113 +[ Info: the to bus voltage setpoint on dc line 1 does not match the value at bus 316 +[ Info: simplifying pwl cost on generator 78, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 81, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 101, [0.0, 0.0, 0.309, 0.0, 0.618, 0.0, 0.927, 0.0] -> [0.0, 0.0, 0.927, 0.0] +[ Info: simplifying pwl cost on generator 105, [0.0, 0.0, 0.16566669999999997, 0.0, 0.3313333, 0.0, 0.49700000000000005, 0.0] -> [0.0, 0.0, 0.49700000000000005, 0.0] +[ Info: simplifying pwl cost on generator 109, [0.0, 0.0, 0.17, 0.0, 0.34, 0.0, 0.51, 0.0] -> [0.0, 0.0, 0.51, 0.0] +[ Info: simplifying pwl cost on generator 74, [3.96, 3208.986, 3.9733332999999997, 3219.79067, 3.9866667000000002, 3230.59533, 4.0, 3241.4] -> [3.96, 3208.986, 4.0, 3241.4] +[ Info: simplifying pwl cost on generator 132, [0.0, 0.0, 0.20800000000000002, 0.0, 0.41600000000000004, 0.0, 0.624, 0.0] -> [0.0, 0.0, 0.624, 0.0] +[ Info: simplifying pwl cost on generator 153, [0.0, 0.0, 0.044000000000000004, 0.0, 0.08800000000000001, 0.0, 0.132, 0.0] -> [0.0, 0.0, 0.132, 0.0] +[ Info: simplifying pwl cost on generator 155, [0.0, 0.0, 2.6636667, 0.0, 5.3273333, 0.0, 7.9910000000000005, 0.0] -> [0.0, 0.0, 7.9910000000000005, 0.0] +[ Info: simplifying pwl cost on generator 106, [0.0, 0.0, 0.31366669999999996, 0.0, 0.6273333, 0.0, 0.941, 0.0] -> [0.0, 0.0, 0.941, 0.0] +[ Info: simplifying pwl cost on generator 119, [0.0, 0.0, 0.0873333, 0.0, 0.1746667, 0.0, 0.262, 0.0] -> [0.0, 0.0, 0.262, 0.0] +[ Info: simplifying pwl cost on generator 75, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 111, [0.0, 0.0, 0.6273333, 0.0, 1.2546667, 0.0, 1.882, 0.0] -> [0.0, 0.0, 1.882, 0.0] +[ Info: simplifying pwl cost on generator 121, [0.0, 0.0, 0.205, 0.0, 0.41, 0.0, 0.615, 0.0] -> [0.0, 0.0, 0.615, 0.0] +[ Info: simplifying pwl cost on generator 115, [0.0, 0.0, 0.0843333, 0.0, 0.1686667, 0.0, 0.253, 0.0] -> [0.0, 0.0, 0.253, 0.0] +[ Info: simplifying pwl cost on generator 141, [0.0, 0.0, 0.094, 0.0, 0.188, 0.0, 0.282, 0.0] -> [0.0, 0.0, 0.282, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 92 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 92 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 92 +[ Info: simplifying pwl cost on generator 92, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 88, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 93, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 120, [0.0, 0.0, 0.086, 0.0, 0.172, 0.0, 0.258, 0.0] -> [0.0, 0.0, 0.258, 0.0] +[ Info: simplifying pwl cost on generator 77, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 87, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 117, [0.3, 0.0, 0.66, 0.0, 1.2, 0.0, 1.6, 0.0] -> [0.3, 0.0, 1.6, 0.0] +[ Info: simplifying pwl cost on generator 114, [0.0, 0.0, 0.0863333, 0.0, 0.1726667, 0.0, 0.259, 0.0] -> [0.0, 0.0, 0.259, 0.0] +[ Info: simplifying pwl cost on generator 154, [0.0, 0.0, 0.4943333, 0.0, 0.9886667, 0.0, 1.483, 0.0] -> [0.0, 0.0, 1.483, 0.0] +[ Info: simplifying pwl cost on generator 149, [0.0, 0.0, 0.0393333, 0.0, 0.0786667, 0.0, 0.11800000000000001, 0.0] -> [0.0, 0.0, 0.11800000000000001, 0.0] +[ Info: simplifying pwl cost on generator 89, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 122, [0.0, 0.0, 0.222, 0.0, 0.444, 0.0, 0.6659999999999999, 0.0] -> [0.0, 0.0, 0.6659999999999999, 0.0] +[ Info: simplifying pwl cost on generator 90, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 143, [0.0, 0.0, 0.0323333, 0.0, 0.0646667, 0.0, 0.09699999999999999, 0.0] -> [0.0, 0.0, 0.09699999999999999, 0.0] +[ Info: simplifying pwl cost on generator 112, [0.0, 0.0, 0.41700000000000004, 0.0, 0.8340000000000001, 0.0, 1.251, 0.0] -> [0.0, 0.0, 1.251, 0.0] +[ Info: simplifying pwl cost on generator 129, [0.0, 0.0, 0.21266670000000001, 0.0, 0.42533329999999997, 0.0, 0.638, 0.0] -> [0.0, 0.0, 0.638, 0.0] +[ Info: simplifying pwl cost on generator 150, [0.0, 0.0, 0.0373333, 0.0, 0.0746667, 0.0, 0.11199999999999999, 0.0] -> [0.0, 0.0, 0.11199999999999999, 0.0] +[ Info: simplifying pwl cost on generator 137, [0.0, 0.0, 0.09, 0.0, 0.18, 0.0, 0.27, 0.0] -> [0.0, 0.0, 0.27, 0.0] +[ Info: simplifying pwl cost on generator 94, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 86, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 126, [0.0, 0.0, 0.218, 0.0, 0.436, 0.0, 0.654, 0.0] -> [0.0, 0.0, 0.654, 0.0] +[ Info: simplifying pwl cost on generator 99, [0.0, 0.0, 0.172, 0.0, 0.344, 0.0, 0.516, 0.0] -> [0.0, 0.0, 0.516, 0.0] +[ Info: simplifying pwl cost on generator 152, [0.0, 0.0, 0.015, 0.0, 0.03, 0.0, 0.045, 0.0] -> [0.0, 0.0, 0.045, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 73 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 73 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 73 +[ Info: simplifying pwl cost on generator 73, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: pwl x value 0.0033333 is outside the bounds 0.0-0.0 on generator 82 +[ Info: pwl x value 0.0066667 is outside the bounds 0.0-0.0 on generator 82 +[ Info: pwl x value 0.01 is outside the bounds 0.0-0.0 on generator 82 +[ Info: simplifying pwl cost on generator 82, [0.0, 0.0, 0.0033333, 0.0, 0.0066667, 0.0, 0.01, 0.0] -> [0.0, 0.0, 0.01, 0.0] +[ Info: simplifying pwl cost on generator 79, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 146, [0.0, 0.0, 0.030333299999999997, 0.0, 0.060666700000000004, 0.0, 0.091, 0.0] -> [0.0, 0.0, 0.091, 0.0] +[ Info: simplifying pwl cost on generator 142, [0.0, 0.0, 0.031, 0.0, 0.062, 0.0, 0.09300000000000001, 0.0] -> [0.0, 0.0, 0.09300000000000001, 0.0] +[ Info: simplifying pwl cost on generator 84, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 80, [0.0, 0.0, 0.1666667, 0.0, 0.33333329999999994, 0.0, 0.5, 0.0] -> [0.0, 0.0, 0.5, 0.0] +[ Info: simplifying pwl cost on generator 104, [0.0, 0.0, 0.1723333, 0.0, 0.3446667, 0.0, 0.517, 0.0] -> [0.0, 0.0, 0.517, 0.0] +[ Info: simplifying pwl cost on generator 124, [0.0, 0.0, 0.33899999999999997, 0.0, 0.6779999999999999, 0.0, 1.0170000000000001, 0.0] -> [0.0, 0.0, 1.0170000000000001, 0.0] +[ Info: simplifying pwl cost on generator 125, [0.0, 0.0, 0.2103333, 0.0, 0.4206667, 0.0, 0.631, 0.0] -> [0.0, 0.0, 0.631, 0.0] +[ Info: simplifying pwl cost on generator 98, [0.0, 0.0, 0.172, 0.0, 0.344, 0.0, 0.516, 0.0] -> [0.0, 0.0, 0.516, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "RTS_GMLC" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +┌ Warning: GenericBattery should be defined as a PowerModels storage... Skipping +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_models_data.jl:551 +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 538 │ +└───────────────────┴─────────────┘ + +Static Components +┌─────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├─────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 73 │ false │ false │ +│ Arc │ 109 │ false │ false │ +│ Area │ 3 │ false │ false │ +│ FixedAdmittance │ 3 │ false │ false │ +│ HydroDispatch │ 20 │ false │ false │ +│ Line │ 104 │ false │ false │ +│ LoadZone │ 21 │ false │ false │ +│ PowerLoad │ 51 │ false │ false │ +│ RenewableDispatch │ 30 │ false │ false │ +│ RenewableFix │ 31 │ false │ false │ +│ TapTransformer │ 15 │ false │ false │ +│ ThermalStandard │ 76 │ false │ false │ +│ Transformer2W │ 1 │ false │ false │ +│ TwoTerminalHVDCLine │ 1 │ false │ false │ +└─────────────────────┴───────┴────────────────────────┴───────────────┘

    More details about parsing text files from different formats in this section


    Using PowerSystems.jl for modeling

    This example function implements a function where the modeler can choose the technology by its type and use the different implementations of get_max_active_power. Using the "dot" access to get a parameter value from a device is actively discouraged, use "getter" functions instead

    Refer to Modeling with JuMP for a more detailed use of PowerSystems.jl to develop a model

    julia> function installed_capacity(system::System; technology::Type{T} = Generator) where T <: Generator
    +           installed_capacity = 0.0
    +           for g in get_components(T, system)
    +               installed_capacity += get_max_active_power(g)
    +           end
    +           return installed_capacity
    +       endinstalled_capacity (generic function with 1 method)
    • Total installed capacity
    julia> installed_capacity(system_data)144.99800000000002
    • Installed capacity of the thermal generation
    julia> installed_capacity(system_data; technology = ThermalStandard)80.75999999999998
    • Installed capacity of renewable generation
    julia> installed_capacity(system_data; technology = RenewableGen)54.23800000000002

    Adding Time Series data to a System

    PowerSystems.jl provides interfaces to augment the data sets already created. You can also add time series data to a system from one or more CSV files, more details in Time Series Data. This example implements SingleTimeSeries

    julia> using TimeSeries
    julia> using Dates
    julia> system = System(joinpath(file_dir, "case5.m"))[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "nesta_case5_pjm" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 28 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ false │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘
    julia> new_renewable = RenewableDispatch( + name = "WindPowerNew", + available = true, + bus = get_component(ACBus, system, "3"), + active_power = 2.0, + reactive_power = 1.0, + rating = 1.2, + prime_mover_type = PrimeMovers.WT, + reactive_power_limits = (min = 0.0, max = 0.0), + base_power = 100.0, + operation_cost = TwoPartCost(22.0, 0.0), + power_factor = 1.0 + ) +WindPowerNew (RenewableDispatch): + name: WindPowerNew + available: true + bus: 3 (ACBus) + active_power: 200.0 + reactive_power: 100.0 + rating: 120.0 + prime_mover_type: PrimeMovers.WT = 22 + reactive_power_limits: (min = 0.0, max = 0.0) + power_factor: 1.0 + operation_cost: TwoPartCost + base_power: 100.0 + services: 0-element Vector{Service} + dynamic_injector: nothing + ext: Dict{String, Any}() + time_series_container: + internal: InfrastructureSystems.InfrastructureSystemsInternal
    julia> add_component!(system, new_renewable)
    julia> ts_data = [0.98, 0.99, 0.99, 1.0, 0.99, 0.99, 0.99, 0.98, 0.95, 0.92, 0.90, 0.88, 0.84, 0.76, + 0.65, 0.52, 0.39, 0.28, 0.19, 0.15, 0.13, 0.11, 0.09, 0.06,]24-element Vector{Float64}: + 0.98 + 0.99 + 0.99 + 1.0 + 0.99 + 0.99 + 0.99 + 0.98 + 0.95 + 0.92 + ⋮ + 0.52 + 0.39 + 0.28 + 0.19 + 0.15 + 0.13 + 0.11 + 0.09 + 0.06
    julia> time_stamps = range(DateTime("2020-01-01"); step = Hour(1), length = 24)Dates.DateTime("2020-01-01T00:00:00"):Dates.Hour(1):Dates.DateTime("2020-01-01T23:00:00")
    julia> time_series_data_raw = TimeArray(time_stamps, ts_data)24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T00:00:00 to 2020-01-01T23:00:00 +│ │ A │ +├─────────────────────┼───────┤ +│ 2020-01-01T00:00:00 │ 0.98 │ +│ 2020-01-01T01:00:00 │ 0.99 │ +│ 2020-01-01T02:00:00 │ 0.99 │ +│ 2020-01-01T03:00:00 │ 1.0 │ +│ 2020-01-01T04:00:00 │ 0.99 │ +│ 2020-01-01T05:00:00 │ 0.99 │ +│ 2020-01-01T06:00:00 │ 0.99 │ +│ 2020-01-01T07:00:00 │ 0.98 │ +│ ⋮ │ ⋮ │ +│ 2020-01-01T17:00:00 │ 0.28 │ +│ 2020-01-01T18:00:00 │ 0.19 │ +│ 2020-01-01T19:00:00 │ 0.15 │ +│ 2020-01-01T20:00:00 │ 0.13 │ +│ 2020-01-01T21:00:00 │ 0.11 │ +│ 2020-01-01T22:00:00 │ 0.09 │ +│ 2020-01-01T23:00:00 │ 0.06 │
    julia> time_series = SingleTimeSeries(name = "active_power", data = time_series_data_raw) + + #Add the forecast to the system and componentSingleTimeSeries time_series (24): + name: active_power + data: 24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, Vector{Float64}} 2020-01-01T00:00:00 to 2020-01-01T23:00:00 +│ │ A │ +├─────────────────────┼───────┤ +│ 2020-01-01T00:00:00 │ 0.98 │ +│ 2020-01-01T01:00:00 │ 0.99 │ +│ 2020-01-01T02:00:00 │ 0.99 │ +│ 2020-01-01T03:00:00 │ 1.0 │ +│ 2020-01-01T04:00:00 │ 0.99 │ +│ 2020-01-01T05:00:00 │ 0.99 │ +│ 2020-01-01T06:00:00 │ 0.99 │ +│ 2020-01-01T07:00:00 │ 0.98 │ +│ ⋮ │ ⋮ │ +│ 2020-01-01T17:00:00 │ 0.28 │ +│ 2020-01-01T18:00:00 │ 0.19 │ +│ 2020-01-01T19:00:00 │ 0.15 │ +│ 2020-01-01T20:00:00 │ 0.13 │ +│ 2020-01-01T21:00:00 │ 0.11 │ +│ 2020-01-01T22:00:00 │ 0.09 │ +│ 2020-01-01T23:00:00 │ 0.06 │ + resolution: 3600000 milliseconds + scaling_factor_multiplier: nothing
    julia> add_time_series!(system, new_renewable, time_series)
    diff --git a/v3.3.0/search/index.html b/v3.3.0/search/index.html new file mode 100644 index 0000000000..f66cca07e5 --- /dev/null +++ b/v3.3.0/search/index.html @@ -0,0 +1,2 @@ + +Search · PowerSystems.jl

    Loading search...

      diff --git a/v3.3.0/search_index.js b/v3.3.0/search_index.js new file mode 100644 index 0000000000..57b7eac40b --- /dev/null +++ b/v3.3.0/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"model_library/generated_Filter/#Filter","page":"Filter","title":"Filter","text":"","category":"section"},{"location":"model_library/generated_Filter/#LCFilter","page":"Filter","title":"LCFilter","text":"","category":"section"},{"location":"model_library/generated_Filter/","page":"Filter","title":"Filter","text":"Modules = [PowerSystems]\nPages = [\"/LCFilter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Filter/#PowerSystems.LCFilter","page":"Filter","title":"PowerSystems.LCFilter","text":"mutable struct LCFilter <: Filter\n lf::Float64\n rf::Float64\n cf::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a LCL filter outside the converter\n\nArguments\n\nlf::Float64: filter inductance, validation range: (0, nothing)\nrf::Float64: filter resistance, validation range: (0, nothing)\ncf::Float64: filter capacitance, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the LCFilter model are:\n\nir_filter: Real current out of the filter,\nii_filter: Imaginary current out of the filter\n\nn_states::Int: LCFilter has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Filter/#PowerSystems.get_cf-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_cf","text":"get_cf(value::LCFilter) -> Float64\n\n\nGet LCFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_ext-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_ext","text":"get_ext(value::LCFilter) -> Dict{String, Any}\n\n\nGet LCFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lf-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_lf","text":"get_lf(value::LCFilter) -> Float64\n\n\nGet LCFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_n_states-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_n_states","text":"get_n_states(value::LCFilter) -> Int64\n\n\nGet LCFilter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rf-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_rf","text":"get_rf(value::LCFilter) -> Float64\n\n\nGet LCFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_states-Tuple{LCFilter}","page":"Filter","title":"PowerSystems.get_states","text":"get_states(value::LCFilter) -> Vector{Symbol}\n\n\nGet LCFilter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_cf!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_cf!","text":"set_cf!(value::LCFilter, val) -> Any\n\n\nSet LCFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_ext!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_ext!","text":"set_ext!(value::LCFilter, val) -> Any\n\n\nSet LCFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lf!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_lf!","text":"set_lf!(value::LCFilter, val) -> Any\n\n\nSet LCFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rf!-Tuple{LCFilter, Any}","page":"Filter","title":"PowerSystems.set_rf!","text":"set_rf!(value::LCFilter, val) -> Any\n\n\nSet LCFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#LCLFilter","page":"Filter","title":"LCLFilter","text":"","category":"section"},{"location":"model_library/generated_Filter/","page":"Filter","title":"Filter","text":"Modules = [PowerSystems]\nPages = [\"/LCLFilter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Filter/#PowerSystems.LCLFilter","page":"Filter","title":"PowerSystems.LCLFilter","text":"mutable struct LCLFilter <: Filter\n lf::Float64\n rf::Float64\n cf::Float64\n lg::Float64\n rg::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a LCL filter outside the converter, the states are in the grid's reference frame\n\nArguments\n\nlf::Float64: Series inductance in p.u. of converter filter, validation range: (0, nothing)\nrf::Float64: Series resistance in p.u. of converter filter, validation range: (0, nothing)\ncf::Float64: Shunt capacitance in p.u. of converter filter, validation range: (0, nothing)\nlg::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)\nrg::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the LCLFilter model are:\n\nir_cnv: Real current out of the converter,\nii_cnv: Imaginary current out of the converter,\nvr_filter: Real voltage at the filter's capacitor,\nvi_filter: Imaginary voltage at the filter's capacitor,\nir_filter: Real current out of the filter,\nii_filter: Imaginary current out of the filter\n\nn_states::Int: LCLFilter has 6 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Filter/#PowerSystems.get_cf-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_cf","text":"get_cf(value::LCLFilter) -> Float64\n\n\nGet LCLFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_ext-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_ext","text":"get_ext(value::LCLFilter) -> Dict{String, Any}\n\n\nGet LCLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lf-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_lf","text":"get_lf(value::LCLFilter) -> Float64\n\n\nGet LCLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lg-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_lg","text":"get_lg(value::LCLFilter) -> Float64\n\n\nGet LCLFilter lg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_n_states-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_n_states","text":"get_n_states(value::LCLFilter) -> Int64\n\n\nGet LCLFilter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rf-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_rf","text":"get_rf(value::LCLFilter) -> Float64\n\n\nGet LCLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rg-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_rg","text":"get_rg(value::LCLFilter) -> Float64\n\n\nGet LCLFilter rg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_states-Tuple{LCLFilter}","page":"Filter","title":"PowerSystems.get_states","text":"get_states(value::LCLFilter) -> Vector{Symbol}\n\n\nGet LCLFilter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_cf!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_cf!","text":"set_cf!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter cf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_ext!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_ext!","text":"set_ext!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lf!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_lf!","text":"set_lf!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lg!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_lg!","text":"set_lg!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter lg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rf!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_rf!","text":"set_rf!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rg!-Tuple{LCLFilter, Any}","page":"Filter","title":"PowerSystems.set_rg!","text":"set_rg!(value::LCLFilter, val) -> Any\n\n\nSet LCLFilter rg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#RLFilter","page":"Filter","title":"RLFilter","text":"","category":"section"},{"location":"model_library/generated_Filter/","page":"Filter","title":"Filter","text":"Modules = [PowerSystems]\nPages = [\"/RLFilter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Filter/#PowerSystems.RLFilter","page":"Filter","title":"PowerSystems.RLFilter","text":"mutable struct RLFilter <: Filter\n rf::Float64\n lf::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of RL series filter in algebraic representation\n\nArguments\n\nrf::Float64: Series resistance in p.u. of converter filter to the grid, validation range: (0, nothing)\nlf::Float64: Series inductance in p.u. of converter filter to the grid, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: RLFilter has zero states\nn_states::Int: RLFilter has zero states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Filter/#PowerSystems.get_ext-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_ext","text":"get_ext(value::RLFilter) -> Dict{String, Any}\n\n\nGet RLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_lf-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_lf","text":"get_lf(value::RLFilter) -> Float64\n\n\nGet RLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_n_states-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_n_states","text":"get_n_states(value::RLFilter) -> Int64\n\n\nGet RLFilter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_rf-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_rf","text":"get_rf(value::RLFilter) -> Float64\n\n\nGet RLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.get_states-Tuple{RLFilter}","page":"Filter","title":"PowerSystems.get_states","text":"get_states(value::RLFilter) -> Vector{Symbol}\n\n\nGet RLFilter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_ext!-Tuple{RLFilter, Any}","page":"Filter","title":"PowerSystems.set_ext!","text":"set_ext!(value::RLFilter, val) -> Any\n\n\nSet RLFilter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_lf!-Tuple{RLFilter, Any}","page":"Filter","title":"PowerSystems.set_lf!","text":"set_lf!(value::RLFilter, val) -> Any\n\n\nSet RLFilter lf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Filter/#PowerSystems.set_rf!-Tuple{RLFilter, Any}","page":"Filter","title":"PowerSystems.set_rf!","text":"set_rf!(value::RLFilter, val) -> Any\n\n\nSet RLFilter rf.\n\n\n\n\n\n","category":"method"},{"location":"code_base_developer_guide/troubleshooting/#Troubleshooting-code-development","page":"Troubleshooting","title":"Troubleshooting code development","text":"","category":"section"},{"location":"code_base_developer_guide/troubleshooting/#Issues-with-Serialization/De-Serialization","page":"Troubleshooting","title":"Issues with Serialization/De-Serialization","text":"","category":"section"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"If this doesn't work then you likely need to implement custom InfrastructureSystems.serialize and InfrastructureSystems.deserialize methods for your type. Here are some examples of potential problems and solutions:","category":"page"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"Problem: Your struct contains a field defined as an abstract type. The deserialization process doesn't know what concrete type to construct.","category":"page"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"Solution: Encode the concrete type into the serialized dictionary as a string.","category":"page"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"Example: serialize and deserialize methods for DynamicBranch in src/models/dynamic_branch.jl.","category":"page"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"Problem: Similar to above in that a field is defined as an abstract type but the struct is parameterized on the actual concrete type.","category":"page"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"Solution: Use the fact that the concrete type is encoded into the serialized type of the struct and extract it in a customized deserialze method.","category":"page"},{"location":"code_base_developer_guide/troubleshooting/","page":"Troubleshooting","title":"Troubleshooting","text":"Example: deserialize method for OuterControl in src/models/OuterControl.jl.","category":"page"},{"location":"model_library/generated_Machine/#Machine","page":"Machine","title":"Machine","text":"","category":"section"},{"location":"model_library/generated_Machine/#AndersonFouadMachine","page":"Machine","title":"AndersonFouadMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/AndersonFouadMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.AndersonFouadMachine","page":"Machine","title":"PowerSystems.AndersonFouadMachine","text":"mutable struct AndersonFouadMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 6-states synchronous machine: Anderson-Fouad model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nψq: q-axis stator flux,\nψd: d-axis stator flux,\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: AndersonFouadMachine has 6 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::AndersonFouadMachine) -> Float64\n\n\nGet AndersonFouadMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::AndersonFouadMachine) -> Dict{String, Any}\n\n\nGet AndersonFouadMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::AndersonFouadMachine) -> Int64\n\n\nGet AndersonFouadMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{AndersonFouadMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::AndersonFouadMachine) -> Vector{Symbol}\n\n\nGet AndersonFouadMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{AndersonFouadMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::AndersonFouadMachine, val) -> Any\n\n\nSet AndersonFouadMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#BaseMachine","page":"Machine","title":"BaseMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/BaseMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.BaseMachine","page":"Machine","title":"PowerSystems.BaseMachine","text":"mutable struct BaseMachine <: Machine\n R::Float64\n Xd_p::Float64\n eq_p::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Classic Machine: GENCLS in PSSE and PSLF\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd_p::Float64: Reactance after EMF in machine per unit, validation range: (0, nothing)\neq_p::Float64: Fixed EMF behind the impedance, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: BaseMachine has no states\nn_states::Int: BaseMachine has no states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::BaseMachine) -> Float64\n\n\nGet BaseMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::BaseMachine) -> Float64\n\n\nGet BaseMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_eq_p-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_eq_p","text":"get_eq_p(value::BaseMachine) -> Float64\n\n\nGet BaseMachine eq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::BaseMachine) -> Dict{String, Any}\n\n\nGet BaseMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::BaseMachine) -> Int64\n\n\nGet BaseMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{BaseMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::BaseMachine) -> Vector{Symbol}\n\n\nGet BaseMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_eq_p!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_eq_p!","text":"set_eq_p!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine eq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{BaseMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::BaseMachine, val) -> Any\n\n\nSet BaseMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#FullMachine","page":"Machine","title":"FullMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/FullMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.FullMachine","page":"Machine","title":"PowerSystems.FullMachine","text":"mutable struct FullMachine <: Machine\n R::Float64\n R_f::Float64\n R_1d::Float64\n R_1q::Float64\n L_d::Float64\n L_q::Float64\n L_ad::Float64\n L_aq::Float64\n L_f1d::Float64\n L_ff::Float64\n L_1d::Float64\n L_1q::Float64\n ext::Dict{String, Any}\n inv_d_fluxlink::Array{Float64,2}\n inv_q_fluxlink::Array{Float64,2}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is NOT neglected. Only one q-axis damping circuit is considered. All parameters are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books.\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nR_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)\nR_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski., validation range: (0, nothing)\nR_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski., validation range: (0, nothing)\nL_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski)., validation range: (0, nothing)\nL_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur., validation range: (0, nothing)\nL_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)\nL_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)\nL_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)\nL_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)\next::Dict{String, Any}\ninv_d_fluxlink::Array{Float64,2}: Equations 3.127, 3.130, 3.131 From Kundur\ninv_q_fluxlink::Array{Float64,2}: Equations 3.128, 3.132 From Kundur\nstates::Vector{Symbol}: The states are:\n\nψd: d-axis stator flux,\nψq: q-axis stator flux,\nψf: field rotor flux,\nψ1d: d-axis rotor damping flux,\nψ1q: q-axis rotor damping flux\n\nn_states::Int: FullMachine has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_1d","text":"get_L_1d(value::FullMachine) -> Float64\n\n\nGet FullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1q-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_1q","text":"get_L_1q(value::FullMachine) -> Float64\n\n\nGet FullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ad-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_ad","text":"get_L_ad(value::FullMachine) -> Float64\n\n\nGet FullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_aq-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_aq","text":"get_L_aq(value::FullMachine) -> Float64\n\n\nGet FullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_d","text":"get_L_d(value::FullMachine) -> Float64\n\n\nGet FullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_f1d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_f1d","text":"get_L_f1d(value::FullMachine) -> Float64\n\n\nGet FullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ff-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_ff","text":"get_L_ff(value::FullMachine) -> Float64\n\n\nGet FullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_q-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_L_q","text":"get_L_q(value::FullMachine) -> Float64\n\n\nGet FullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::FullMachine) -> Float64\n\n\nGet FullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1d-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R_1d","text":"get_R_1d(value::FullMachine) -> Float64\n\n\nGet FullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1q-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R_1q","text":"get_R_1q(value::FullMachine) -> Float64\n\n\nGet FullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_f-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_R_f","text":"get_R_f(value::FullMachine) -> Float64\n\n\nGet FullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::FullMachine) -> Dict{String, Any}\n\n\nGet FullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_d_fluxlink-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_inv_d_fluxlink","text":"get_inv_d_fluxlink(value::FullMachine) -> Matrix{Float64}\n\n\nGet FullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_q_fluxlink-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_inv_q_fluxlink","text":"get_inv_q_fluxlink(value::FullMachine) -> Matrix{Float64}\n\n\nGet FullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::FullMachine) -> Int64\n\n\nGet FullMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{FullMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::FullMachine) -> Vector{Symbol}\n\n\nGet FullMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1d!","text":"set_L_1d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1q!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1q!","text":"set_L_1q!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ad!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ad!","text":"set_L_ad!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_aq!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_aq!","text":"set_L_aq!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_d!","text":"set_L_d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_f1d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_f1d!","text":"set_L_f1d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ff!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ff!","text":"set_L_ff!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_q!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_q!","text":"set_L_q!(value::FullMachine, val) -> Any\n\n\nSet FullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1d!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1d!","text":"set_R_1d!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1q!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1q!","text":"set_R_1q!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_f!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_f!","text":"set_R_f!(value::FullMachine, val) -> Any\n\n\nSet FullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::FullMachine, val) -> Any\n\n\nSet FullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_d_fluxlink!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_d_fluxlink!","text":"set_inv_d_fluxlink!(value::FullMachine, val) -> Any\n\n\nSet FullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_q_fluxlink!-Tuple{FullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_q_fluxlink!","text":"set_inv_q_fluxlink!(value::FullMachine, val) -> Any\n\n\nSet FullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#MarconatoMachine","page":"Machine","title":"MarconatoMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/MarconatoMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.MarconatoMachine","page":"Machine","title":"PowerSystems.MarconatoMachine","text":"mutable struct MarconatoMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n T_AA::Float64\n ext::Dict{String, Any}\n γd::Float64\n γq::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 6-states synchronous machine: Marconato model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nT_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)\next::Dict{String, Any}\nγd::Float64\nγq::Float64\nstates::Vector{Symbol}: The states are:\n\nψq: q-axis stator flux,\nψd: d-axis stator flux,\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: MarconatoMachine has 6 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_T_AA-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_T_AA","text":"get_T_AA(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::MarconatoMachine) -> Dict{String, Any}\n\n\nGet MarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::MarconatoMachine) -> Int64\n\n\nGet MarconatoMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::MarconatoMachine) -> Vector{Symbol}\n\n\nGet MarconatoMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γd-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_γd","text":"get_γd(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γq-Tuple{MarconatoMachine}","page":"Machine","title":"PowerSystems.get_γq","text":"get_γq(value::MarconatoMachine) -> Float64\n\n\nGet MarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_T_AA!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_T_AA!","text":"set_T_AA!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γd!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γd!","text":"set_γd!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γq!-Tuple{MarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γq!","text":"set_γq!(value::MarconatoMachine, val) -> Any\n\n\nSet MarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#OneDOneQMachine","page":"Machine","title":"OneDOneQMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/OneDOneQMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.OneDOneQMachine","page":"Machine","title":"PowerSystems.OneDOneQMachine","text":"mutable struct OneDOneQMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Td0_p::Float64\n Tq0_p::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected.\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage\n\nn_states::Int: OneDOneQMachine has 2 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::OneDOneQMachine) -> Float64\n\n\nGet OneDOneQMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::OneDOneQMachine) -> Dict{String, Any}\n\n\nGet OneDOneQMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::OneDOneQMachine) -> Int64\n\n\nGet OneDOneQMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{OneDOneQMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::OneDOneQMachine) -> Vector{Symbol}\n\n\nGet OneDOneQMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{OneDOneQMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::OneDOneQMachine, val) -> Any\n\n\nSet OneDOneQMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#RoundRotorExponential","page":"Machine","title":"RoundRotorExponential","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/RoundRotorExponential.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.RoundRotorExponential","page":"Machine","title":"PowerSystems.RoundRotorExponential","text":"mutable struct RoundRotorExponential <: Machine\n base_machine::RoundRotorMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n4-states round-rotor synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROE model in PSSE and PSLF.\n\nArguments\n\nbase_machine::RoundRotorMachine: Round Rotor Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#RoundRotorMachine","page":"Machine","title":"RoundRotorMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/RoundRotorMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.RoundRotorMachine","page":"Machine","title":"PowerSystems.RoundRotorMachine","text":"mutable struct RoundRotorMachine <: Machine\n R::Float64\n Td0_p::Float64\n Td0_pp::Float64\n Tq0_p::Float64\n Tq0_pp::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xl::Float64\n Se::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n γ_d1::Float64\n γ_q1::Float64\n γ_d2::Float64\n γ_q2::Float64\n γ_qd::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states round-rotor synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU or GENROE model in PSSE and PSLF.\n\nArguments\n\nR::Float64: Armature resistance, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)\nXl::Float64: Stator leakage reactance, validation range: (0, nothing)\nSe::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: S(1.0) = B(|ψ_pp|-A)^2\next::Dict{String, Any}\nγ_d1::Float64: γ_d1 parameter\nγ_q1::Float64: γ_q1 parameter\nγ_d2::Float64: γ_d2 parameter\nγ_q2::Float64: γ_q2 parameter\nγ_qd::Float64: γ_qd parameter\nstates::Vector{Symbol}: The states are:\n\neq_p: q-axis generator voltage behind the transient reactance,\ned_p: d-axis generator voltage behind the transient reactance,\nψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,\nψ_kq: flux linkage in the first equivalent damping circuit in the d-axis\n\nn_states::Int: RoundRotorMachine has 4 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Se-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Se","text":"get_Se(value::RoundRotorMachine) -> Tuple{Float64, Float64}\n\n\nGet RoundRotorMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xl-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xl","text":"get_Xl(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::RoundRotorMachine) -> Dict{String, Any}\n\n\nGet RoundRotorMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::RoundRotorMachine) -> Int64\n\n\nGet RoundRotorMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::RoundRotorMachine) -> Vector{Symbol}\n\n\nGet RoundRotorMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d1-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_d1","text":"get_γ_d1(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d2-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_d2","text":"get_γ_d2(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q1-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_q1","text":"get_γ_q1(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q2-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_q2","text":"get_γ_q2(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_qd-Tuple{RoundRotorMachine}","page":"Machine","title":"PowerSystems.get_γ_qd","text":"get_γ_qd(value::RoundRotorMachine) -> Float64\n\n\nGet RoundRotorMachine γ_qd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Se!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Se!","text":"set_Se!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xl!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d1!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d1!","text":"set_γ_d1!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d2!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d2!","text":"set_γ_d2!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q1!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q1!","text":"set_γ_q1!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q2!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q2!","text":"set_γ_q2!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_qd!-Tuple{RoundRotorMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_qd!","text":"set_γ_qd!(value::RoundRotorMachine, val) -> Any\n\n\nSet RoundRotorMachine γ_qd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#RoundRotorQuadratic","page":"Machine","title":"RoundRotorQuadratic","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/RoundRotorQuadratic.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.RoundRotorQuadratic","page":"Machine","title":"PowerSystems.RoundRotorQuadratic","text":"mutable struct RoundRotorQuadratic <: Machine\n base_machine::RoundRotorMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n4-states round-rotor synchronous machine with quadratic saturation: IEEE Std 1110 §5.3.2 (Model 2.2). GENROU model in PSSE and PSLF.\n\nArguments\n\nbase_machine::RoundRotorMachine: Round Rotor Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#SalientPoleExponential","page":"Machine","title":"SalientPoleExponential","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SalientPoleExponential.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SalientPoleExponential","page":"Machine","title":"PowerSystems.SalientPoleExponential","text":"mutable struct SalientPoleExponential <: Machine\n base_machine::SalientPoleMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAE in PSSE and PSLF.\n\nArguments:\n\nbase_machine::SalientPoleMachine: Salient Pole Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for exponential model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#SalientPoleMachine","page":"Machine","title":"SalientPoleMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SalientPoleMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SalientPoleMachine","page":"Machine","title":"PowerSystems.SalientPoleMachine","text":"mutable struct SalientPoleMachine <: Machine\n R::Float64\n Td0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xd_pp::Float64\n Xl::Float64\n Se::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n γ_d1::Float64\n γ_q1::Float64\n γ_d2::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 3-states salient-pole synchronous machine with quadratic/exponential saturation: IEEE Std 1110 §5.3.1 (Model 2.1). GENSAL or GENSAE model in PSSE and PSLF.\n\nArguments\n\nR::Float64: Armature resistance, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit. Note: Xdpp = Xqpp, validation range: (0, nothing)\nXl::Float64: Stator leakage reactance, validation range: (0, nothing)\nSe::Tuple{Float64, Float64}: Saturation factor at 1 and 1.2 pu flux: Se(eqp) = B(eqp-A)^2\next::Dict{String, Any}\nγ_d1::Float64: γ_d1 parameter\nγ_q1::Float64: γ_q1 parameter\nγ_d2::Float64: γ_d2 parameter\nstates::Vector{Symbol}: The states are:\n\neq_p: q-axis generator voltage behind the transient reactance,\nψ_kd: flux linkage in the first equivalent damping circuit in the d-axis,\nψq_pp: phasonf of the subtransient flux linkage in the q-axis\n\nn_states::Int: SalientPoleMachine has 3 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Se-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Se","text":"get_Se(value::SalientPoleMachine) -> Tuple{Float64, Float64}\n\n\nGet SalientPoleMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xl-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xl","text":"get_Xl(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SalientPoleMachine) -> Dict{String, Any}\n\n\nGet SalientPoleMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SalientPoleMachine) -> Int64\n\n\nGet SalientPoleMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SalientPoleMachine) -> Vector{Symbol}\n\n\nGet SalientPoleMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d1-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_γ_d1","text":"get_γ_d1(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d2-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_γ_d2","text":"get_γ_d2(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q1-Tuple{SalientPoleMachine}","page":"Machine","title":"PowerSystems.get_γ_q1","text":"get_γ_q1(value::SalientPoleMachine) -> Float64\n\n\nGet SalientPoleMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Se!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Se!","text":"set_Se!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xl!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d1!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d1!","text":"set_γ_d1!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d2!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d2!","text":"set_γ_d2!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q1!-Tuple{SalientPoleMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q1!","text":"set_γ_q1!(value::SalientPoleMachine, val) -> Any\n\n\nSet SalientPoleMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SalientPoleQuadratic","page":"Machine","title":"SalientPoleQuadratic","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SalientPoleQuadratic.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SalientPoleQuadratic","page":"Machine","title":"PowerSystems.SalientPoleQuadratic","text":"mutable struct SalientPoleQuadratic <: Machine\n base_machine::SalientPoleMachine\n saturation_coeffs::Tuple{Float64, Float64}\n\n3-states salient-pole synchronous machine with exponential saturation: IEEE Std 1110 §5.3.2 (Model 2.1). GENSAL in PSSE and PSLF.\n\nArguments:\n\nbase_machine::SalientPoleMachine: Salient Pole Machine model.\nsaturation_coeffs::Tuple{Float64, Float64}`: Saturation coefficients for quadratic model.\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#SauerPaiMachine","page":"Machine","title":"SauerPaiMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SauerPaiMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SauerPaiMachine","page":"Machine","title":"PowerSystems.SauerPaiMachine","text":"mutable struct SauerPaiMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Xl::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n ext::Dict{String, Any}\n γ_d1::Float64\n γ_q1::Float64\n γ_d2::Float64\n γ_q2::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of synchronous machine: Sauer Pai model\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXl::Float64: Stator Leakage Reactance, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}\nγ_d1::Float64\nγ_q1::Float64\nγ_d2::Float64\nγ_q2::Float64\nstates::Vector{Symbol}: The states are:\n\nψq: q-axis stator flux,\nψd: d-axis stator flux,\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage\nψd_pp: subtransient flux linkage in the d-axis\nψq_pp: subtransient flux linkage in the q-axis\n\nn_states::Int: SauerPaiMachine has 6 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xl-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xl","text":"get_Xl(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SauerPaiMachine) -> Dict{String, Any}\n\n\nGet SauerPaiMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SauerPaiMachine) -> Int64\n\n\nGet SauerPaiMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SauerPaiMachine) -> Vector{Symbol}\n\n\nGet SauerPaiMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d1-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_d1","text":"get_γ_d1(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_d2-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_d2","text":"get_γ_d2(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q1-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_q1","text":"get_γ_q1(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γ_q2-Tuple{SauerPaiMachine}","page":"Machine","title":"PowerSystems.get_γ_q2","text":"get_γ_q2(value::SauerPaiMachine) -> Float64\n\n\nGet SauerPaiMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xl!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d1!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d1!","text":"set_γ_d1!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_d1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_d2!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_d2!","text":"set_γ_d2!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_d2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q1!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q1!","text":"set_γ_q1!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_q1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γ_q2!-Tuple{SauerPaiMachine, Any}","page":"Machine","title":"PowerSystems.set_γ_q2!","text":"set_γ_q2!(value::SauerPaiMachine, val) -> Any\n\n\nSet SauerPaiMachine γ_q2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SimpleAFMachine","page":"Machine","title":"SimpleAFMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SimpleAFMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SimpleAFMachine","page":"Machine","title":"PowerSystems.SimpleAFMachine","text":"mutable struct SimpleAFMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states simplified Anderson-Fouad (SimpleAFMachine) model. The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected. If transmission dynamics is considered use the full order Anderson Fouad model.\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: SimpleAFMachine has 4 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::SimpleAFMachine) -> Float64\n\n\nGet SimpleAFMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SimpleAFMachine) -> Dict{String, Any}\n\n\nGet SimpleAFMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SimpleAFMachine) -> Int64\n\n\nGet SimpleAFMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SimpleAFMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SimpleAFMachine) -> Vector{Symbol}\n\n\nGet SimpleAFMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SimpleAFMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SimpleAFMachine, val) -> Any\n\n\nSet SimpleAFMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SimpleFullMachine","page":"Machine","title":"SimpleFullMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SimpleFullMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SimpleFullMachine","page":"Machine","title":"PowerSystems.SimpleFullMachine","text":"mutable struct SimpleFullMachine <: Machine\n R::Float64\n R_f::Float64\n R_1d::Float64\n R_1q::Float64\n L_d::Float64\n L_q::Float64\n L_ad::Float64\n L_aq::Float64\n L_f1d::Float64\n L_ff::Float64\n L_1d::Float64\n L_1q::Float64\n ext::Dict{String, Any}\n inv_d_fluxlink::Array{Float64,2}\n inv_q_fluxlink::Array{Float64,2}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameter of a full order flux stator-rotor model without zero sequence flux in the stator. The derivative of stator fluxes (ψd and ψq) is neglected. This is standard when transmission network dynamics is neglected. Only one q-axis damping circuit is considered. All per unit are in machine per unit. Refer to Chapter 3 of Power System Stability and Control by P. Kundur or Chapter 11 of Power System Dynamics: Stability and Control, by J. Machowski, J. Bialek and J. Bumby, for more details. Note that the models are somewhat different (but equivalent) due to the different Park Transformation used in both books.\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nR_f::Float64: Field rotor winding resistance in per unit, validation range: (0, nothing)\nR_1d::Float64: Damping rotor winding resistance on d-axis in per unit. This value is denoted as RD in Machowski., validation range: (0, nothing)\nR_1q::Float64: Damping rotor winding resistance on q-axis in per unit. This value is denoted as RQ in Machowski., validation range: (0, nothing)\nL_d::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the d-axis of the rotor, in per unit. This value is denoted as Lad + Ll in Kundur (and Ld in Machowski)., validation range: (0, nothing)\nL_q::Float64: Inductance of fictitious damping that represent the effect of the three-phase stator winding in the q-axis of the rotor, in per unit. This value is denoted as Laq + Ll in Kundur., validation range: (0, nothing)\nL_ad::Float64: Mutual inductance between stator winding and rotor field (and damping) winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_aq::Float64: Mutual inductance between stator winding and rotor damping winding inductance on q-axis, in per unit, validation range: (0, nothing)\nL_f1d::Float64: Mutual inductance between rotor field winding and rotor damping winding inductance on d-axis, in per unit, validation range: (0, nothing)\nL_ff::Float64: Field rotor winding inductance, in per unit, validation range: (0, nothing)\nL_1d::Float64: Inductance of the d-axis rotor damping circuit, in per unit, validation range: (0, nothing)\nL_1q::Float64: Inductance of the q-axis rotor damping circuit, in per unit, validation range: (0, nothing)\next::Dict{String, Any}\ninv_d_fluxlink::Array{Float64,2}: Equations 3.127, 3.130, 3.131 From Kundur\ninv_q_fluxlink::Array{Float64,2}: Equations 3.128, 3.132 From Kundur\nstates::Vector{Symbol}: The states are:\n\nψf: field rotor flux,\nψ1d: d-axis rotor damping flux,\nψ1q: q-axis rotor damping flux\n\nn_states::Int: SimpleFullMachine has 3 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_1d","text":"get_L_1d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_1q-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_1q","text":"get_L_1q(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ad-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_ad","text":"get_L_ad(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_aq-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_aq","text":"get_L_aq(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_d","text":"get_L_d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_f1d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_f1d","text":"get_L_f1d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_ff-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_ff","text":"get_L_ff(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_L_q-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_L_q","text":"get_L_q(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1d-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R_1d","text":"get_R_1d(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_1q-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R_1q","text":"get_R_1q(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_R_f-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_R_f","text":"get_R_f(value::SimpleFullMachine) -> Float64\n\n\nGet SimpleFullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SimpleFullMachine) -> Dict{String, Any}\n\n\nGet SimpleFullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_d_fluxlink-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_inv_d_fluxlink","text":"get_inv_d_fluxlink(\n value::SimpleFullMachine\n) -> Matrix{Float64}\n\n\nGet SimpleFullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_inv_q_fluxlink-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_inv_q_fluxlink","text":"get_inv_q_fluxlink(\n value::SimpleFullMachine\n) -> Matrix{Float64}\n\n\nGet SimpleFullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SimpleFullMachine) -> Int64\n\n\nGet SimpleFullMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SimpleFullMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SimpleFullMachine) -> Vector{Symbol}\n\n\nGet SimpleFullMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1d!","text":"set_L_1d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_1q!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_1q!","text":"set_L_1q!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ad!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ad!","text":"set_L_ad!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_ad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_aq!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_aq!","text":"set_L_aq!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_aq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_d!","text":"set_L_d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_f1d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_f1d!","text":"set_L_f1d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_f1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_ff!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_ff!","text":"set_L_ff!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_ff.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_L_q!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_L_q!","text":"set_L_q!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine L_q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1d!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1d!","text":"set_R_1d!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R_1d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_1q!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_1q!","text":"set_R_1q!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R_1q.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R_f!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_R_f!","text":"set_R_f!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine R_f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_d_fluxlink!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_d_fluxlink!","text":"set_inv_d_fluxlink!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine inv_d_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_inv_q_fluxlink!-Tuple{SimpleFullMachine, Any}","page":"Machine","title":"PowerSystems.set_inv_q_fluxlink!","text":"set_inv_q_fluxlink!(value::SimpleFullMachine, val) -> Any\n\n\nSet SimpleFullMachine inv_q_fluxlink.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#SimpleMarconatoMachine","page":"Machine","title":"SimpleMarconatoMachine","text":"","category":"section"},{"location":"model_library/generated_Machine/","page":"Machine","title":"Machine","text":"Modules = [PowerSystems]\nPages = [\"/SimpleMarconatoMachine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Machine/#PowerSystems.SimpleMarconatoMachine","page":"Machine","title":"PowerSystems.SimpleMarconatoMachine","text":"mutable struct SimpleMarconatoMachine <: Machine\n R::Float64\n Xd::Float64\n Xq::Float64\n Xd_p::Float64\n Xq_p::Float64\n Xd_pp::Float64\n Xq_pp::Float64\n Td0_p::Float64\n Tq0_p::Float64\n Td0_pp::Float64\n Tq0_pp::Float64\n T_AA::Float64\n ext::Dict{String, Any}\n γd::Float64\n γq::Float64\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 4-states synchronous machine: Simplified Marconato model The derivative of stator fluxes (ψd and ψq) is neglected and ωψd = ψd and ωψq = ψq is assumed (i.e. ω=1.0). This is standard when transmission network dynamics is neglected.\n\nArguments\n\nR::Float64: Resistance after EMF in machine per unit, validation range: (0, nothing)\nXd::Float64: Reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq::Float64: Reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_p::Float64: Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_p::Float64: Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nXd_pp::Float64: Sub-Transient reactance after EMF in d-axis per unit, validation range: (0, nothing)\nXq_pp::Float64: Sub-Transient reactance after EMF in q-axis per unit, validation range: (0, nothing)\nTd0_p::Float64: Time constant of transient d-axis voltage, validation range: (0, nothing)\nTq0_p::Float64: Time constant of transient q-axis voltage, validation range: (0, nothing)\nTd0_pp::Float64: Time constant of sub-transient d-axis voltage, validation range: (0, nothing)\nTq0_pp::Float64: Time constant of sub-transient q-axis voltage, validation range: (0, nothing)\nT_AA::Float64: Time constant of d-axis additional leakage, validation range: (0, nothing)\next::Dict{String, Any}\nγd::Float64\nγq::Float64\nstates::Vector{Symbol}: The states are:\n\neq_p: q-axis transient voltage,\ned_p: d-axis transient voltage,\neq_pp: q-axis subtransient voltage,\ned_pp: d-axis subtransient voltage\n\nn_states::Int: SimpleMarconatoMachine has 4 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Machine/#PowerSystems.get_R-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_R","text":"get_R(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_T_AA-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_T_AA","text":"get_T_AA(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_p","text":"get_Td0_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Td0_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Td0_pp","text":"get_Td0_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_p","text":"get_Tq0_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Tq0_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Tq0_pp","text":"get_Tq0_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd","text":"get_Xd(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_p","text":"get_Xd_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xd_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xd_pp","text":"get_Xd_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq","text":"get_Xq(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_p-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_p","text":"get_Xq_p(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_Xq_pp-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_Xq_pp","text":"get_Xq_pp(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_ext-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_ext","text":"get_ext(value::SimpleMarconatoMachine) -> Dict{String, Any}\n\n\nGet SimpleMarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_n_states-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_n_states","text":"get_n_states(value::SimpleMarconatoMachine) -> Int64\n\n\nGet SimpleMarconatoMachine n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_states-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_states","text":"get_states(value::SimpleMarconatoMachine) -> Vector{Symbol}\n\n\nGet SimpleMarconatoMachine states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γd-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_γd","text":"get_γd(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.get_γq-Tuple{SimpleMarconatoMachine}","page":"Machine","title":"PowerSystems.get_γq","text":"get_γq(value::SimpleMarconatoMachine) -> Float64\n\n\nGet SimpleMarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_R!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_R!","text":"set_R!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_T_AA!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_T_AA!","text":"set_T_AA!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine T_AA.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_p!","text":"set_Td0_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Td0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Td0_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Td0_pp!","text":"set_Td0_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Td0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_p!","text":"set_Tq0_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Tq0_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Tq0_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Tq0_pp!","text":"set_Tq0_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Tq0_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd!","text":"set_Xd!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_p!","text":"set_Xd_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xd_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xd_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xd_pp!","text":"set_Xd_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xd_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq!","text":"set_Xq!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_p!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_p!","text":"set_Xq_p!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xq_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_Xq_pp!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_Xq_pp!","text":"set_Xq_pp!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine Xq_pp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_ext!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_ext!","text":"set_ext!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γd!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γd!","text":"set_γd!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine γd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Machine/#PowerSystems.set_γq!-Tuple{SimpleMarconatoMachine, Any}","page":"Machine","title":"PowerSystems.set_γq!","text":"set_γq!(value::SimpleMarconatoMachine, val) -> Any\n\n\nSet SimpleMarconatoMachine γq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS","page":"PSS","title":"PSS","text":"","category":"section"},{"location":"model_library/generated_PSS/#IEEEST","page":"PSS","title":"IEEEST","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/IEEEST.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.IEEEST","page":"PSS","title":"PowerSystems.IEEEST","text":"mutable struct IEEEST <: PSS\n input_code::Int\n remote_bus_control::Int\n A1::Float64\n A2::Float64\n A3::Float64\n A4::Float64\n A5::Float64\n A6::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T5::Float64\n T6::Float64\n Ks::Float64\n Ls_lim::Tuple{Float64, Float64}\n Vcu::Float64\n Vcl::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Stabilizing Model PSS. \n\nArguments\n\ninput_code::Int: Code input for stabilizer, validation range: (1, 6), action if invalid: error\nremote_bus_control::Int: Remote Bus number for control.\nA1::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn\nA2::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn\nA3::Float64: Filter coefficient, validation range: (0, nothing)\nA4::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn\nA5::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn\nA6::Float64: Filter coefficient, validation range: (0, nothing), action if invalid: warn\nT1::Float64: Time constant, validation range: (0, 10), action if invalid: warn\nT2::Float64: Time constant, validation range: (0, 10), action if invalid: warn\nT3::Float64: Time constant, validation range: (0, 10), action if invalid: warn\nT4::Float64: Time constant, validation range: (0, 10), action if invalid: warn\nT5::Float64: Time constant, validation range: (0, 10), action if invalid: warn\nT6::Float64: Time constant, validation range: (eps(), 2.0), action if invalid: error\nKs::Float64: Proportional gain, validation range: (0, nothing), action if invalid: warn\nLs_lim::Tuple{Float64, Float64}: PSS output limits for regulator output (Ls_min, Ls_max)\nVcu::Float64: Cutoff limiter upper bound, validation range: (0, 1.25), action if invalid: warn\nVcl::Float64: Cutoff limiter lower bound, validation range: (0, 1.0), action if invalid: warn\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nx_p1: 1st filter integration,\nx_p2: 2nd filter integration, \nx_p3: 3rd filter integration, \nx_p4: 4rd filter integration, \nx_p5: T1/T2 lead-lag integrator, \nx_p6: T3/T4 lead-lag integrator, \n:x_p7 last integer,\n\nn_states::Int: IEEEST has 7 states\nstates_types::Vector{StateTypes}: IEEEST has 7 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_A1-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A1","text":"get_A1(value::IEEEST) -> Float64\n\n\nGet IEEEST A1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A2-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A2","text":"get_A2(value::IEEEST) -> Float64\n\n\nGet IEEEST A2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A3-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A3","text":"get_A3(value::IEEEST) -> Float64\n\n\nGet IEEEST A3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A4-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A4","text":"get_A4(value::IEEEST) -> Float64\n\n\nGet IEEEST A4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A5-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A5","text":"get_A5(value::IEEEST) -> Float64\n\n\nGet IEEEST A5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_A6-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_A6","text":"get_A6(value::IEEEST) -> Float64\n\n\nGet IEEEST A6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Ks","text":"get_Ks(value::IEEEST) -> Float64\n\n\nGet IEEEST Ks.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ls_lim-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Ls_lim","text":"get_Ls_lim(value::IEEEST) -> Tuple{Float64, Float64}\n\n\nGet IEEEST Ls_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::IEEEST) -> Float64\n\n\nGet IEEEST T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::IEEEST) -> Float64\n\n\nGet IEEEST T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::IEEEST) -> Float64\n\n\nGet IEEEST T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::IEEEST) -> Float64\n\n\nGet IEEEST T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T5-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T5","text":"get_T5(value::IEEEST) -> Float64\n\n\nGet IEEEST T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::IEEEST) -> Float64\n\n\nGet IEEEST T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vcl-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Vcl","text":"get_Vcl(value::IEEEST) -> Float64\n\n\nGet IEEEST Vcl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vcu-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_Vcu","text":"get_Vcu(value::IEEEST) -> Float64\n\n\nGet IEEEST Vcu.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::IEEEST) -> Dict{String, Any}\n\n\nGet IEEEST ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_input_code","text":"get_input_code(value::IEEEST) -> Int64\n\n\nGet IEEEST input_code.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::IEEEST) -> Int64\n\n\nGet IEEEST n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_remote_bus_control","text":"get_remote_bus_control(value::IEEEST) -> Int64\n\n\nGet IEEEST remote_bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::IEEEST) -> Vector{Symbol}\n\n\nGet IEEEST states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{IEEEST}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::IEEEST) -> Vector{StateTypes}\n\n\nGet IEEEST states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A1!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A1!","text":"set_A1!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A2!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A2!","text":"set_A2!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A3!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A3!","text":"set_A3!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A4!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A4!","text":"set_A4!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A5!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A5!","text":"set_A5!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_A6!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_A6!","text":"set_A6!(value::IEEEST, val) -> Any\n\n\nSet IEEEST A6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Ks!","text":"set_Ks!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Ks.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ls_lim!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Ls_lim!","text":"set_Ls_lim!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Ls_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T5!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T5!","text":"set_T5!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::IEEEST, val) -> Any\n\n\nSet IEEEST T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vcl!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Vcl!","text":"set_Vcl!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Vcl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vcu!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_Vcu!","text":"set_Vcu!(value::IEEEST, val) -> Any\n\n\nSet IEEEST Vcu.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::IEEEST, val) -> Any\n\n\nSet IEEEST ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_input_code!","text":"set_input_code!(value::IEEEST, val) -> Any\n\n\nSet IEEEST input_code.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control!","text":"set_remote_bus_control!(value::IEEEST, val) -> Any\n\n\nSet IEEEST remote_bus_control.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{IEEEST, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::IEEEST, val) -> Any\n\n\nSet IEEEST states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS2A","page":"PSS","title":"PSS2A","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSS2A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSS2A","page":"PSS","title":"PowerSystems.PSS2A","text":"mutable struct PSS2A <: PSS\n input_code_1::Int\n remote_bus_control_1::Int\n input_code_2::Int\n remote_bus_control_2::Int\n M_rtf::Int\n N_rtf::Int\n Tw1::Float64\n Tw2::Float64\n T6::Float64\n Tw3::Float64\n Tw4::Float64\n T7::Float64\n Ks2::Float64\n Ks3::Float64\n T8::Float64\n T9::Float64\n Ks1::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n Vst_lim::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Dual-Input Stabilizer Model\n\nArguments\n\ninput_code_1::Int: First Input Code for stabilizer, validation range: (1, 6), action if invalid: error\nremote_bus_control_1::Int: First Input Remote Bus number for control.\ninput_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6), action if invalid: error\nremote_bus_control_2::Int: Second Input Remote Bus number for control.\nM_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error\nN_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error\nTw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing), action if invalid: warn\nTw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing), action if invalid: warn\nT6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing), action if invalid: warn\nTw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing), action if invalid: warn\nTw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing), action if invalid: warn\nT7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn\nKs2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn\nKs3::Float64: Gain for second input, validation range: (0, nothing), action if invalid: warn\nT8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing), action if invalid: warn\nT9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing), action if invalid: warn\nKs1::Float64: Gain before lead-lag blocks, validation range: (0, nothing), action if invalid: warn\nT1::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn\nT2::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn\nT3::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn\nT4::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn\nVst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nx_p1: 1st washout 1st input, \nx_p2: 2nd washout 1st input, \nx_p3: transducer 1st input, \nx_p4: 1st washout 2nd input, \nx_p5: 2nd washout 2nd input, \nx_p6: transducer 2nd input, \nx_p7: ramp tracking filter state 1, \nx_p8: ramp tracking filter state 2, \nx_p9: ramp tracking filter state 3, \nx_p10: ramp tracking filter state 4, \nx_p11: ramp tracking filter state 5, \nx_p12: ramp tracking filter state 6, \nx_p13: ramp tracking filter state 7, \nx_p14: ramp tracking filter state 8, \nx_p15: 1st lead-lag, \nx_p16: 2nd lead-lag,\n\nn_states::Int: IEEEST has 16 states\nstates_types::Vector{StateTypes}: IEEEST has 16 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Ks1","text":"get_Ks1(value::PSS2A) -> Float64\n\n\nGet PSS2A Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Ks2","text":"get_Ks2(value::PSS2A) -> Float64\n\n\nGet PSS2A Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks3-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Ks3","text":"get_Ks3(value::PSS2A) -> Float64\n\n\nGet PSS2A Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_M_rtf-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_M_rtf","text":"get_M_rtf(value::PSS2A) -> Int64\n\n\nGet PSS2A M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_N_rtf-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_N_rtf","text":"get_N_rtf(value::PSS2A) -> Int64\n\n\nGet PSS2A N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::PSS2A) -> Float64\n\n\nGet PSS2A T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::PSS2A) -> Float64\n\n\nGet PSS2A T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::PSS2A) -> Float64\n\n\nGet PSS2A T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::PSS2A) -> Float64\n\n\nGet PSS2A T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::PSS2A) -> Float64\n\n\nGet PSS2A T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T7-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T7","text":"get_T7(value::PSS2A) -> Float64\n\n\nGet PSS2A T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T8-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T8","text":"get_T8(value::PSS2A) -> Float64\n\n\nGet PSS2A T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T9-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_T9","text":"get_T9(value::PSS2A) -> Float64\n\n\nGet PSS2A T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw1","text":"get_Tw1(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw2","text":"get_Tw2(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw3-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw3","text":"get_Tw3(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw4-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Tw4","text":"get_Tw4(value::PSS2A) -> Float64\n\n\nGet PSS2A Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vst_lim-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_Vst_lim","text":"get_Vst_lim(value::PSS2A) -> Tuple{Float64, Float64}\n\n\nGet PSS2A Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSS2A) -> Dict{String, Any}\n\n\nGet PSS2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_input_code_1","text":"get_input_code_1(value::PSS2A) -> Int64\n\n\nGet PSS2A input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_input_code_2","text":"get_input_code_2(value::PSS2A) -> Int64\n\n\nGet PSS2A input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSS2A) -> Int64\n\n\nGet PSS2A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_1-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_remote_bus_control_1","text":"get_remote_bus_control_1(value::PSS2A) -> Int64\n\n\nGet PSS2A remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_2-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_remote_bus_control_2","text":"get_remote_bus_control_2(value::PSS2A) -> Int64\n\n\nGet PSS2A remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSS2A) -> Vector{Symbol}\n\n\nGet PSS2A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{PSS2A}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::PSS2A) -> Vector{StateTypes}\n\n\nGet PSS2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Ks1!","text":"set_Ks1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Ks2!","text":"set_Ks2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks3!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Ks3!","text":"set_Ks3!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_M_rtf!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_M_rtf!","text":"set_M_rtf!(value::PSS2A, val) -> Any\n\n\nSet PSS2A M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_N_rtf!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_N_rtf!","text":"set_N_rtf!(value::PSS2A, val) -> Any\n\n\nSet PSS2A N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T7!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T7!","text":"set_T7!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T8!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T8!","text":"set_T8!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T9!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_T9!","text":"set_T9!(value::PSS2A, val) -> Any\n\n\nSet PSS2A T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw1!","text":"set_Tw1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw2!","text":"set_Tw2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw3!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw3!","text":"set_Tw3!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw4!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Tw4!","text":"set_Tw4!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vst_lim!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_Vst_lim!","text":"set_Vst_lim!(value::PSS2A, val) -> Any\n\n\nSet PSS2A Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSS2A, val) -> Any\n\n\nSet PSS2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_input_code_1!","text":"set_input_code_1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_input_code_2!","text":"set_input_code_2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_1!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_1!","text":"set_remote_bus_control_1!(value::PSS2A, val) -> Any\n\n\nSet PSS2A remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_2!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_2!","text":"set_remote_bus_control_2!(value::PSS2A, val) -> Any\n\n\nSet PSS2A remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{PSS2A, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PSS2A, val) -> Any\n\n\nSet PSS2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS2B","page":"PSS","title":"PSS2B","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSS2B.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSS2B","page":"PSS","title":"PowerSystems.PSS2B","text":"mutable struct PSS2B <: PSS\n input_code_1::Int\n remote_bus_control_1::Int\n input_code_2::Int\n remote_bus_control_2::Int\n M_rtf::Int\n N_rtf::Int\n Tw1::Float64\n Tw2::Float64\n T6::Float64\n Tw3::Float64\n Tw4::Float64\n T7::Float64\n Ks2::Float64\n Ks3::Float64\n T8::Float64\n T9::Float64\n Ks1::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T10::Float64\n T11::Float64\n Vs1_lim::Tuple{Float64, Float64}\n Vs2_lim::Tuple{Float64, Float64}\n Vst_lim::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE 421.5 2005 PSS2B IEEE Dual-Input Stabilizer Model\n\nArguments\n\ninput_code_1::Int: First Input Code for stabilizer, validation range: (1, 6), action if invalid: error\nremote_bus_control_1::Int: First Input Remote Bus number for control.\ninput_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6), action if invalid: error\nremote_bus_control_2::Int: Second Input Remote Bus number for control.\nM_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error\nN_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error\nTw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing), action if invalid: warn\nTw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing), action if invalid: warn\nT6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing), action if invalid: warn\nTw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing), action if invalid: warn\nTw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing), action if invalid: warn\nT7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn\nKs2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn\nKs3::Float64: Gain for second input, validation range: (0, nothing), action if invalid: warn\nT8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing), action if invalid: warn\nT9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing), action if invalid: warn\nKs1::Float64: Gain before lead-lag blocks, validation range: (0, nothing), action if invalid: warn\nT1::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn\nT2::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn\nT3::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn\nT4::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn\nT10::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn\nT11::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn\nVs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)\nVs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)\nVst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nx_p1: 1st washout 1st input, \nx_p2: 2nd washout 1st input, \nx_p3: transducer 1st input, \nx_p4: 1st washout 2nd input, \nx_p5: 2nd washout 2nd input, \nx_p6: transducer 2nd input, \nx_p7: ramp tracking filter state 1, \nx_p8: ramp tracking filter state 2, \nx_p9: ramp tracking filter state 3, \nx_p10: ramp tracking filter state 4, \nx_p11: ramp tracking filter state 5, \nx_p12: ramp tracking filter state 6, \nx_p13: ramp tracking filter state 7, \nx_p14: ramp tracking filter state 8, \nx_p15: 1st lead-lag, \nx_p16: 2nd lead-lag, \nx_p17: 3rd lead-lag,\n\nn_states::Int: IEEEST has 17 states\nstates_types::Vector{StateTypes}: IEEEST has 17 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Ks1","text":"get_Ks1(value::PSS2B) -> Float64\n\n\nGet PSS2B Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Ks2","text":"get_Ks2(value::PSS2B) -> Float64\n\n\nGet PSS2B Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks3-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Ks3","text":"get_Ks3(value::PSS2B) -> Float64\n\n\nGet PSS2B Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_M_rtf-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_M_rtf","text":"get_M_rtf(value::PSS2B) -> Int64\n\n\nGet PSS2B M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_N_rtf-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_N_rtf","text":"get_N_rtf(value::PSS2B) -> Int64\n\n\nGet PSS2B N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::PSS2B) -> Float64\n\n\nGet PSS2B T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T10-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T10","text":"get_T10(value::PSS2B) -> Float64\n\n\nGet PSS2B T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T11-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T11","text":"get_T11(value::PSS2B) -> Float64\n\n\nGet PSS2B T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::PSS2B) -> Float64\n\n\nGet PSS2B T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::PSS2B) -> Float64\n\n\nGet PSS2B T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::PSS2B) -> Float64\n\n\nGet PSS2B T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::PSS2B) -> Float64\n\n\nGet PSS2B T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T7-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T7","text":"get_T7(value::PSS2B) -> Float64\n\n\nGet PSS2B T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T8-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T8","text":"get_T8(value::PSS2B) -> Float64\n\n\nGet PSS2B T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T9-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_T9","text":"get_T9(value::PSS2B) -> Float64\n\n\nGet PSS2B T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw1","text":"get_Tw1(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw2","text":"get_Tw2(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw3-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw3","text":"get_Tw3(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw4-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Tw4","text":"get_Tw4(value::PSS2B) -> Float64\n\n\nGet PSS2B Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs1_lim-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Vs1_lim","text":"get_Vs1_lim(value::PSS2B) -> Tuple{Float64, Float64}\n\n\nGet PSS2B Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs2_lim-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Vs2_lim","text":"get_Vs2_lim(value::PSS2B) -> Tuple{Float64, Float64}\n\n\nGet PSS2B Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vst_lim-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_Vst_lim","text":"get_Vst_lim(value::PSS2B) -> Tuple{Float64, Float64}\n\n\nGet PSS2B Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSS2B) -> Dict{String, Any}\n\n\nGet PSS2B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_input_code_1","text":"get_input_code_1(value::PSS2B) -> Int64\n\n\nGet PSS2B input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_input_code_2","text":"get_input_code_2(value::PSS2B) -> Int64\n\n\nGet PSS2B input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSS2B) -> Int64\n\n\nGet PSS2B n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_1-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_remote_bus_control_1","text":"get_remote_bus_control_1(value::PSS2B) -> Int64\n\n\nGet PSS2B remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_2-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_remote_bus_control_2","text":"get_remote_bus_control_2(value::PSS2B) -> Int64\n\n\nGet PSS2B remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSS2B) -> Vector{Symbol}\n\n\nGet PSS2B states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{PSS2B}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::PSS2B) -> Vector{StateTypes}\n\n\nGet PSS2B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Ks1!","text":"set_Ks1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Ks2!","text":"set_Ks2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks3!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Ks3!","text":"set_Ks3!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_M_rtf!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_M_rtf!","text":"set_M_rtf!(value::PSS2B, val) -> Any\n\n\nSet PSS2B M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_N_rtf!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_N_rtf!","text":"set_N_rtf!(value::PSS2B, val) -> Any\n\n\nSet PSS2B N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T10!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T10!","text":"set_T10!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T11!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T11!","text":"set_T11!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T7!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T7!","text":"set_T7!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T8!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T8!","text":"set_T8!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T9!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_T9!","text":"set_T9!(value::PSS2B, val) -> Any\n\n\nSet PSS2B T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw1!","text":"set_Tw1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw2!","text":"set_Tw2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw3!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw3!","text":"set_Tw3!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw4!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Tw4!","text":"set_Tw4!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs1_lim!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Vs1_lim!","text":"set_Vs1_lim!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs2_lim!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Vs2_lim!","text":"set_Vs2_lim!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vst_lim!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_Vst_lim!","text":"set_Vst_lim!(value::PSS2B, val) -> Any\n\n\nSet PSS2B Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSS2B, val) -> Any\n\n\nSet PSS2B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_input_code_1!","text":"set_input_code_1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_input_code_2!","text":"set_input_code_2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_1!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_1!","text":"set_remote_bus_control_1!(value::PSS2B, val) -> Any\n\n\nSet PSS2B remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_2!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_2!","text":"set_remote_bus_control_2!(value::PSS2B, val) -> Any\n\n\nSet PSS2B remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{PSS2B, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PSS2B, val) -> Any\n\n\nSet PSS2B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSS2C","page":"PSS","title":"PSS2C","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSS2C.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSS2C","page":"PSS","title":"PowerSystems.PSS2C","text":"mutable struct PSS2C <: PSS\n input_code_1::Int\n remote_bus_control_1::Int\n input_code_2::Int\n remote_bus_control_2::Int\n M_rtf::Int\n N_rtf::Int\n Tw1::Float64\n Tw2::Float64\n T6::Float64\n Tw3::Float64\n Tw4::Float64\n T7::Float64\n Ks2::Float64\n Ks3::Float64\n T8::Float64\n T9::Float64\n Ks1::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n T10::Float64\n T11::Float64\n Vs1_lim::Tuple{Float64, Float64}\n Vs2_lim::Tuple{Float64, Float64}\n Vst_lim::Tuple{Float64, Float64}\n T12::Float64\n T13::Float64\n PSS_Hysteresis_param::Tuple{Float64, Float64}\n Xcomp::Float64\n Tcomp::Float64\n hysteresis_binary_logic::Int\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE 421.5 2016 PSS2C IEEE Dual-Input Stabilizer Model\n\nArguments\n\ninput_code_1::Int: First Input Code for stabilizer, validation range: (1, 7), action if invalid: error\nremote_bus_control_1::Int: First Input Remote Bus number for control.\ninput_code_2::Int: Second Input Code for stabilizer, validation range: (1, 6), action if invalid: error\nremote_bus_control_2::Int: Second Input Remote Bus number for control.\nM_rtf::Int: M parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error\nN_rtf::Int: N parameter for ramp tracking filter, validation range: (0, 8), action if invalid: error\nTw1::Float64: Time constant for first washout filter for first input, validation range: (eps(), nothing), action if invalid: warn\nTw2::Float64: Time constant for second washout filter for first input, validation range: (0, nothing), action if invalid: warn\nT6::Float64: Time constant for low-pass filter for first input, validation range: (0, nothing), action if invalid: warn\nTw3::Float64: Time constant for first washout filter for second input, validation range: (eps(), nothing), action if invalid: warn\nTw4::Float64: Time constant for second washout filter for second input, validation range: (0, nothing), action if invalid: warn\nT7::Float64: Time constant for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn\nKs2::Float64: Gain for low-pass filter for second input, validation range: (0, nothing), action if invalid: warn\nKs3::Float64: Gain for second input, validation range: (0, nothing), action if invalid: warn\nT8::Float64: Time constant for ramp tracking filter, validation range: (0, nothing), action if invalid: warn\nT9::Float64: Time constant for ramp tracking filter, validation range: (eps(), nothing), action if invalid: warn\nKs1::Float64: Gain before lead-lag blocks, validation range: (0, nothing), action if invalid: warn\nT1::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn\nT2::Float64: Time constant for first lead-lag block, validation range: (0, nothing), action if invalid: warn\nT3::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn\nT4::Float64: Time constant for second lead-lag block, validation range: (0, nothing), action if invalid: warn\nT10::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn\nT11::Float64: Time constant for third lead-lag block, validation range: (0, nothing), action if invalid: warn\nVs1_lim::Tuple{Float64, Float64}: First input limits (Vs1_min, Vs1_max)\nVs2_lim::Tuple{Float64, Float64}: Second input limits (Vs2_min, Vs2_max)\nVst_lim::Tuple{Float64, Float64}: PSS output limits (Vst_min, Vst_max)\nT12::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing), action if invalid: warn\nT13::Float64: Time constant for fourth lead-lag block, validation range: (0, nothing), action if invalid: warn\nPSS_Hysteresis_param::Tuple{Float64, Float64}: PSS output hysteresis parameters (PSSOFF, PSSON)\nXcomp::Float64: Stator Leakage Reactance, validation range: (0, nothing)\nTcomp::Float64: Time measured with compensated frequency, validation range: (eps(), nothing), action if invalid: error\nhysteresis_binary_logic::Int: Hysteresis memory variable\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nx_p1: 1st washout 1st input, \nx_p2: 2nd washout 1st input, \nx_p3: transducer 1st input, \nx_p4: 1st washout 2nd input, \nx_p5: 2nd washout 2nd input, \nx_p6: transducer 2nd input, \nx_p7: ramp tracking filter state 1, \nx_p8: ramp tracking filter state 2, \nx_p9: ramp tracking filter state 3, \nx_p10: ramp tracking filter state 4, \nx_p11: ramp tracking filter state 5, \nx_p12: ramp tracking filter state 6, \nx_p13: ramp tracking filter state 7, \nx_p14: ramp tracking filter state 8, \nx_p15: 1st lead-lag, \nx_p16: 2nd lead-lag, \nx_p17: 3rd lead-lag, \nx_p18: 4th lead-lag, \nx_p19: washout block for compensated frequency,\n\nn_states::Int: IEEEST has 19 states\nstates_types::Vector{StateTypes}: IEEEST has 19 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Ks1","text":"get_Ks1(value::PSS2C) -> Float64\n\n\nGet PSS2C Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Ks2","text":"get_Ks2(value::PSS2C) -> Float64\n\n\nGet PSS2C Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Ks3-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Ks3","text":"get_Ks3(value::PSS2C) -> Float64\n\n\nGet PSS2C Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_M_rtf-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_M_rtf","text":"get_M_rtf(value::PSS2C) -> Int64\n\n\nGet PSS2C M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_N_rtf-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_N_rtf","text":"get_N_rtf(value::PSS2C) -> Int64\n\n\nGet PSS2C N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_PSS_Hysteresis_param-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_PSS_Hysteresis_param","text":"get_PSS_Hysteresis_param(\n value::PSS2C\n) -> Tuple{Float64, Float64}\n\n\nGet PSS2C PSS_Hysteresis_param.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T1","text":"get_T1(value::PSS2C) -> Float64\n\n\nGet PSS2C T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T10-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T10","text":"get_T10(value::PSS2C) -> Float64\n\n\nGet PSS2C T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T11-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T11","text":"get_T11(value::PSS2C) -> Float64\n\n\nGet PSS2C T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T12-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T12","text":"get_T12(value::PSS2C) -> Float64\n\n\nGet PSS2C T12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T13-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T13","text":"get_T13(value::PSS2C) -> Float64\n\n\nGet PSS2C T13.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T2","text":"get_T2(value::PSS2C) -> Float64\n\n\nGet PSS2C T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::PSS2C) -> Float64\n\n\nGet PSS2C T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::PSS2C) -> Float64\n\n\nGet PSS2C T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T6-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T6","text":"get_T6(value::PSS2C) -> Float64\n\n\nGet PSS2C T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T7-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T7","text":"get_T7(value::PSS2C) -> Float64\n\n\nGet PSS2C T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T8-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T8","text":"get_T8(value::PSS2C) -> Float64\n\n\nGet PSS2C T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T9-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_T9","text":"get_T9(value::PSS2C) -> Float64\n\n\nGet PSS2C T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tcomp-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tcomp","text":"get_Tcomp(value::PSS2C) -> Float64\n\n\nGet PSS2C Tcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw1","text":"get_Tw1(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw2","text":"get_Tw2(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw3-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw3","text":"get_Tw3(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Tw4-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Tw4","text":"get_Tw4(value::PSS2C) -> Float64\n\n\nGet PSS2C Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs1_lim-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Vs1_lim","text":"get_Vs1_lim(value::PSS2C) -> Tuple{Float64, Float64}\n\n\nGet PSS2C Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vs2_lim-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Vs2_lim","text":"get_Vs2_lim(value::PSS2C) -> Tuple{Float64, Float64}\n\n\nGet PSS2C Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Vst_lim-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Vst_lim","text":"get_Vst_lim(value::PSS2C) -> Tuple{Float64, Float64}\n\n\nGet PSS2C Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_Xcomp-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_Xcomp","text":"get_Xcomp(value::PSS2C) -> Float64\n\n\nGet PSS2C Xcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSS2C) -> Dict{String, Any}\n\n\nGet PSS2C ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_hysteresis_binary_logic-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_hysteresis_binary_logic","text":"get_hysteresis_binary_logic(value::PSS2C) -> Int64\n\n\nGet PSS2C hysteresis_binary_logic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_input_code_1","text":"get_input_code_1(value::PSS2C) -> Int64\n\n\nGet PSS2C input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_input_code_2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_input_code_2","text":"get_input_code_2(value::PSS2C) -> Int64\n\n\nGet PSS2C input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSS2C) -> Int64\n\n\nGet PSS2C n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_1-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_remote_bus_control_1","text":"get_remote_bus_control_1(value::PSS2C) -> Int64\n\n\nGet PSS2C remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_remote_bus_control_2-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_remote_bus_control_2","text":"get_remote_bus_control_2(value::PSS2C) -> Int64\n\n\nGet PSS2C remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSS2C) -> Vector{Symbol}\n\n\nGet PSS2C states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{PSS2C}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::PSS2C) -> Vector{StateTypes}\n\n\nGet PSS2C states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Ks1!","text":"set_Ks1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Ks1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Ks2!","text":"set_Ks2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Ks2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Ks3!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Ks3!","text":"set_Ks3!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Ks3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_M_rtf!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_M_rtf!","text":"set_M_rtf!(value::PSS2C, val) -> Any\n\n\nSet PSS2C M_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_N_rtf!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_N_rtf!","text":"set_N_rtf!(value::PSS2C, val) -> Any\n\n\nSet PSS2C N_rtf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_PSS_Hysteresis_param!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_PSS_Hysteresis_param!","text":"set_PSS_Hysteresis_param!(value::PSS2C, val) -> Any\n\n\nSet PSS2C PSS_Hysteresis_param.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T1!","text":"set_T1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T10!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T10!","text":"set_T10!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T10.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T11!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T11!","text":"set_T11!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T11.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T12!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T12!","text":"set_T12!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T13!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T13!","text":"set_T13!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T13.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T2!","text":"set_T2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T6!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T6!","text":"set_T6!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T7!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T7!","text":"set_T7!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T8!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T8!","text":"set_T8!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T9!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_T9!","text":"set_T9!(value::PSS2C, val) -> Any\n\n\nSet PSS2C T9.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tcomp!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tcomp!","text":"set_Tcomp!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw1!","text":"set_Tw1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw2!","text":"set_Tw2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw3!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw3!","text":"set_Tw3!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Tw4!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Tw4!","text":"set_Tw4!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Tw4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs1_lim!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Vs1_lim!","text":"set_Vs1_lim!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Vs1_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vs2_lim!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Vs2_lim!","text":"set_Vs2_lim!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Vs2_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Vst_lim!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Vst_lim!","text":"set_Vst_lim!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Vst_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_Xcomp!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_Xcomp!","text":"set_Xcomp!(value::PSS2C, val) -> Any\n\n\nSet PSS2C Xcomp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSS2C, val) -> Any\n\n\nSet PSS2C ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_hysteresis_binary_logic!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_hysteresis_binary_logic!","text":"set_hysteresis_binary_logic!(value::PSS2C, val) -> Any\n\n\nSet PSS2C hysteresis_binary_logic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_input_code_1!","text":"set_input_code_1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C input_code_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_input_code_2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_input_code_2!","text":"set_input_code_2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C input_code_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_1!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_1!","text":"set_remote_bus_control_1!(value::PSS2C, val) -> Any\n\n\nSet PSS2C remote_bus_control_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_remote_bus_control_2!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_remote_bus_control_2!","text":"set_remote_bus_control_2!(value::PSS2C, val) -> Any\n\n\nSet PSS2C remote_bus_control_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{PSS2C, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::PSS2C, val) -> Any\n\n\nSet PSS2C states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSSFixed","page":"PSS","title":"PSSFixed","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSSFixed.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSSFixed","page":"PSS","title":"PowerSystems.PSSFixed","text":"mutable struct PSSFixed <: PSS\n V_pss::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a PSS that returns a fixed voltage to add to the reference for the AVR\n\nArguments\n\nV_pss::Float64: Fixed voltage stabilization signal, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}\nn_states::Int: PSSFixed has no states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_V_pss-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_V_pss","text":"get_V_pss(value::PSSFixed) -> Float64\n\n\nGet PSSFixed V_pss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSSFixed) -> Dict{String, Any}\n\n\nGet PSSFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSSFixed) -> Int64\n\n\nGet PSSFixed n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSSFixed}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSSFixed) -> Vector{Symbol}\n\n\nGet PSSFixed states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_V_pss!-Tuple{PSSFixed, Any}","page":"PSS","title":"PowerSystems.set_V_pss!","text":"set_V_pss!(value::PSSFixed, val) -> Any\n\n\nSet PSSFixed V_pss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSSFixed, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSSFixed, val) -> Any\n\n\nSet PSSFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PSSSimple","page":"PSS","title":"PSSSimple","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/PSSSimple.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.PSSSimple","page":"PSS","title":"PowerSystems.PSSSimple","text":"mutable struct PSSSimple <: PSS\n K_ω::Float64\n K_p::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a PSS that returns a proportional droop voltage to add to the reference for the AVR\n\nArguments\n\nK_ω::Float64: Proportional gain for frequency, validation range: (0, nothing)\nK_p::Float64: Proportional gain for active power, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}\nn_states::Int: PSSSimple has no states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_K_p-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_K_p","text":"get_K_p(value::PSSSimple) -> Float64\n\n\nGet PSSSimple K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_K_ω-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_K_ω","text":"get_K_ω(value::PSSSimple) -> Float64\n\n\nGet PSSSimple K_ω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::PSSSimple) -> Dict{String, Any}\n\n\nGet PSSSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::PSSSimple) -> Int64\n\n\nGet PSSSimple n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{PSSSimple}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::PSSSimple) -> Vector{Symbol}\n\n\nGet PSSSimple states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_K_p!-Tuple{PSSSimple, Any}","page":"PSS","title":"PowerSystems.set_K_p!","text":"set_K_p!(value::PSSSimple, val) -> Any\n\n\nSet PSSSimple K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_K_ω!-Tuple{PSSSimple, Any}","page":"PSS","title":"PowerSystems.set_K_ω!","text":"set_K_ω!(value::PSSSimple, val) -> Any\n\n\nSet PSSSimple K_ω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{PSSSimple, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::PSSSimple, val) -> Any\n\n\nSet PSSSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#STAB1","page":"PSS","title":"STAB1","text":"","category":"section"},{"location":"model_library/generated_PSS/","page":"PSS","title":"PSS","text":"Modules = [PowerSystems]\nPages = [\"/STAB1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PSS/#PowerSystems.STAB1","page":"PSS","title":"PowerSystems.STAB1","text":"mutable struct STAB1 <: PSS\n KT::Float64\n T::Float64\n T1T3::Float64\n T3::Float64\n T2T4::Float64\n T4::Float64\n H_lim::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nSpeed-Sensitive Stabilizing Model\n\nArguments\n\nKT::Float64: K/T for washout filter, validation range: (0, nothing), action if invalid: warn\nT::Float64: Time constant for washout filter, validation range: (0.01, nothing), action if invalid: warn\nT1T3::Float64: Time constant division T1/T3, validation range: (0, nothing)\nT3::Float64: Time constant, validation range: (0.01, nothing), action if invalid: warn\nT2T4::Float64: Time constant division T2/T4, validation range: (0, nothing), action if invalid: warn\nT4::Float64: Time constant, validation range: (0.01, nothing), action if invalid: warn\nH_lim::Float64: PSS output limit, validation range: (0, 0.5), action if invalid: warn\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nx_p1: washout filter,\nx_p2: T1/T3 lead-lag block, \nx_p3: T2/T4 lead-lag block,\n\nn_states::Int: STAB1 has 3 states\nstates_types::Vector{StateTypes}: STAB1 has 3 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PSS/#PowerSystems.get_H_lim-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_H_lim","text":"get_H_lim(value::STAB1) -> Float64\n\n\nGet STAB1 H_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_KT-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_KT","text":"get_KT(value::STAB1) -> Float64\n\n\nGet STAB1 KT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T","text":"get_T(value::STAB1) -> Float64\n\n\nGet STAB1 T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T1T3-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T1T3","text":"get_T1T3(value::STAB1) -> Float64\n\n\nGet STAB1 T1T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T2T4-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T2T4","text":"get_T2T4(value::STAB1) -> Float64\n\n\nGet STAB1 T2T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T3-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T3","text":"get_T3(value::STAB1) -> Float64\n\n\nGet STAB1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_T4-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_T4","text":"get_T4(value::STAB1) -> Float64\n\n\nGet STAB1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_ext-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_ext","text":"get_ext(value::STAB1) -> Dict{String, Any}\n\n\nGet STAB1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_n_states-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_n_states","text":"get_n_states(value::STAB1) -> Int64\n\n\nGet STAB1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_states","text":"get_states(value::STAB1) -> Vector{Symbol}\n\n\nGet STAB1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.get_states_types-Tuple{STAB1}","page":"PSS","title":"PowerSystems.get_states_types","text":"get_states_types(value::STAB1) -> Vector{StateTypes}\n\n\nGet STAB1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_H_lim!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_H_lim!","text":"set_H_lim!(value::STAB1, val) -> Any\n\n\nSet STAB1 H_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_KT!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_KT!","text":"set_KT!(value::STAB1, val) -> Any\n\n\nSet STAB1 KT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T!","text":"set_T!(value::STAB1, val) -> Any\n\n\nSet STAB1 T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T1T3!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T1T3!","text":"set_T1T3!(value::STAB1, val) -> Any\n\n\nSet STAB1 T1T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T2T4!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T2T4!","text":"set_T2T4!(value::STAB1, val) -> Any\n\n\nSet STAB1 T2T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T3!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T3!","text":"set_T3!(value::STAB1, val) -> Any\n\n\nSet STAB1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_T4!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_T4!","text":"set_T4!(value::STAB1, val) -> Any\n\n\nSet STAB1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_ext!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_ext!","text":"set_ext!(value::STAB1, val) -> Any\n\n\nSet STAB1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PSS/#PowerSystems.set_states_types!-Tuple{STAB1, Any}","page":"PSS","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::STAB1, val) -> Any\n\n\nSet STAB1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#TwoTerminalHVDCLine","page":"TwoTerminalHVDCLine","title":"TwoTerminalHVDCLine","text":"","category":"section"},{"location":"model_library/generated_TwoTerminalHVDCLine/","page":"TwoTerminalHVDCLine","title":"TwoTerminalHVDCLine","text":"Modules = [PowerSystems]\nPages = [\"generated/TwoTerminalHVDCLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.TwoTerminalHVDCLine","page":"TwoTerminalHVDCLine","title":"PowerSystems.TwoTerminalHVDCLine","text":"mutable struct TwoTerminalHVDCLine <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n arc::Arc\n active_power_limits_from::MinMax\n active_power_limits_to::MinMax\n reactive_power_limits_from::MinMax\n reactive_power_limits_to::MinMax\n loss::NamedTuple{(:l0, :l1), Tuple{Float64, Float64}}\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\na High voltage DC line.\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\narc::Arc\nactive_power_limits_from::MinMax\nactive_power_limits_to::MinMax\nreactive_power_limits_from::MinMax\nreactive_power_limits_to::MinMax\nloss::NamedTuple{(:l0, :l1), Tuple{Float64, Float64}}\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TwoTerminalHVDCLine/#InfrastructureSystems.get_name-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"InfrastructureSystems.get_name","text":"get_name(value::TwoTerminalHVDCLine) -> String\n\n\nGet TwoTerminalHVDCLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#InfrastructureSystems.get_time_series_container-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::TwoTerminalHVDCLine\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet TwoTerminalHVDCLine time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_active_power_flow-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TwoTerminalHVDCLine) -> Any\n\n\nGet TwoTerminalHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_active_power_limits_from-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_active_power_limits_from","text":"get_active_power_limits_from(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_active_power_limits_to-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_active_power_limits_to","text":"get_active_power_limits_to(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_arc-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_arc","text":"get_arc(value::TwoTerminalHVDCLine) -> Arc\n\n\nGet TwoTerminalHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_available-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_available","text":"get_available(value::TwoTerminalHVDCLine) -> Bool\n\n\nGet TwoTerminalHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_ext-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_ext","text":"get_ext(value::TwoTerminalHVDCLine) -> Dict{String, Any}\n\n\nGet TwoTerminalHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_loss-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_loss","text":"get_loss(\n value::TwoTerminalHVDCLine\n) -> @NamedTuple{l0::Float64, l1::Float64}\n\n\nGet TwoTerminalHVDCLine loss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_reactive_power_limits_from-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_reactive_power_limits_from","text":"get_reactive_power_limits_from(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine reactive_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_reactive_power_limits_to-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_reactive_power_limits_to","text":"get_reactive_power_limits_to(\n value::TwoTerminalHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TwoTerminalHVDCLine reactive_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.get_services-Tuple{TwoTerminalHVDCLine}","page":"TwoTerminalHVDCLine","title":"PowerSystems.get_services","text":"get_services(value::TwoTerminalHVDCLine) -> Vector{Service}\n\n\nGet TwoTerminalHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_active_power_flow!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_active_power_limits_from!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_active_power_limits_from!","text":"set_active_power_limits_from!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_active_power_limits_to!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_active_power_limits_to!","text":"set_active_power_limits_to!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_arc!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_available!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_available!","text":"set_available!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_ext!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_loss!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_loss!","text":"set_loss!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine loss.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_reactive_power_limits_from!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_reactive_power_limits_from!","text":"set_reactive_power_limits_from!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine reactive_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_reactive_power_limits_to!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_reactive_power_limits_to!","text":"set_reactive_power_limits_to!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine reactive_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_services!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_services!","text":"set_services!(value::TwoTerminalHVDCLine, val) -> Any\n\n\nSet TwoTerminalHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalHVDCLine/#PowerSystems.set_time_series_container!-Tuple{TwoTerminalHVDCLine, Any}","page":"TwoTerminalHVDCLine","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::TwoTerminalHVDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalHVDCLine time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#LoadZone","page":"LoadZone","title":"LoadZone","text":"","category":"section"},{"location":"model_library/generated_LoadZone/","page":"LoadZone","title":"LoadZone","text":"Modules = [PowerSystems]\nPages = [\"generated/LoadZone.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_LoadZone/#PowerSystems.LoadZone","page":"LoadZone","title":"PowerSystems.LoadZone","text":"mutable struct LoadZone <: AggregationTopology\n name::String\n peak_active_power::Float64\n peak_reactive_power::Float64\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nA collection of buses for electricity price analysis.\n\nArguments\n\nname::String\npeak_active_power::Float64\npeak_reactive_power::Float64\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_LoadZone/#InfrastructureSystems.get_name-Tuple{LoadZone}","page":"LoadZone","title":"InfrastructureSystems.get_name","text":"get_name(value::LoadZone) -> String\n\n\nGet LoadZone name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#InfrastructureSystems.get_time_series_container-Tuple{LoadZone}","page":"LoadZone","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::LoadZone\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet LoadZone time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.get_peak_active_power-Tuple{LoadZone}","page":"LoadZone","title":"PowerSystems.get_peak_active_power","text":"get_peak_active_power(value::LoadZone) -> Any\n\n\nGet LoadZone peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.get_peak_reactive_power-Tuple{LoadZone}","page":"LoadZone","title":"PowerSystems.get_peak_reactive_power","text":"get_peak_reactive_power(value::LoadZone) -> Any\n\n\nGet LoadZone peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.set_peak_active_power!-Tuple{LoadZone, Any}","page":"LoadZone","title":"PowerSystems.set_peak_active_power!","text":"set_peak_active_power!(value::LoadZone, val) -> Any\n\n\nSet LoadZone peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.set_peak_reactive_power!-Tuple{LoadZone, Any}","page":"LoadZone","title":"PowerSystems.set_peak_reactive_power!","text":"set_peak_reactive_power!(value::LoadZone, val) -> Any\n\n\nSet LoadZone peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_LoadZone/#PowerSystems.set_time_series_container!-Tuple{LoadZone, Any}","page":"LoadZone","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::LoadZone, val) -> Any\n\n\nSet LoadZone time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#Dynamic-Branch","page":"Dynamic Lines","title":"Dynamic Branch","text":"","category":"section"},{"location":"model_library/dynamic_branch/","page":"Dynamic Lines","title":"Dynamic Lines","text":"Modules = [PowerSystems]\nPages = [\"models/dynamic_branch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/dynamic_branch/#PowerSystems.DynamicBranch","page":"Dynamic Lines","title":"PowerSystems.DynamicBranch","text":"Extends the branch type to add the information required for dynamic modeling of branches. Includes the fields for the states and the number of states\n\nArguments\n\nbranch::ACBranch\n\n\n\n\n\n","category":"type"},{"location":"model_library/dynamic_branch/#PowerSystems.get_active_power_flow-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::DynamicBranch)\n\n\nGet DynamicBranch activepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_angle_limits-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_angle_limits","text":"get_angle_limits(\n value::DynamicBranch\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet DynamicBranch angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_arc-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_arc","text":"get_arc(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_available-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_available","text":"get_available(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_b-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_b","text":"get_b(\n value::DynamicBranch\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet DynamicBranch b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_ext-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_ext","text":"get_ext(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_n_states-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_n_states","text":"get_n_states(value::DynamicBranch) -> Int64\n\n\nGet n_states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_r-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_r","text":"get_r(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_rate-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_rate","text":"get_rate(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_reactive_power_flow-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::DynamicBranch)\n\n\nGet DynamicBranch reactivepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_services-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_services","text":"get_services(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_states-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_states","text":"get_states(value::DynamicBranch) -> Vector{Symbol}\n\n\nGet states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.get_x-Tuple{DynamicBranch}","page":"Dynamic Lines","title":"PowerSystems.get_x","text":"get_x(value::DynamicBranch) -> Any\n\n\nGet DynamicBranch x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_active_power_flow!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::DynamicBranch,\n val::Float64\n) -> Any\n\n\nSet DynamicBranch activepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_angle_limits!-Tuple{DynamicBranch, @NamedTuple{min::Float64, max::Float64}}","page":"Dynamic Lines","title":"PowerSystems.set_angle_limits!","text":"set_angle_limits!(\n value::DynamicBranch,\n val::@NamedTuple{min::Float64, max::Float64}\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nSet DynamicBranch angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_arc!-Tuple{DynamicBranch, Arc}","page":"Dynamic Lines","title":"PowerSystems.set_arc!","text":"set_arc!(value::DynamicBranch, val::Arc) -> Any\n\n\nSet DynamicBranch arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_available!-Tuple{DynamicBranch, Bool}","page":"Dynamic Lines","title":"PowerSystems.set_available!","text":"set_available!(value::DynamicBranch, val::Bool) -> Any\n\n\nSet DynamicBranch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_b!-Tuple{DynamicBranch, Any}","page":"Dynamic Lines","title":"PowerSystems.set_b!","text":"set_b!(value::DynamicBranch, val) -> Any\n\n\nSet DynamicBranch b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_ext!-Tuple{DynamicBranch, Dict{String, Any}}","page":"Dynamic Lines","title":"PowerSystems.set_ext!","text":"set_ext!(\n value::DynamicBranch,\n val::Dict{String, Any}\n) -> Any\n\n\nSet DynamicBranch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_n_states!-Tuple{DynamicBranch, Int64}","page":"Dynamic Lines","title":"PowerSystems.set_n_states!","text":"set_n_states!(value::DynamicBranch, val::Int64) -> Int64\n\n\nSet n_states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_r!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_r!","text":"set_r!(value::DynamicBranch, val::Float64) -> Any\n\n\nSet DynamicBranch r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_rate!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_rate!","text":"set_rate!(value::DynamicBranch, val::Float64) -> Any\n\n\nSet DynamicBranch rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_reactive_power_flow!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(\n value::DynamicBranch,\n val::Float64\n) -> Any\n\n\nSet DynamicBranch reactivepowerflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_services!-Tuple{DynamicBranch, Vector{Service}}","page":"Dynamic Lines","title":"PowerSystems.set_services!","text":"set_services!(\n value::DynamicBranch,\n val::Vector{Service}\n) -> Any\n\n\nSet DynamicBranch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_states!-Tuple{DynamicBranch, Vector{Symbol}}","page":"Dynamic Lines","title":"PowerSystems.set_states!","text":"set_states!(\n value::DynamicBranch,\n val::Vector{Symbol}\n) -> Vector{Symbol}\n\n\nSet states\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_branch/#PowerSystems.set_x!-Tuple{DynamicBranch, Float64}","page":"Dynamic Lines","title":"PowerSystems.set_x!","text":"set_x!(value::DynamicBranch, val::Float64) -> Any\n\n\nSet DynamicBranch x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#StaticReserveNonSpinning","page":"StaticReserveNonSpinning","title":"StaticReserveNonSpinning","text":"","category":"section"},{"location":"model_library/generated_StaticReserveNonSpinning/","page":"StaticReserveNonSpinning","title":"StaticReserveNonSpinning","text":"Modules = [PowerSystems]\nPages = [\"generated/StaticReserveNonSpinning.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.StaticReserveNonSpinning","page":"StaticReserveNonSpinning","title":"PowerSystems.StaticReserveNonSpinning","text":"mutable struct StaticReserveNonSpinning <: ReserveNonSpinning\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for a non-spinning reserve product for system simulations.\n\nArguments\n\nname::String\navailable::Bool\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error\nrequirement::Float64: the static value of required reserves in system p.u., validation range: (0, nothing), action if invalid: error\nsustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error\nmax_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error\nmax_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error\ndeployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_StaticReserveNonSpinning/#InfrastructureSystems.get_name-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"InfrastructureSystems.get_name","text":"get_name(value::StaticReserveNonSpinning) -> String\n\n\nGet StaticReserveNonSpinning name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_available-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_available","text":"get_available(value::StaticReserveNonSpinning) -> Bool\n\n\nGet StaticReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_deployed_fraction-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(\n value::StaticReserveNonSpinning\n) -> Float64\n\n\nGet StaticReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_ext-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_ext","text":"get_ext(\n value::StaticReserveNonSpinning\n) -> Dict{String, Any}\n\n\nGet StaticReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_max_output_fraction-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(\n value::StaticReserveNonSpinning\n) -> Float64\n\n\nGet StaticReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_max_participation_factor-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::StaticReserveNonSpinning\n) -> Float64\n\n\nGet StaticReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_requirement-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_requirement","text":"get_requirement(value::StaticReserveNonSpinning) -> Any\n\n\nGet StaticReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_sustained_time-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(\n value::StaticReserveNonSpinning\n) -> Float64\n\n\nGet StaticReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.get_time_frame-Tuple{StaticReserveNonSpinning}","page":"StaticReserveNonSpinning","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::StaticReserveNonSpinning) -> Float64\n\n\nGet StaticReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_available!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_available!","text":"set_available!(value::StaticReserveNonSpinning, val) -> Any\n\n\nSet StaticReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_deployed_fraction!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(\n value::StaticReserveNonSpinning,\n val\n) -> Any\n\n\nSet StaticReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_ext!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_ext!","text":"set_ext!(value::StaticReserveNonSpinning, val) -> Any\n\n\nSet StaticReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_max_output_fraction!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(\n value::StaticReserveNonSpinning,\n val\n) -> Any\n\n\nSet StaticReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_max_participation_factor!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::StaticReserveNonSpinning,\n val\n) -> Any\n\n\nSet StaticReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_requirement!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_requirement!","text":"set_requirement!(\n value::StaticReserveNonSpinning,\n val\n) -> Any\n\n\nSet StaticReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_sustained_time!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(\n value::StaticReserveNonSpinning,\n val\n) -> Any\n\n\nSet StaticReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StaticReserveNonSpinning/#PowerSystems.set_time_frame!-Tuple{StaticReserveNonSpinning, Any}","page":"StaticReserveNonSpinning","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::StaticReserveNonSpinning, val) -> Any\n\n\nSet StaticReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"tutorials/powersystembuilder/#psb","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"","category":"section"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"Originally Contributed by: Clayton Barrows","category":"page"},{"location":"tutorials/powersystembuilder/#Introduction","page":"PowerSystemCaseBuilder","title":"Introduction","text":"","category":"section"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"PowerSystemCaseBuilder.jl provides a utility to manage a library of Systems. The package has utilities to list the available system data and to create instances of each system. By keeping track of which systems have been constructed locally, it makes the re-instantiation of systems efficient by utilizing the serialization features and avoiding the parsing process for systems that have been previously constructed.","category":"page"},{"location":"tutorials/powersystembuilder/#Dependencies","page":"PowerSystemCaseBuilder","title":"Dependencies","text":"","category":"section"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"using PowerSystemCaseBuilder","category":"page"},{"location":"tutorials/powersystembuilder/#List-all-systems-in-library","page":"PowerSystemCaseBuilder","title":"List all systems in library","text":"","category":"section"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"show_systems()","category":"page"},{"location":"tutorials/powersystembuilder/#Systems-can-be-listed-by-category","page":"PowerSystemCaseBuilder","title":"Systems can be listed by category","text":"","category":"section"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"The available categories can be displayed with:","category":"page"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"show_categories()","category":"page"},{"location":"tutorials/powersystembuilder/#Create-a-System","page":"PowerSystemCaseBuilder","title":"Create a System","text":"","category":"section"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"The first time this is run, it will parse csv data. Subsequent executions will rely on serialized data and will execute much faster since the employ deserialization","category":"page"},{"location":"tutorials/powersystembuilder/","page":"PowerSystemCaseBuilder","title":"PowerSystemCaseBuilder","text":"sys = build_system(PSITestSystems, \"c_sys5_uc\")","category":"page"},{"location":"model_developer_guide/extending_parsing/#Extending-Parsing-Capabilities","page":"Extending Parsing","title":"Extending Parsing Capabilities","text":"","category":"section"},{"location":"model_developer_guide/extending_parsing/#Extending-PowerSystemTableData-parsing","page":"Extending Parsing","title":"Extending PowerSystemTableData parsing","text":"","category":"section"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"This page describes how developers should read columns from raw data files.","category":"page"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"The main point is that you should not read individual hard-coded column names from DataFrames. The parsing code includes mapping functionality that allows you to use PowerSystems-standard names while letting the users define their own custom names.","category":"page"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"Note: This assumes that you are familiar with the PowerSystems Table Data Parser.","category":"page"},{"location":"model_developer_guide/extending_parsing/#Procedure","page":"Extending Parsing","title":"Procedure","text":"","category":"section"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"Add an entry to the array of parameters for your category in src/descriptors/power_system_inputs.json according to the following:\nUse snake_case for the name field.\nThe fields name and description are required.\nTry to use a name that is generic and not specific to one dataset.\nIt is recommended that you define unit.\nIf PowerSystems expects the value to be per-unit then you must specify system_per_unit=true.\nPowerSystems has two commonly-used datasets with customized user config files: PowerSystemsTestData and RTS_GMLC. Update both of these files and submit pull requests.\nParse the raw data like in this example:","category":"page"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"function demo_bus_csv_parser!(data::PowerSystemTableData)\n for bus in iterate_rows(data, BUS::InputCategory)\n @show bus.name, bus.max_active_power, bus.max_reactive_power\n end\nend","category":"page"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"iterate_rows returns a NamedTuple where each name defined in src/descriptors/power_system_inputs.json is a field.","category":"page"},{"location":"model_developer_guide/extending_parsing/#Extending-PSS/e-Dynamic-Parsing-Capabilities","page":"Extending Parsing","title":"Extending PSS/e Dynamic Parsing Capabilities","text":"","category":"section"},{"location":"model_developer_guide/extending_parsing/","page":"Extending Parsing","title":"Extending Parsing","text":"UNDER CONSTRUCTION","category":"page"},{"location":"modeler_guide/market_bid_cost/#PowerSystems-[MarketBidCost](@ref)","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"","category":"section"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"Is an OperationalCost data structure that allows the user to run a production cost model that is very similar to most US electricity market auctions with bids for energy and ancillary services jointly. This page showcases how to create data for this cost function.","category":"page"},{"location":"modeler_guide/market_bid_cost/#Adding-Energy-bids-to-MarketBidCost","page":"PowerSystems MarketBidCost","title":"Adding Energy bids to MarketBidCost","text":"","category":"section"},{"location":"modeler_guide/market_bid_cost/#Step-1:-Constructiong-device-with-MarketBidCost","page":"PowerSystems MarketBidCost","title":"Step 1: Constructiong device with MarketBidCost","text":"","category":"section"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"When using MarketBidCost, the user can add the cost struct to the device specifying only certain elements, at this point the actual energy cost bids don't need to be populated/passed.","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"The code below shows an example how we can create a thermal device with MarketBidCost.","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"using PowerSystems, Dates\nbus = ACBus(1, \"nodeE\", \"REF\", 0, 1.0, (min = 0.9, max = 1.05), 230, nothing, nothing)\n\ngenerator = ThermalStandard(\n name = \"Brighton\",\n available = true,\n status = true,\n bus = bus,\n active_power = 6.0,\n reactive_power = 1.50,\n rating = 0.75,\n prime_mover_type = PrimeMovers.ST,\n fuel = ThermalFuels.COAL,\n active_power_limits = (min = 0.0, max = 6.0),\n reactive_power_limits = (min = -4.50, max = 4.50),\n time_limits = (up = 0.015, down = 0.015),\n ramp_limits = (up = 5.0, down = 3.0),\n operation_cost = MarketBidCost(\n no_load = 0.0,\n start_up = (hot = 0.0, warm = 0.0, cold = 0.0),\n shut_down = 0.0,\n ),\n base_power = 100.0,\n )","category":"page"},{"location":"modeler_guide/market_bid_cost/#Step-2:-Creating-the-TimeSeriesData-for-the-Market-Bid","page":"PowerSystems MarketBidCost","title":"Step 2: Creating the TimeSeriesData for the Market Bid","text":"","category":"section"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"The user is expected to pass the TimeSeriesData that holds the energy bid data which can be of any type (i.e. SingleTimeSeries or Deterministic) and data can be Array{Float64}, Array{Tuple{Float64, Float64}} or Array{Array{Tuple{Float64,Float64}}. If the data is just floats then the cost in the optimization is seen as a constant variable cost, but if data is a Tuple or Array{Tuple} then the model expects the tuples to be cost & power-point pairs (cost in /p.u-hr & power-point in p.u-hr), which is modeled same as TwoPartCost or ThreePartCost. Code below shows an example of how to build a TimeSeriesData.","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"data =\n Dict(Dates.DateTime(\"2020-01-01\") => [\n [(0.0, 0.05), (290.1, 0.0733), (582.72, 0.0967), (894.1, 0.120)],\n [(0.0, 0.05), (300.1, 0.0733), (600.72, 0.0967), (900.1, 0.120)],]\n )\ntime_series_data = Deterministic(\n name = \"variable_cost\",\n data = data,\n resolution = Dates.Hour(1)\n)","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"NOTE: Due to limitations in DataStructures.jl, in PowerSystems.jl when creating Forecasts or TimeSeries for your MarketBidCost, you need to define your data as in the example or with a very explicit container. Otherwise, it won't discern the types properly in the constructor and will return SortedDict{Any,Any,Base.Order.ForwardOrdering} which causes the constructor in PowerSystems.jl to fail. For instance, you need to define the Dict with the data as follows:","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":" # Very verbose dict definition\n data = Dict{DateTime,Array{Array{Tuple{Float64,Float64},1},1}}()\n for t in range(initial_time_sys; step = Hour(1), length = window_count)\n data[t] = MY_BID_DATA\n end","category":"page"},{"location":"modeler_guide/market_bid_cost/#Step-3a:-Adding-Energy-Bid-TimeSeriesData-to-the-device","page":"PowerSystems MarketBidCost","title":"Step 3a: Adding Energy Bid TimeSeriesData to the device","text":"","category":"section"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"To add energy market bids time-series to the MarketBidCost, the use of set_variable_cost! is recommended. The arguments for set_variable_cost! are:","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"sys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\ntime_series_data::TimeSeriesData: TimeSeriesData","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"sys = System(100.0, [bus], [generator])\nset_variable_cost!(sys, generator, time_series_data)","category":"page"},{"location":"modeler_guide/market_bid_cost/#Step-3b:-Adding-Service-Bid-TimeSeriesData-to-the-device","page":"PowerSystems MarketBidCost","title":"Step 3b: Adding Service Bid TimeSeriesData to the device","text":"","category":"section"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"Similar to adding energy market bids, for adding bids for ancillary services the use of set_service_bid! is recommended.","category":"page"},{"location":"modeler_guide/market_bid_cost/","page":"PowerSystems MarketBidCost","title":"PowerSystems MarketBidCost","text":"service = VariableReserve{ReserveUp}(\"example_reserve\", true, 0.6, 2.0)\nadd_service!(sys, service, get_component(ThermalStandard, sys, \"Brighton\"))\ndata =\n Dict(Dates.DateTime(\"2020-01-01\") => [650.3, 750.0])\ntime_series_data = Deterministic(\n name = get_name(service),\n data = data,\n resolution = Dates.Hour(1)\n)\nset_service_bid!(sys, generator, service, time_series_data)","category":"page"},{"location":"model_library/generated_TurbineGov/#TurbineGov","page":"TurbineGov","title":"TurbineGov","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/#DEGOV","page":"TurbineGov","title":"DEGOV","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/DEGOV.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.DEGOV","page":"TurbineGov","title":"PowerSystems.DEGOV","text":"mutable struct DEGOV <: TurbineGov\n T1::Float64\n T2::Float64\n T3::Float64\n K::Float64\n T4::Float64\n T5::Float64\n T6::Float64\n Td::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters Woodward Diesel Governor Model. DEGOV in PowerWorld.\n\nArguments\n\nT1::Float64: Governor mechanism time constant, validation range: (eps(), 100)\nT2::Float64: Turbine power time constant, validation range: (eps(), 100)\nT3::Float64: Turbine exhaust temperature time constant, validation range: (eps(), 100)\nK::Float64: Governor gain (reciprocal of droop), validation range: (eps(), 100)\nT4::Float64: Governor lead time constant, validation range: (eps(), 100)\nT5::Float64: Governor lag time constant, validation range: (eps(), 100)\nT6::Float64: Actuator time constant, validation range: (eps(), 100)\nTd::Float64: Engine time delay, validation range: (eps(), 100)\nP_ref::Float64: Reference Load Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the DEGOV model are:\n\nx_ecb1: Electric control box 1,\nx_ecb2: Electric control box 2,\nx_a1: Actuator 1,\nx_a2: Actuator 2,\nx_a3: Actuator 3,\n\nn_states::Int: DEGOV has 5 states\nstates_types::Vector{StateTypes}: DEGOV has 5 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_K","text":"get_K(value::DEGOV) -> Float64\n\n\nGet DEGOV K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::DEGOV) -> Float64\n\n\nGet DEGOV P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::DEGOV) -> Float64\n\n\nGet DEGOV T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::DEGOV) -> Float64\n\n\nGet DEGOV T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::DEGOV) -> Float64\n\n\nGet DEGOV T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::DEGOV) -> Float64\n\n\nGet DEGOV T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::DEGOV) -> Float64\n\n\nGet DEGOV T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T6-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_T6","text":"get_T6(value::DEGOV) -> Float64\n\n\nGet DEGOV T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Td-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_Td","text":"get_Td(value::DEGOV) -> Float64\n\n\nGet DEGOV Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::DEGOV) -> Dict{String, Any}\n\n\nGet DEGOV ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::DEGOV) -> Int64\n\n\nGet DEGOV n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::DEGOV) -> Vector{Symbol}\n\n\nGet DEGOV states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{DEGOV}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(value::DEGOV) -> Vector{StateTypes}\n\n\nGet DEGOV states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_K!","text":"set_K!(value::DEGOV, val) -> Any\n\n\nSet DEGOV K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::DEGOV, val) -> Any\n\n\nSet DEGOV P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T6!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_T6!","text":"set_T6!(value::DEGOV, val) -> Any\n\n\nSet DEGOV T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Td!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_Td!","text":"set_Td!(value::DEGOV, val) -> Any\n\n\nSet DEGOV Td.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::DEGOV, val) -> Any\n\n\nSet DEGOV ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{DEGOV, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::DEGOV, val) -> Any\n\n\nSet DEGOV states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#GasTG","page":"TurbineGov","title":"GasTG","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/GasTG.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.GasTG","page":"TurbineGov","title":"PowerSystems.GasTG","text":"mutable struct GasTG <: TurbineGov\n R::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n AT::Float64\n Kt::Float64\n V_lim::Tuple{Float64, Float64}\n D_turb::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of Gas Turbine-Governor. GAST in PSSE and GAST_PTI in PowerWorld.\n\nArguments\n\nR::Float64: Speed droop parameter, validation range: (eps(), 0.1)\nT1::Float64: Governor time constant in s, validation range: (eps(), 0.5)\nT2::Float64: Combustion chamber time constant, validation range: (eps(), 0.5)\nT3::Float64: Load limit time constant (exhaust gas measurement time), validation range: (eps(), 5)\nAT::Float64: Ambient temperature load limit, validation range: (0, 1)\nKt::Float64: Load limit feedback gain, validation range: (0, 5)\nV_lim::Tuple{Float64, Float64}: Operational control limits on fuel valve opening (Vmin, Vmax)\nD_turb::Float64: Speed damping coefficient of gas turbine rotor, validation range: (0, 0.5)\nP_ref::Float64: Reference Load Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the GAST model are:\n\nx_g1: Fuel valve opening,\nx_g2: Fuel flow,\nx_g3: Exhaust temperature load\n\nn_states::Int: GasTG has 3 states\nstates_types::Vector{StateTypes}: GAST has 3 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_AT-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_AT","text":"get_AT(value::GasTG) -> Float64\n\n\nGet GasTG AT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_turb-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_D_turb","text":"get_D_turb(value::GasTG) -> Float64\n\n\nGet GasTG D_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kt-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_Kt","text":"get_Kt(value::GasTG) -> Float64\n\n\nGet GasTG Kt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::GasTG) -> Float64\n\n\nGet GasTG P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::GasTG) -> Float64\n\n\nGet GasTG R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::GasTG) -> Float64\n\n\nGet GasTG T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::GasTG) -> Float64\n\n\nGet GasTG T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::GasTG) -> Float64\n\n\nGet GasTG T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_V_lim-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_V_lim","text":"get_V_lim(value::GasTG) -> Tuple{Float64, Float64}\n\n\nGet GasTG V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::GasTG) -> Dict{String, Any}\n\n\nGet GasTG ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::GasTG) -> Int64\n\n\nGet GasTG n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::GasTG) -> Vector{Symbol}\n\n\nGet GasTG states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{GasTG}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(value::GasTG) -> Vector{StateTypes}\n\n\nGet GasTG states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_AT!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_AT!","text":"set_AT!(value::GasTG, val) -> Any\n\n\nSet GasTG AT.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_turb!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_D_turb!","text":"set_D_turb!(value::GasTG, val) -> Any\n\n\nSet GasTG D_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kt!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_Kt!","text":"set_Kt!(value::GasTG, val) -> Any\n\n\nSet GasTG Kt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::GasTG, val) -> Any\n\n\nSet GasTG P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::GasTG, val) -> Any\n\n\nSet GasTG R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::GasTG, val) -> Any\n\n\nSet GasTG T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::GasTG, val) -> Any\n\n\nSet GasTG T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::GasTG, val) -> Any\n\n\nSet GasTG T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_V_lim!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::GasTG, val) -> Any\n\n\nSet GasTG V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::GasTG, val) -> Any\n\n\nSet GasTG ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{GasTG, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::GasTG, val) -> Any\n\n\nSet GasTG states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#GeneralGovModel","page":"TurbineGov","title":"GeneralGovModel","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/GeneralGovModel.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.GeneralGovModel","page":"TurbineGov","title":"PowerSystems.GeneralGovModel","text":"mutable struct GeneralGovModel <: TurbineGov\n Rselect::Int\n fuel_flag::Int\n R::Float64\n Tpelec::Float64\n speed_error_signal::MinMax\n Kp_gov::Float64\n Ki_gov::Float64\n Kd_gov::Float64\n Td_gov::Float64\n valve_position_limits::MinMax\n T_act::Float64\n K_turb::Float64\n Wf_nl::Float64\n Tb::Float64\n Tc::Float64\n T_eng::Float64\n Tf_load::Float64\n Kp_load::Float64\n Ki_load::Float64\n Ld_ref::Float64\n Dm::Float64\n R_open::Float64\n R_close::Float64\n Ki_mw::Float64\n A_set::Float64\n Ka::Float64\n Ta::Float64\n T_rate::Float64\n db::Float64\n Tsa::Float64\n Tsb::Float64\n R_lim::UpDown\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nGE General Governor/Turbine Model. The GeneralGovModel (GGOV1) model is a general purpose governor model used for a variety of prime movers controlled by proportional-integral-derivative (PID) governors including gas turbines.\n\nArguments\n\nRselect::Int: Feedback signal for governor droop, validation range: (-2, 1), action if invalid: error\nfuel_flag::Int: Flag Switch for fuel source characteristic, validation range: (0, 1), action if invalid: error\nR::Float64: Speed droop parameter, validation range: (eps(), nothing), action if invalid: warn\nTpelec::Float64: Electrical power transducer time constant, seconds, validation range: (eps(), nothing), action if invalid: warn\nspeed_error_signal::MinMax: Speed error signal limits\nKp_gov::Float64: Governor proportional gain, validation range: (0, nothing), action if invalid: warn\nKi_gov::Float64: Governor integral gain, validation range: (0, nothing), action if invalid: warn\nKd_gov::Float64: Governor derivative gain, validation range: (0, nothing), action if invalid: warn\nTd_gov::Float64: Governor derivative time constant, validation range: (0, nothing), action if invalid: warn\nvalve_position_limits::MinMax: Valve position limits\nT_act::Float64: Actuator time constant, validation range: (0, nothing), action if invalid: warn\nK_turb::Float64: Turbine gain, validation range: (0, nothing), action if invalid: warn\nWf_nl::Float64: No load fuel flow, pu, validation range: (0, nothing), action if invalid: warn\nTb::Float64: Turbine lag time constant, sec, validation range: (0, nothing), action if invalid: warn\nTc::Float64: Turbine lead time constant, sec, validation range: (0, nothing), action if invalid: warn\nT_eng::Float64: Transport lag time constant for diesel engine, sec, validation range: (0, nothing), action if invalid: warn\nTf_load::Float64: Load limiter time constant, validation range: (0, nothing), action if invalid: warn\nKp_load::Float64: Load limiter proportional gain for PI controller, validation range: (0, nothing), action if invalid: warn\nKi_load::Float64: Load integral gain for PI controller, validation range: (0, nothing), action if invalid: warn\nLd_ref::Float64: Load limiter integral gain for PI controller, validation range: (0, nothing), action if invalid: warn\nDm::Float64: Mechanical damping coefficient, pu, validation range: (0, nothing), action if invalid: warn\nR_open::Float64: Maximum valve opening rate, pu/sec, validation range: (0, nothing), action if invalid: warn\nR_close::Float64: Maximum valve closing rate, pu/sec, validation range: (0, nothing), action if invalid: warn\nKi_mw::Float64: Power controller (reset) gain, validation range: (0, nothing), action if invalid: warn\nA_set::Float64: Acceleration limiter setpoint, pu/sec, validation range: (0, nothing), action if invalid: warn\nKa::Float64: Acceleration limiter gain, validation range: (0, nothing), action if invalid: warn\nTa::Float64: Acceleration limiter time constant , validation range: (eps(), nothing), action if invalid: error\nT_rate::Float64: Turbine rating, validation range: (0, nothing), action if invalid: warn\ndb::Float64: Speed governor deadband, validation range: (0, nothing), action if invalid: warn\nTsa::Float64: Temperature detection lead time constant, validation range: (0, nothing), action if invalid: warn\nTsb::Float64: Temperature detection lag time constant, validation range: (0, nothing), action if invalid: warn\nR_lim::UpDown: Maximum rate of load increa\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the GGOV1 model are:\n\nPe: Machine Electrical Power Measurement,\nx_g1: Governor differential control,\nx_g2: Governor integral control, \nx_g3: Turbine actuator, \nx_g4: Turbine Lead-Lag, \nx_g5: Turbine load limiter measurement, \nx_g6: Turbine Load Limiter Integral Control, \nx_g7: Supervisory Load Control, \nx_g8: Acceleration Control, \nx_g9 Temperature Detection Lead - Lag:\n\nn_states::Int: GeneralGovModel has 10 states\nstates_types::Vector{StateTypes}: GGOV1 has 10 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_A_set-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_A_set","text":"get_A_set(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel A_set.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Dm-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Dm","text":"get_Dm(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Dm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K_turb-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_K_turb","text":"get_K_turb(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel K_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ka-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ka","text":"get_Ka(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kd_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Kd_gov","text":"get_Kd_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Kd_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ki_gov","text":"get_Ki_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ki_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki_load-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ki_load","text":"get_Ki_load(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ki_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ki_mw-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ki_mw","text":"get_Ki_mw(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ki_mw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kp_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Kp_gov","text":"get_Kp_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Kp_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Kp_load-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Kp_load","text":"get_Kp_load(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Kp_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ld_ref-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ld_ref","text":"get_Ld_ref(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ld_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R_close-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R_close","text":"get_R_close(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel R_close.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R_lim-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R_lim","text":"get_R_lim(\n value::GeneralGovModel\n) -> @NamedTuple{up::Float64, down::Float64}\n\n\nGet GeneralGovModel R_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R_open-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_R_open","text":"get_R_open(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel R_open.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Rselect-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Rselect","text":"get_Rselect(value::GeneralGovModel) -> Int64\n\n\nGet GeneralGovModel Rselect.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_act-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_T_act","text":"get_T_act(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel T_act.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_eng-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_T_eng","text":"get_T_eng(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel T_eng.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_rate-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_T_rate","text":"get_T_rate(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ta-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Ta","text":"get_Ta(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tb-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tb","text":"get_Tb(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tc-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tc","text":"get_Tc(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Td_gov-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Td_gov","text":"get_Td_gov(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Td_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tf_load-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tf_load","text":"get_Tf_load(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tf_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tpelec-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tpelec","text":"get_Tpelec(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tpelec.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tsa-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tsa","text":"get_Tsa(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tsa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tsb-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Tsb","text":"get_Tsb(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Tsb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Wf_nl-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_Wf_nl","text":"get_Wf_nl(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel Wf_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_db-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_db","text":"get_db(value::GeneralGovModel) -> Float64\n\n\nGet GeneralGovModel db.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::GeneralGovModel) -> Dict{String, Any}\n\n\nGet GeneralGovModel ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_fuel_flag-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_fuel_flag","text":"get_fuel_flag(value::GeneralGovModel) -> Int64\n\n\nGet GeneralGovModel fuel_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::GeneralGovModel) -> Int64\n\n\nGet GeneralGovModel n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_speed_error_signal-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_speed_error_signal","text":"get_speed_error_signal(\n value::GeneralGovModel\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GeneralGovModel speed_error_signal.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::GeneralGovModel) -> Vector{Symbol}\n\n\nGet GeneralGovModel states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::GeneralGovModel\n) -> Vector{StateTypes}\n\n\nGet GeneralGovModel states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{GeneralGovModel}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::GeneralGovModel\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet GeneralGovModel valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_A_set!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_A_set!","text":"set_A_set!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel A_set.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Dm!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Dm!","text":"set_Dm!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Dm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K_turb!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_K_turb!","text":"set_K_turb!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel K_turb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ka!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kd_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Kd_gov!","text":"set_Kd_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Kd_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki_gov!","text":"set_Ki_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ki_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki_load!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki_load!","text":"set_Ki_load!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ki_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ki_mw!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ki_mw!","text":"set_Ki_mw!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ki_mw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kp_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Kp_gov!","text":"set_Kp_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Kp_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Kp_load!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Kp_load!","text":"set_Kp_load!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Kp_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ld_ref!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ld_ref!","text":"set_Ld_ref!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ld_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R_close!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R_close!","text":"set_R_close!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R_close.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R_lim!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R_lim!","text":"set_R_lim!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R_open!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_R_open!","text":"set_R_open!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel R_open.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Rselect!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Rselect!","text":"set_Rselect!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Rselect.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_act!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_T_act!","text":"set_T_act!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel T_act.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_eng!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_T_eng!","text":"set_T_eng!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel T_eng.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_rate!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_T_rate!","text":"set_T_rate!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ta!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tb!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tc!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Td_gov!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Td_gov!","text":"set_Td_gov!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Td_gov.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tf_load!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tf_load!","text":"set_Tf_load!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tf_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tpelec!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tpelec!","text":"set_Tpelec!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tpelec.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tsa!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tsa!","text":"set_Tsa!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tsa.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tsb!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Tsb!","text":"set_Tsb!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Tsb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Wf_nl!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_Wf_nl!","text":"set_Wf_nl!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel Wf_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_db!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_db!","text":"set_db!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel db.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_fuel_flag!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_fuel_flag!","text":"set_fuel_flag!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel fuel_flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_speed_error_signal!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_speed_error_signal!","text":"set_speed_error_signal!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel speed_error_signal.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::GeneralGovModel, val) -> Any\n\n\nSet GeneralGovModel states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{GeneralGovModel, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(\n value::GeneralGovModel,\n val\n) -> Any\n\n\nSet GeneralGovModel valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#HydroTurbineGov","page":"TurbineGov","title":"HydroTurbineGov","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/HydroTurbineGov.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.HydroTurbineGov","page":"TurbineGov","title":"PowerSystems.HydroTurbineGov","text":"mutable struct HydroTurbineGov <: TurbineGov\n R::Float64\n r::Float64\n Tr::Float64\n Tf::Float64\n Tg::Float64\n VELM::Float64\n gate_position_limits::MinMax\n Tw::Float64\n At::Float64\n D_T::Float64\n q_nl::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nHydro Turbine-Governor.\n\nArguments\n\nR::Float64: Permanent droop parameter, validation range: (0, 0.1), action if invalid: warn\nr::Float64: Temporary Droop, validation range: (0, 2), action if invalid: warn\nTr::Float64: Governor time constant, validation range: (eps(), 30), action if invalid: error\nTf::Float64: Filter Time constant, validation range: (eps(), 0.1)\nTg::Float64: Servo time constant, validation range: (eps(), 1), action if invalid: error\nVELM::Float64: gate velocity limit, validation range: (eps(), 0.3), action if invalid: error\ngate_position_limits::MinMax: Gate position limits\nTw::Float64: water time constant, validation range: (eps(), 3), action if invalid: error\nAt::Float64: Turbine gain, validation range: (0.8, 1.5), action if invalid: warn\nD_T::Float64: Turbine Damping, validation range: (0, 0.5), action if invalid: warn\nq_nl::Float64: No-power flow, validation range: (0, nothing), action if invalid: warn\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the HydroTurbineGov model are:\n\nx_g1: filter_output,\nx_g2: desired gate, \nx_g3: gate opening, \nx_g4: turbine flow\n\nn_states::Int: HYGOV has 4 states\nstates_types::Vector{StateTypes}: HYGOV has 4 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_At-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_At","text":"get_At(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov At.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_T-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_D_T","text":"get_D_T(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tf-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tf","text":"get_Tf(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tg-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tg","text":"get_Tg(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tr-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tr","text":"get_Tr(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tw-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_Tw","text":"get_Tw(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_VELM-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_VELM","text":"get_VELM(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov VELM.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::HydroTurbineGov) -> Dict{String, Any}\n\n\nGet HydroTurbineGov ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_gate_position_limits-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_gate_position_limits","text":"get_gate_position_limits(\n value::HydroTurbineGov\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet HydroTurbineGov gate_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::HydroTurbineGov) -> Int64\n\n\nGet HydroTurbineGov n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_q_nl-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_q_nl","text":"get_q_nl(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov q_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_r-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_r","text":"get_r(value::HydroTurbineGov) -> Float64\n\n\nGet HydroTurbineGov r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::HydroTurbineGov) -> Vector{Symbol}\n\n\nGet HydroTurbineGov states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{HydroTurbineGov}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::HydroTurbineGov\n) -> Vector{StateTypes}\n\n\nGet HydroTurbineGov states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_At!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_At!","text":"set_At!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov At.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_T!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_D_T!","text":"set_D_T!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tf!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tg!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tg!","text":"set_Tg!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tr!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tw!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_Tw!","text":"set_Tw!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov Tw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_VELM!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_VELM!","text":"set_VELM!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov VELM.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_gate_position_limits!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_gate_position_limits!","text":"set_gate_position_limits!(\n value::HydroTurbineGov,\n val\n) -> Any\n\n\nSet HydroTurbineGov gate_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_q_nl!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_q_nl!","text":"set_q_nl!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov q_nl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_r!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_r!","text":"set_r!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{HydroTurbineGov, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::HydroTurbineGov, val) -> Any\n\n\nSet HydroTurbineGov states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#IEEETurbineGov1","page":"TurbineGov","title":"IEEETurbineGov1","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/IEEETurbineGov1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.IEEETurbineGov1","page":"TurbineGov","title":"PowerSystems.IEEETurbineGov1","text":"mutable struct IEEETurbineGov1 <: TurbineGov\n K::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n U0::Float64\n U_c::Float64\n valve_position_limits::MinMax\n T4::Float64\n K1::Float64\n K2::Float64\n T5::Float64\n K3::Float64\n K4::Float64\n T6::Float64\n K5::Float64\n K6::Float64\n T7::Float64\n K7::Float64\n K8::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Type 1 Speed-Governing Model\n\nArguments\n\nK::Float64: Governor Gain, validation range: (5, 30), action if invalid: warn\nT1::Float64: Input Filter Lag, validation range: (0, 5), action if invalid: warn\nT2::Float64: Input Filter Lead, validation range: (0, 10), action if invalid: warn\nT3::Float64: Valve position Time Constant, validation range: (eps(), 1), action if invalid: error\nU0::Float64: Maximum Valve Opening Rate, validation range: (0.01, 0.03), action if invalid: warn\nU_c::Float64: Maximum Valve closing rate, validation range: (-0.3, 0), action if invalid: warn\nvalve_position_limits::MinMax: Valve position limits in MW\nT4::Float64: Time Constant inlet steam, validation range: (0, 1), action if invalid: warn\nK1::Float64: Fraction of high presure shaft power, validation range: (-2, 1), action if invalid: warn\nK2::Float64: Fraction of low presure shaft power, validation range: (0, nothing), action if invalid: warn\nT5::Float64: Time constant for second boiler pass, validation range: (0, 10), action if invalid: warn\nK3::Float64: Fraction of high presure shaft power second boiler pass, validation range: (0, 0.5), action if invalid: warn\nK4::Float64: Fraction of low presure shaft power second boiler pass, validation range: (0, 0.5), action if invalid: warn\nT6::Float64: Time constant for third boiler pass, validation range: (0, 10), action if invalid: warn\nK5::Float64: Fraction of high presure shaft power third boiler pass, validation range: (0, 0.35), action if invalid: warn\nK6::Float64: Fraction of low presure shaft power third boiler pass, validation range: (0, 0.55), action if invalid: warn\nT7::Float64: Time constant for fourth boiler pass, validation range: (0, 10), action if invalid: warn\nK7::Float64: Fraction of high presure shaft power fourth boiler pass, validation range: (0, 0.3), action if invalid: warn\nK8::Float64: Fraction of low presure shaft power fourth boiler pass, validation range: (0, 0.3), action if invalid: warn\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the IEEETurbineGov model are:\n\nx_g1: First Governor integrator,\nx_g2: Governor output,\nx_g3: First Turbine integrator, \nx_g4: Second Turbine Integrator, \nx_g5: Third Turbine Integrator, \nx_g6: Fourth Turbine Integrator,\n\nn_states::Int: IEEEG1 has 6 states\nstates_types::Vector{StateTypes}: IEEEG1 has 6 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K","text":"get_K(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K1-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K1","text":"get_K1(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K2-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K2","text":"get_K2(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K3-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K3","text":"get_K3(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K4-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K4","text":"get_K4(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K5-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K5","text":"get_K5(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K6-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K6","text":"get_K6(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K7-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K7","text":"get_K7(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_K8-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_K8","text":"get_K8(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 K8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T6-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T6","text":"get_T6(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T7-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T7","text":"get_T7(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_U0-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_U0","text":"get_U0(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 U0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_U_c-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_U_c","text":"get_U_c(value::IEEETurbineGov1) -> Float64\n\n\nGet IEEETurbineGov1 U_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::IEEETurbineGov1) -> Dict{String, Any}\n\n\nGet IEEETurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::IEEETurbineGov1) -> Int64\n\n\nGet IEEETurbineGov1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::IEEETurbineGov1) -> Vector{Symbol}\n\n\nGet IEEETurbineGov1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::IEEETurbineGov1\n) -> Vector{StateTypes}\n\n\nGet IEEETurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{IEEETurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::IEEETurbineGov1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet IEEETurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K!","text":"set_K!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K1!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K1!","text":"set_K1!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K2!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K2!","text":"set_K2!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K3!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K3!","text":"set_K3!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K4!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K4!","text":"set_K4!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K5!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K5!","text":"set_K5!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K6!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K6!","text":"set_K6!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K7!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K7!","text":"set_K7!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_K8!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_K8!","text":"set_K8!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 K8.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T6!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T6!","text":"set_T6!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T6.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T7!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T7!","text":"set_T7!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 T7.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_U0!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_U0!","text":"set_U0!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 U0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_U_c!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_U_c!","text":"set_U_c!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 U_c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::IEEETurbineGov1, val) -> Any\n\n\nSet IEEETurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{IEEETurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(\n value::IEEETurbineGov1,\n val\n) -> Any\n\n\nSet IEEETurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#SteamTurbineGov1","page":"TurbineGov","title":"SteamTurbineGov1","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/SteamTurbineGov1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.SteamTurbineGov1","page":"TurbineGov","title":"PowerSystems.SteamTurbineGov1","text":"mutable struct SteamTurbineGov1 <: TurbineGov\n R::Float64\n T1::Float64\n valve_position_limits::MinMax\n T2::Float64\n T3::Float64\n D_T::Float64\n DB_h::Float64\n DB_l::Float64\n T_rate::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nSteam Turbine-Governor. This model considers both TGOV1 or TGOV1DU in PSS/E.\n\nArguments\n\nR::Float64: Droop parameter, validation range: (0, 0.1), action if invalid: warn\nT1::Float64: Governor time constant, validation range: (eps(), 0.5), action if invalid: error\nvalve_position_limits::MinMax: Valve position limits\nT2::Float64: Lead Lag Lead Time constant , validation range: (0, nothing), action if invalid: warn\nT3::Float64: Lead Lag Lag Time constant , validation range: (eps(), 10), action if invalid: error\nD_T::Float64: Turbine Damping, validation range: (0, 0.5), action if invalid: warn\nDB_h::Float64: Deadband for overspeed, validation range: (0, nothing), action if invalid: warn\nDB_l::Float64: Deadband for underspeed, validation range: (nothing, 0), action if invalid: warn\nT_rate::Float64: Turbine Rate (MW). If zero, generator base is used., validation range: (0, nothing), action if invalid: warn\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the SteamTurbineGov1 model are:\n\nx_g1: Valve Opening,\nx_g2: Lead-lag state\n\nn_states::Int: TGOV1 has 2 states\nstates_types::Vector{StateTypes}: TGOV1 has 2 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_DB_h-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_DB_h","text":"get_DB_h(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 DB_h.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_DB_l-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_DB_l","text":"get_DB_l(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 DB_l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_D_T-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_D_T","text":"get_D_T(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T_rate-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_T_rate","text":"get_T_rate(value::SteamTurbineGov1) -> Float64\n\n\nGet SteamTurbineGov1 T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::SteamTurbineGov1) -> Dict{String, Any}\n\n\nGet SteamTurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::SteamTurbineGov1) -> Int64\n\n\nGet SteamTurbineGov1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::SteamTurbineGov1) -> Vector{Symbol}\n\n\nGet SteamTurbineGov1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states_types-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_states_types","text":"get_states_types(\n value::SteamTurbineGov1\n) -> Vector{StateTypes}\n\n\nGet SteamTurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{SteamTurbineGov1}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::SteamTurbineGov1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet SteamTurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_DB_h!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_DB_h!","text":"set_DB_h!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 DB_h.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_DB_l!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_DB_l!","text":"set_DB_l!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 DB_l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_D_T!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_D_T!","text":"set_D_T!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 D_T.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T_rate!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_T_rate!","text":"set_T_rate!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 T_rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_states_types!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::SteamTurbineGov1, val) -> Any\n\n\nSet SteamTurbineGov1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{SteamTurbineGov1, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(\n value::SteamTurbineGov1,\n val\n) -> Any\n\n\nSet SteamTurbineGov1 valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGFixed","page":"TurbineGov","title":"TGFixed","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGFixed.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGFixed","page":"TurbineGov","title":"PowerSystems.TGFixed","text":"mutable struct TGFixed <: TurbineGov\n efficiency::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a fixed Turbine Governor that returns a fixed mechanical torque given by the product of P_ref*efficiency\n\nArguments\n\nefficiency::Float64: Efficiency factor that multiplies P_ref, validation range: (0, nothing)\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}\nn_states::Int: TGFixed has no states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGFixed) -> Float64\n\n\nGet TGFixed P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_efficiency-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_efficiency","text":"get_efficiency(value::TGFixed) -> Float64\n\n\nGet TGFixed efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGFixed) -> Dict{String, Any}\n\n\nGet TGFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGFixed) -> Int64\n\n\nGet TGFixed n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGFixed}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGFixed) -> Vector{Symbol}\n\n\nGet TGFixed states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGFixed, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGFixed, val) -> Any\n\n\nSet TGFixed P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_efficiency!-Tuple{TGFixed, Any}","page":"TurbineGov","title":"PowerSystems.set_efficiency!","text":"set_efficiency!(value::TGFixed, val) -> Any\n\n\nSet TGFixed efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGFixed, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGFixed, val) -> Any\n\n\nSet TGFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGTypeI","page":"TurbineGov","title":"TGTypeI","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGTypeI.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGTypeI","page":"TurbineGov","title":"PowerSystems.TGTypeI","text":"mutable struct TGTypeI <: TurbineGov\n R::Float64\n Ts::Float64\n Tc::Float64\n T3::Float64\n T4::Float64\n T5::Float64\n valve_position_limits::MinMax\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Turbine Governor Type I.\n\nArguments\n\nR::Float64: Droop parameter, validation range: (0, nothing)\nTs::Float64: Governor time constant, validation range: (0, nothing)\nTc::Float64: Servo time constant, validation range: (0, nothing)\nT3::Float64: Transient gain time constant, validation range: (0, nothing)\nT4::Float64: Power fraction time constant, validation range: (0, nothing)\nT5::Float64: Reheat time constant, validation range: (0, nothing)\nvalve_position_limits::MinMax: Valve position limits in MW\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the TGTypeI model are:\n\nx_g1: Governor state,\nx_g2: Servo state,\nx_g3: Reheat state\n\nn_states::Int: TGTypeI has 3 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGTypeI) -> Float64\n\n\nGet TGTypeI P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::TGTypeI) -> Float64\n\n\nGet TGTypeI R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T3-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_T3","text":"get_T3(value::TGTypeI) -> Float64\n\n\nGet TGTypeI T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T4-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_T4","text":"get_T4(value::TGTypeI) -> Float64\n\n\nGet TGTypeI T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T5-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_T5","text":"get_T5(value::TGTypeI) -> Float64\n\n\nGet TGTypeI T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Tc-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_Tc","text":"get_Tc(value::TGTypeI) -> Float64\n\n\nGet TGTypeI Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_Ts-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_Ts","text":"get_Ts(value::TGTypeI) -> Float64\n\n\nGet TGTypeI Ts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGTypeI) -> Dict{String, Any}\n\n\nGet TGTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGTypeI) -> Int64\n\n\nGet TGTypeI n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGTypeI) -> Vector{Symbol}\n\n\nGet TGTypeI states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_valve_position_limits-Tuple{TGTypeI}","page":"TurbineGov","title":"PowerSystems.get_valve_position_limits","text":"get_valve_position_limits(\n value::TGTypeI\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TGTypeI valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T3!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_T3!","text":"set_T3!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T4!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_T4!","text":"set_T4!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T5!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_T5!","text":"set_T5!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI T5.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Tc!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_Ts!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_Ts!","text":"set_Ts!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI Ts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_valve_position_limits!-Tuple{TGTypeI, Any}","page":"TurbineGov","title":"PowerSystems.set_valve_position_limits!","text":"set_valve_position_limits!(value::TGTypeI, val) -> Any\n\n\nSet TGTypeI valve_position_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#TGTypeII","page":"TurbineGov","title":"TGTypeII","text":"","category":"section"},{"location":"model_library/generated_TurbineGov/","page":"TurbineGov","title":"TurbineGov","text":"Modules = [PowerSystems]\nPages = [\"/TGTypeII.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TurbineGov/#PowerSystems.TGTypeII","page":"TurbineGov","title":"PowerSystems.TGTypeII","text":"mutable struct TGTypeII <: TurbineGov\n R::Float64\n T1::Float64\n T2::Float64\n τ_limits::MinMax\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Turbine Governor Type II.\n\nArguments\n\nR::Float64: Droop parameter, validation range: (0, nothing)\nT1::Float64: Transient gain time constant, validation range: (0, nothing)\nT2::Float64: Power fraction time constant, validation range: (0, nothing)\nτ_limits::MinMax: Power into the governor limits\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the TGTypeI model are:\n\nx_g1: lead-lag state\n\nn_states::Int: TGTypeII has 1 state\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_P_ref-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::TGTypeII) -> Float64\n\n\nGet TGTypeII P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_R-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_R","text":"get_R(value::TGTypeII) -> Float64\n\n\nGet TGTypeII R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T1-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_T1","text":"get_T1(value::TGTypeII) -> Float64\n\n\nGet TGTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_T2-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_T2","text":"get_T2(value::TGTypeII) -> Float64\n\n\nGet TGTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_ext-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_ext","text":"get_ext(value::TGTypeII) -> Dict{String, Any}\n\n\nGet TGTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_n_states-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_n_states","text":"get_n_states(value::TGTypeII) -> Int64\n\n\nGet TGTypeII n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_states-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_states","text":"get_states(value::TGTypeII) -> Vector{Symbol}\n\n\nGet TGTypeII states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.get_τ_limits-Tuple{TGTypeII}","page":"TurbineGov","title":"PowerSystems.get_τ_limits","text":"get_τ_limits(\n value::TGTypeII\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TGTypeII τ_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_P_ref!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_R!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_R!","text":"set_R!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII R.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T1!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_T1!","text":"set_T1!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_T2!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_T2!","text":"set_T2!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_ext!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_ext!","text":"set_ext!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TurbineGov/#PowerSystems.set_τ_limits!-Tuple{TGTypeII, Any}","page":"TurbineGov","title":"PowerSystems.set_τ_limits!","text":"set_τ_limits!(value::TGTypeII, val) -> Any\n\n\nSet TGTypeII τ_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.InverterLimiter","page":"InverterLimiter","title":"PowerSystems.InverterLimiter","text":"","category":"section"},{"location":"model_library/generated_InverterLimiter/#InstantaneousCurrentLimiter","page":"InverterLimiter","title":"InstantaneousCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_InverterLimiter/","page":"InverterLimiter","title":"InverterLimiter","text":"Modules = [PowerSystems]\nPages = [\"/InstantaneousCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.InstantaneousCurrentLimiter","page":"InverterLimiter","title":"PowerSystems.InstantaneousCurrentLimiter","text":"mutable struct InstantaneousCurrentLimiter <: InverterLimiter\n Id_max::Float64\n Iq_max::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Instantaneous (Square) Current Controller Limiter\n\nArguments\n\nId_max::Float64: Maximum limit on d-axis current controller input current (device base), validation range: (0, nothing)\nIq_max::Float64: Maximum limit on d-axis current controller input current (device base), validation range: (0, nothing)\next::Dict{String, Any}\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_Id_max-Tuple{InstantaneousCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_Id_max","text":"get_Id_max(value::InstantaneousCurrentLimiter) -> Float64\n\n\nGet InstantaneousCurrentLimiter Id_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_Iq_max-Tuple{InstantaneousCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_Iq_max","text":"get_Iq_max(value::InstantaneousCurrentLimiter) -> Float64\n\n\nGet InstantaneousCurrentLimiter Iq_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_ext-Tuple{InstantaneousCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_ext","text":"get_ext(\n value::InstantaneousCurrentLimiter\n) -> Dict{String, Any}\n\n\nGet InstantaneousCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_Id_max!-Tuple{InstantaneousCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_Id_max!","text":"set_Id_max!(value::InstantaneousCurrentLimiter, val) -> Any\n\n\nSet InstantaneousCurrentLimiter Id_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_Iq_max!-Tuple{InstantaneousCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_Iq_max!","text":"set_Iq_max!(value::InstantaneousCurrentLimiter, val) -> Any\n\n\nSet InstantaneousCurrentLimiter Iq_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_ext!-Tuple{InstantaneousCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::InstantaneousCurrentLimiter, val) -> Any\n\n\nSet InstantaneousCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#MagnitudeCurrentLimiter","page":"InverterLimiter","title":"MagnitudeCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_InverterLimiter/","page":"InverterLimiter","title":"InverterLimiter","text":"Modules = [PowerSystems]\nPages = [\"/MagnitudeCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.MagnitudeCurrentLimiter","page":"InverterLimiter","title":"PowerSystems.MagnitudeCurrentLimiter","text":"mutable struct MagnitudeCurrentLimiter <: InverterLimiter\n I_max::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Magnitude (Circular) Current Controller Limiter\n\nArguments\n\nI_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)\next::Dict{String, Any}\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_I_max-Tuple{MagnitudeCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_I_max","text":"get_I_max(value::MagnitudeCurrentLimiter) -> Float64\n\n\nGet MagnitudeCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_ext-Tuple{MagnitudeCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_ext","text":"get_ext(value::MagnitudeCurrentLimiter) -> Dict{String, Any}\n\n\nGet MagnitudeCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_I_max!-Tuple{MagnitudeCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::MagnitudeCurrentLimiter, val) -> Any\n\n\nSet MagnitudeCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_ext!-Tuple{MagnitudeCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::MagnitudeCurrentLimiter, val) -> Any\n\n\nSet MagnitudeCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PriorityCurrentLimiter","page":"InverterLimiter","title":"PriorityCurrentLimiter","text":"","category":"section"},{"location":"model_library/generated_InverterLimiter/","page":"InverterLimiter","title":"InverterLimiter","text":"Modules = [PowerSystems]\nPages = [\"/PriorityCurrentLimiter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.PriorityCurrentLimiter","page":"InverterLimiter","title":"PowerSystems.PriorityCurrentLimiter","text":"mutable struct PriorityCurrentLimiter <: InverterLimiter\n I_max::Float64\n ϕ_I::Float64\n ext::Dict{String, Any}\nend\n\nParameters of Priority-Based Current Controller Limiter\n\nArguments\n\nI_max::Float64: Maximum limit on current controller input current (device base), validation range: (0, nothing)\nϕ_I::Float64: Pre-defined angle (measured against the d-axis) for Iref once limit is hit, validation range: (-1.571, 1.571)\next::Dict{String, Any}\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_I_max-Tuple{PriorityCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_I_max","text":"get_I_max(value::PriorityCurrentLimiter) -> Float64\n\n\nGet PriorityCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_ext-Tuple{PriorityCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_ext","text":"get_ext(value::PriorityCurrentLimiter) -> Dict{String, Any}\n\n\nGet PriorityCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.get_ϕ_I-Tuple{PriorityCurrentLimiter}","page":"InverterLimiter","title":"PowerSystems.get_ϕ_I","text":"get_ϕ_I(value::PriorityCurrentLimiter) -> Float64\n\n\nGet PriorityCurrentLimiter ϕ_I.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_I_max!-Tuple{PriorityCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::PriorityCurrentLimiter, val) -> Any\n\n\nSet PriorityCurrentLimiter I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_ext!-Tuple{PriorityCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_ext!","text":"set_ext!(value::PriorityCurrentLimiter, val) -> Any\n\n\nSet PriorityCurrentLimiter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InverterLimiter/#PowerSystems.set_ϕ_I!-Tuple{PriorityCurrentLimiter, Any}","page":"InverterLimiter","title":"PowerSystems.set_ϕ_I!","text":"set_ϕ_I!(value::PriorityCurrentLimiter, val) -> Any\n\n\nSet PriorityCurrentLimiter ϕ_I.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#MarketBidCost","page":"MarketBidCost","title":"MarketBidCost","text":"","category":"section"},{"location":"model_library/generated_MarketBidCost/","page":"MarketBidCost","title":"MarketBidCost","text":"Modules = [PowerSystems]\nPages = [\"generated/MarketBidCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.MarketBidCost","page":"MarketBidCost","title":"PowerSystems.MarketBidCost","text":"mutable struct MarketBidCost <: OperationalCost\n no_load::Float64\n start_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}\n shut_down::Float64\n variable::Union{Nothing, IS.TimeSeriesKey}\n ancillary_services::Vector{Service}\nend\n\nData Structure Operational Cost to reflect market bids of energy and ancilliary services. Compatible with most US Market bidding mechanisms\n\nArguments\n\nno_load::Float64: no load cost\nstart_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}: start-up cost at different stages of the thermal cycle. Warm is also refered as intermediate in some markets\nshut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn\nvariable::Union{Nothing, IS.TimeSeriesKey}: Variable Cost TimeSeriesKey\nancillary_services::Vector{Service}: Bids for the ancillary services\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.get_ancillary_services-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_ancillary_services","text":"get_ancillary_services(\n value::MarketBidCost\n) -> Vector{Service}\n\n\nGet MarketBidCost ancillary_services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.get_no_load-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_no_load","text":"get_no_load(value::MarketBidCost) -> Float64\n\n\nGet MarketBidCost no_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.get_shut_down-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::MarketBidCost) -> Float64\n\n\nGet MarketBidCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.get_start_up-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_start_up","text":"get_start_up(\n value::MarketBidCost\n) -> @NamedTuple{hot::Float64, warm::Float64, cold::Float64}\n\n\nGet MarketBidCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.get_variable-Tuple{MarketBidCost}","page":"MarketBidCost","title":"PowerSystems.get_variable","text":"get_variable(\n value::MarketBidCost\n) -> Union{Nothing, InfrastructureSystems.TimeSeriesKey}\n\n\nGet MarketBidCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.set_ancillary_services!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_ancillary_services!","text":"set_ancillary_services!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost ancillary_services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.set_no_load!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_no_load!","text":"set_no_load!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost no_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.set_shut_down!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.set_start_up!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MarketBidCost/#PowerSystems.set_variable!-Tuple{MarketBidCost, Any}","page":"MarketBidCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::MarketBidCost, val) -> Any\n\n\nSet MarketBidCost variable.\n\n\n\n\n\n","category":"method"},{"location":"tutorials/dynamic_data/#Creating-and-Handling-Data-for-Dynamic-Simulations","page":"Use Dynamic Data","title":"Creating and Handling Data for Dynamic Simulations","text":"","category":"section"},{"location":"tutorials/dynamic_data/","page":"Use Dynamic Data","title":"Use Dynamic Data","text":"For more details to handle dynamic data, check the tutorial in PowerSimulationsDynamics.","category":"page"},{"location":"model_library/generated_HydroDispatch/#HydroDispatch","page":"HydroDispatch","title":"HydroDispatch","text":"","category":"section"},{"location":"model_library/generated_HydroDispatch/","page":"HydroDispatch","title":"HydroDispatch","text":"Modules = [PowerSystems]\nPages = [\"generated/HydroDispatch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.HydroDispatch","page":"HydroDispatch","title":"PowerSystems.HydroDispatch","text":"mutable struct HydroDispatch <: HydroGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n time_limits::Union{Nothing, UpDown}\n base_power::Float64\n operation_cost::OperationalCost\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\nactive_power_limits::MinMax, validation range: (0, nothing), action if invalid: warn\nreactive_power_limits::Union{Nothing, MinMax}, action if invalid: warn\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\noperation_cost::OperationalCost: Operation Cost of Generation OperationalCost\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_HydroDispatch/#InfrastructureSystems.get_name-Tuple{HydroDispatch}","page":"HydroDispatch","title":"InfrastructureSystems.get_name","text":"get_name(value::HydroDispatch) -> String\n\n\nGet HydroDispatch name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#InfrastructureSystems.get_time_series_container-Tuple{HydroDispatch}","page":"HydroDispatch","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::HydroDispatch\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet HydroDispatch time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_active_power-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_active_power","text":"get_active_power(value::HydroDispatch) -> Any\n\n\nGet HydroDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_active_power_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::HydroDispatch\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroDispatch active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_available-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_available","text":"get_available(value::HydroDispatch) -> Bool\n\n\nGet HydroDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_base_power-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_base_power","text":"get_base_power(value::HydroDispatch) -> Float64\n\n\nGet HydroDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_bus-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_bus","text":"get_bus(value::HydroDispatch) -> ACBus\n\n\nGet HydroDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_dynamic_injector-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HydroDispatch\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HydroDispatch dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_ext-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_ext","text":"get_ext(value::HydroDispatch) -> Dict{String, Any}\n\n\nGet HydroDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_operation_cost-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::HydroDispatch\n) -> PowerSystems.OperationalCost\n\n\nGet HydroDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_prime_mover_type-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::HydroDispatch) -> PrimeMovers\n\n\nGet HydroDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_ramp_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::HydroDispatch\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroDispatch ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_rating-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_rating","text":"get_rating(value::HydroDispatch) -> Any\n\n\nGet HydroDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_reactive_power-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HydroDispatch) -> Any\n\n\nGet HydroDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_reactive_power_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HydroDispatch\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_services-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_services","text":"get_services(value::HydroDispatch) -> Vector{Service}\n\n\nGet HydroDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.get_time_limits-Tuple{HydroDispatch}","page":"HydroDispatch","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::HydroDispatch\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroDispatch time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_active_power!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_active_power_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_available!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_available!","text":"set_available!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_base_power!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_bus!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_bus!","text":"set_bus!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_ext!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_operation_cost!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_prime_mover_type!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_ramp_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_rating!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_rating!","text":"set_rating!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_reactive_power!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_reactive_power_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_services!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_services!","text":"set_services!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_time_limits!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroDispatch/#PowerSystems.set_time_series_container!-Tuple{HydroDispatch, Any}","page":"HydroDispatch","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::HydroDispatch, val) -> Any\n\n\nSet HydroDispatch time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#Line","page":"Line","title":"Line","text":"","category":"section"},{"location":"model_library/generated_Line/","page":"Line","title":"Line","text":"Modules = [PowerSystems]\nPages = [\"generated/Line.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Line/#PowerSystems.Line","page":"Line","title":"PowerSystems.Line","text":"mutable struct Line <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n b::FromTo\n rate::Float64\n angle_limits::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\nreactive_power_flow::Float64\narc::Arc\nr::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn\nx::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn\nb::FromTo: System per-unit value, validation range: (0, 100), action if invalid: warn\nrate::Float64\nangle_limits::MinMax, validation range: (-1.571, 1.571), action if invalid: error\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Line/#InfrastructureSystems.get_name-Tuple{Line}","page":"Line","title":"InfrastructureSystems.get_name","text":"get_name(value::Line) -> String\n\n\nGet Line name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#InfrastructureSystems.get_time_series_container-Tuple{Line}","page":"Line","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::Line\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet Line time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_active_power_flow-Tuple{Line}","page":"Line","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::Line) -> Any\n\n\nGet Line active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_angle_limits-Tuple{Line}","page":"Line","title":"PowerSystems.get_angle_limits","text":"get_angle_limits(\n value::Line\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet Line angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_arc-Tuple{Line}","page":"Line","title":"PowerSystems.get_arc","text":"get_arc(value::Line) -> Arc\n\n\nGet Line arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_available-Tuple{Line}","page":"Line","title":"PowerSystems.get_available","text":"get_available(value::Line) -> Bool\n\n\nGet Line available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_b-Tuple{Line}","page":"Line","title":"PowerSystems.get_b","text":"get_b(\n value::Line\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet Line b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_ext-Tuple{Line}","page":"Line","title":"PowerSystems.get_ext","text":"get_ext(value::Line) -> Dict{String, Any}\n\n\nGet Line ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_r-Tuple{Line}","page":"Line","title":"PowerSystems.get_r","text":"get_r(value::Line) -> Float64\n\n\nGet Line r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_rate-Tuple{Line}","page":"Line","title":"PowerSystems.get_rate","text":"get_rate(value::Line) -> Any\n\n\nGet Line rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_reactive_power_flow-Tuple{Line}","page":"Line","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::Line) -> Any\n\n\nGet Line reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_services-Tuple{Line}","page":"Line","title":"PowerSystems.get_services","text":"get_services(value::Line) -> Vector{Service}\n\n\nGet Line services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.get_x-Tuple{Line}","page":"Line","title":"PowerSystems.get_x","text":"get_x(value::Line) -> Float64\n\n\nGet Line x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_active_power_flow!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::Line, val) -> Any\n\n\nSet Line active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_angle_limits!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_angle_limits!","text":"set_angle_limits!(value::Line, val) -> Any\n\n\nSet Line angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_arc!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_arc!","text":"set_arc!(value::Line, val) -> Any\n\n\nSet Line arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_available!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_available!","text":"set_available!(value::Line, val) -> Any\n\n\nSet Line available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_b!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_b!","text":"set_b!(value::Line, val) -> Any\n\n\nSet Line b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_ext!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_ext!","text":"set_ext!(value::Line, val) -> Any\n\n\nSet Line ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_r!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_r!","text":"set_r!(value::Line, val) -> Any\n\n\nSet Line r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_rate!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_rate!","text":"set_rate!(value::Line, val) -> Any\n\n\nSet Line rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_reactive_power_flow!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::Line, val) -> Any\n\n\nSet Line reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_services!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_services!","text":"set_services!(value::Line, val) -> Any\n\n\nSet Line services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_time_series_container!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::Line, val) -> Any\n\n\nSet Line time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Line/#PowerSystems.set_x!-Tuple{Line, Any}","page":"Line","title":"PowerSystems.set_x!","text":"set_x!(value::Line, val) -> Any\n\n\nSet Line x.\n\n\n\n\n\n","category":"method"},{"location":"quick_start_guide/#Quick-Start-Guide","page":"Quick Start Guide","title":"Quick Start Guide","text":"","category":"section"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"PowerSystems.jl is structured to enable data creation scripts, flexible interfaces for data intake and extension of the data model. These features are enabled through three main features:","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"Abstract type hierarchy,\nOptimized read/write data container (the container is called System),\nUtilities to facilitate modeling, extensions, and integration.","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"It is possible to load examples systems directly using PowerSystemCaseBuilder.","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"using PowerSystems","category":"page"},{"location":"quick_start_guide/#Loading-data-from-files","page":"Quick Start Guide","title":"Loading data from files","text":"","category":"section"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"Data can be loaded from several file formats and return a summary of the system's components and time-series. Some example files can be found in the tutorials data folder","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"file_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\"); #hide\nsystem_data = System(joinpath(file_dir, \"RTS_GMLC.m\"))","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"More details about parsing text files from different formats in this section","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"","category":"page"},{"location":"quick_start_guide/#Using-PowerSystems.jl-for-modeling","page":"Quick Start Guide","title":"Using PowerSystems.jl for modeling","text":"","category":"section"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"This example function implements a function where the modeler can choose the technology by its type and use the different implementations of get_max_active_power. Using the \"dot\" access to get a parameter value from a device is actively discouraged, use \"getter\" functions instead","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"Refer to Modeling with JuMP for a more detailed use of PowerSystems.jl to develop a model","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"function installed_capacity(system::System; technology::Type{T} = Generator) where T <: Generator\n installed_capacity = 0.0\n for g in get_components(T, system)\n installed_capacity += get_max_active_power(g)\n end\n return installed_capacity\nend","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"Total installed capacity","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"installed_capacity(system_data)","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"Installed capacity of the thermal generation","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"installed_capacity(system_data; technology = ThermalStandard)","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"Installed capacity of renewable generation","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"installed_capacity(system_data; technology = RenewableGen)","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"","category":"page"},{"location":"quick_start_guide/#Adding-Time-Series-data-to-a-System","page":"Quick Start Guide","title":"Adding Time Series data to a System","text":"","category":"section"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"PowerSystems.jl provides interfaces to augment the data sets already created. You can also add time series data to a system from one or more CSV files, more details in Time Series Data. This example implements SingleTimeSeries","category":"page"},{"location":"quick_start_guide/","page":"Quick Start Guide","title":"Quick Start Guide","text":"using TimeSeries\nusing Dates\nsystem = System(joinpath(file_dir, \"case5.m\"))\n\nnew_renewable = RenewableDispatch(\n name = \"WindPowerNew\",\n available = true,\n bus = get_component(ACBus, system, \"3\"),\n active_power = 2.0,\n reactive_power = 1.0,\n rating = 1.2,\n prime_mover_type = PrimeMovers.WT,\n reactive_power_limits = (min = 0.0, max = 0.0),\n base_power = 100.0,\n operation_cost = TwoPartCost(22.0, 0.0),\n power_factor = 1.0\n )\n\nadd_component!(system, new_renewable)\n\nts_data = [0.98, 0.99, 0.99, 1.0, 0.99, 0.99, 0.99, 0.98, 0.95, 0.92, 0.90, 0.88, 0.84, 0.76,\n 0.65, 0.52, 0.39, 0.28, 0.19, 0.15, 0.13, 0.11, 0.09, 0.06,]\ntime_stamps = range(DateTime(\"2020-01-01\"); step = Hour(1), length = 24)\ntime_series_data_raw = TimeArray(time_stamps, ts_data)\ntime_series = SingleTimeSeries(name = \"active_power\", data = time_series_data_raw)\n\n#Add the forecast to the system and component\nadd_time_series!(system, new_renewable, time_series)","category":"page"},{"location":"model_library/generated_Arc/#Arc","page":"Arc","title":"Arc","text":"","category":"section"},{"location":"model_library/generated_Arc/","page":"Arc","title":"Arc","text":"Modules = [PowerSystems]\nPages = [\"generated/Arc.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Arc/#PowerSystems.Arc","page":"Arc","title":"PowerSystems.Arc","text":"mutable struct Arc <: Topology\n from::Bus\n to::Bus\n internal::InfrastructureSystemsInternal\nend\n\nA topological Arc.\n\nArguments\n\nfrom::Bus: The initial bus\nto::Bus: The terminal bus\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Arc/#PowerSystems.get_from-Tuple{Arc}","page":"Arc","title":"PowerSystems.get_from","text":"get_from(value::Arc) -> Bus\n\n\nGet Arc from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Arc/#PowerSystems.get_to-Tuple{Arc}","page":"Arc","title":"PowerSystems.get_to","text":"get_to(value::Arc) -> Bus\n\n\nGet Arc to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Arc/#PowerSystems.set_from!-Tuple{Arc, Any}","page":"Arc","title":"PowerSystems.set_from!","text":"set_from!(value::Arc, val) -> Any\n\n\nSet Arc from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Arc/#PowerSystems.set_to!-Tuple{Arc, Any}","page":"Arc","title":"PowerSystems.set_to!","text":"set_to!(value::Arc, val) -> Any\n\n\nSet Arc to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#InterruptiblePowerLoad","page":"InterruptiblePowerLoad","title":"InterruptiblePowerLoad","text":"","category":"section"},{"location":"model_library/generated_InterruptiblePowerLoad/","page":"InterruptiblePowerLoad","title":"InterruptiblePowerLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/InterruptiblePowerLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.InterruptiblePowerLoad","page":"InterruptiblePowerLoad","title":"PowerSystems.InterruptiblePowerLoad","text":"mutable struct InterruptiblePowerLoad <: ControllableLoad\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n max_active_power::Float64\n max_reactive_power::Float64\n base_power::Float64\n operation_cost::TwoPartCost\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nmax_active_power::Float64\nmax_reactive_power::Float64\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\noperation_cost::TwoPartCost: Operation Cost of Generation TwoPartCost\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InterruptiblePowerLoad/#InfrastructureSystems.get_name-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::InterruptiblePowerLoad) -> String\n\n\nGet InterruptiblePowerLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#InfrastructureSystems.get_time_series_container-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::InterruptiblePowerLoad\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet InterruptiblePowerLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_active_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_active_power","text":"get_active_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_available-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_available","text":"get_available(value::InterruptiblePowerLoad) -> Bool\n\n\nGet InterruptiblePowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_base_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::InterruptiblePowerLoad) -> Float64\n\n\nGet InterruptiblePowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_bus-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_bus","text":"get_bus(value::InterruptiblePowerLoad) -> ACBus\n\n\nGet InterruptiblePowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_dynamic_injector-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::InterruptiblePowerLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet InterruptiblePowerLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_ext-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_ext","text":"get_ext(value::InterruptiblePowerLoad) -> Dict{String, Any}\n\n\nGet InterruptiblePowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_max_active_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_max_reactive_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_operation_cost-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::InterruptiblePowerLoad\n) -> TwoPartCost\n\n\nGet InterruptiblePowerLoad operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_reactive_power-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::InterruptiblePowerLoad) -> Any\n\n\nGet InterruptiblePowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.get_services-Tuple{InterruptiblePowerLoad}","page":"InterruptiblePowerLoad","title":"PowerSystems.get_services","text":"get_services(\n value::InterruptiblePowerLoad\n) -> Vector{Service}\n\n\nGet InterruptiblePowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_active_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_available!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_available!","text":"set_available!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_base_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_bus!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_ext!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_max_active_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_max_active_power!","text":"set_max_active_power!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_max_reactive_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_max_reactive_power!","text":"set_max_reactive_power!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_operation_cost!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_reactive_power!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_services!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_services!","text":"set_services!(value::InterruptiblePowerLoad, val) -> Any\n\n\nSet InterruptiblePowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterruptiblePowerLoad/#PowerSystems.set_time_series_container!-Tuple{InterruptiblePowerLoad, Any}","page":"InterruptiblePowerLoad","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::InterruptiblePowerLoad,\n val\n) -> Any\n\n\nSet InterruptiblePowerLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#DCBus","page":"DCBus","title":"DCBus","text":"","category":"section"},{"location":"model_library/generated_DCBus/","page":"DCBus","title":"DCBus","text":"Modules = [PowerSystems]\nPages = [\"generated/DCBus.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DCBus/#PowerSystems.DCBus","page":"DCBus","title":"PowerSystems.DCBus","text":"mutable struct DCBus <: Bus\n number::Int\n name::String\n magnitude::Union{Nothing, Float64}\n voltage_limits::Union{Nothing, MinMax}\n base_voltage::Union{Nothing, Float64}\n area::Union{Nothing, Area}\n load_zone::Union{Nothing, LoadZone}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA power-system DC bus.\n\nArguments\n\nnumber::Int: number associated with the DC bus\nname::String: the name of the DC bus\nmagnitude::Union{Nothing, Float64}: voltage as a multiple of basevoltage, validation range: voltage_limits, action if invalid: warn\nvoltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of basevoltage\nbase_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing), action if invalid: error\narea::Union{Nothing, Area}: the area containing the DC bus\nload_zone::Union{Nothing, LoadZone}: the load zone containing the DC bus\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DCBus/#InfrastructureSystems.get_name-Tuple{DCBus}","page":"DCBus","title":"InfrastructureSystems.get_name","text":"get_name(value::DCBus) -> String\n\n\nGet DCBus name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_area-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_area","text":"get_area(value::DCBus) -> Union{Nothing, Area}\n\n\nGet DCBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_base_voltage-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_base_voltage","text":"get_base_voltage(value::DCBus) -> Union{Nothing, Float64}\n\n\nGet DCBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_ext-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_ext","text":"get_ext(value::DCBus) -> Dict{String, Any}\n\n\nGet DCBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_load_zone-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_load_zone","text":"get_load_zone(value::DCBus) -> Union{Nothing, LoadZone}\n\n\nGet DCBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_magnitude-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_magnitude","text":"get_magnitude(value::DCBus) -> Union{Nothing, Float64}\n\n\nGet DCBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_number-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_number","text":"get_number(value::DCBus) -> Int64\n\n\nGet DCBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.get_voltage_limits-Tuple{DCBus}","page":"DCBus","title":"PowerSystems.get_voltage_limits","text":"get_voltage_limits(\n value::DCBus\n) -> Union{Nothing, @NamedTuple{min::Float64, max::Float64}}\n\n\nGet DCBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_area!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_area!","text":"set_area!(value::DCBus, val) -> Any\n\n\nSet DCBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_base_voltage!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_base_voltage!","text":"set_base_voltage!(value::DCBus, val) -> Any\n\n\nSet DCBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_ext!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_ext!","text":"set_ext!(value::DCBus, val) -> Any\n\n\nSet DCBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_load_zone!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_load_zone!","text":"set_load_zone!(value::DCBus, val) -> Any\n\n\nSet DCBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_magnitude!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_magnitude!","text":"set_magnitude!(value::DCBus, val) -> Any\n\n\nSet DCBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_number!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_number!","text":"set_number!(value::DCBus, val) -> Any\n\n\nSet DCBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCBus/#PowerSystems.set_voltage_limits!-Tuple{DCBus, Any}","page":"DCBus","title":"PowerSystems.set_voltage_limits!","text":"set_voltage_limits!(value::DCBus, val) -> Any\n\n\nSet DCBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#SwitchedAdmittance","page":"SwitchedAdmittance","title":"SwitchedAdmittance","text":"","category":"section"},{"location":"model_library/generated_SwitchedAdmittance/","page":"SwitchedAdmittance","title":"SwitchedAdmittance","text":"Modules = [PowerSystems]\nPages = [\"generated/SwitchedAdmittance.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_SwitchedAdmittance/#InfrastructureSystems.get_name-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"InfrastructureSystems.get_name","text":"get_name(value::PowerSystems.SwitchedAdmittance) -> String\n\n\nGet SwitchedAdmittance name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#InfrastructureSystems.get_time_series_container-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::PowerSystems.SwitchedAdmittance\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet SwitchedAdmittance time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_Y-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_Y","text":"get_Y(value::PowerSystems.SwitchedAdmittance) -> ComplexF64\n\n\nGet SwitchedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_Y_increase-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_Y_increase","text":"get_Y_increase(\n value::PowerSystems.SwitchedAdmittance\n) -> ComplexF64\n\n\nGet SwitchedAdmittance Y_increase.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_available-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_available","text":"get_available(\n value::PowerSystems.SwitchedAdmittance\n) -> Bool\n\n\nGet SwitchedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_bus-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_bus","text":"get_bus(value::PowerSystems.SwitchedAdmittance) -> ACBus\n\n\nGet SwitchedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_dynamic_injector-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::PowerSystems.SwitchedAdmittance\n) -> Union{Nothing, DynamicInjection}\n\n\nGet SwitchedAdmittance dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_ext-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_ext","text":"get_ext(\n value::PowerSystems.SwitchedAdmittance\n) -> Dict{String, Any}\n\n\nGet SwitchedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_number_of_steps-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_number_of_steps","text":"get_number_of_steps(\n value::PowerSystems.SwitchedAdmittance\n) -> Int64\n\n\nGet SwitchedAdmittance number_of_steps.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.get_services-Tuple{PowerSystems.SwitchedAdmittance}","page":"SwitchedAdmittance","title":"PowerSystems.get_services","text":"get_services(\n value::PowerSystems.SwitchedAdmittance\n) -> Vector{Service}\n\n\nGet SwitchedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_Y!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_Y!","text":"set_Y!(value::PowerSystems.SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_Y_increase!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_Y_increase!","text":"set_Y_increase!(\n value::PowerSystems.SwitchedAdmittance,\n val\n) -> Any\n\n\nSet SwitchedAdmittance Y_increase.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_available!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_available!","text":"set_available!(\n value::PowerSystems.SwitchedAdmittance,\n val\n) -> Any\n\n\nSet SwitchedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_bus!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_bus!","text":"set_bus!(value::PowerSystems.SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_ext!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerSystems.SwitchedAdmittance, val) -> Any\n\n\nSet SwitchedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_number_of_steps!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_number_of_steps!","text":"set_number_of_steps!(\n value::PowerSystems.SwitchedAdmittance,\n val\n) -> Any\n\n\nSet SwitchedAdmittance number_of_steps.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_services!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_services!","text":"set_services!(\n value::PowerSystems.SwitchedAdmittance,\n val\n) -> Any\n\n\nSet SwitchedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_SwitchedAdmittance/#PowerSystems.set_time_series_container!-Tuple{PowerSystems.SwitchedAdmittance, Any}","page":"SwitchedAdmittance","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::PowerSystems.SwitchedAdmittance,\n val\n) -> Any\n\n\nSet SwitchedAdmittance time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#StandardLoad","page":"StandardLoad","title":"StandardLoad","text":"","category":"section"},{"location":"model_library/generated_StandardLoad/","page":"StandardLoad","title":"StandardLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/StandardLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_StandardLoad/#PowerSystems.StandardLoad","page":"StandardLoad","title":"PowerSystems.StandardLoad","text":"mutable struct StandardLoad <: StaticLoad\n name::String\n available::Bool\n bus::ACBus\n base_power::Float64\n constant_active_power::Float64\n constant_reactive_power::Float64\n impedance_active_power::Float64\n impedance_reactive_power::Float64\n current_active_power::Float64\n current_reactive_power::Float64\n max_constant_active_power::Float64\n max_constant_reactive_power::Float64\n max_impedance_active_power::Float64\n max_impedance_reactive_power::Float64\n max_current_active_power::Float64\n max_current_reactive_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData structure for a standard load.\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nconstant_active_power::Float64\nconstant_reactive_power::Float64\nimpedance_active_power::Float64\nimpedance_reactive_power::Float64\ncurrent_active_power::Float64\ncurrent_reactive_power::Float64\nmax_constant_active_power::Float64\nmax_constant_reactive_power::Float64\nmax_impedance_active_power::Float64\nmax_impedance_reactive_power::Float64\nmax_current_active_power::Float64\nmax_current_reactive_power::Float64\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_StandardLoad/#InfrastructureSystems.get_name-Tuple{StandardLoad}","page":"StandardLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::StandardLoad) -> String\n\n\nGet StandardLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#InfrastructureSystems.get_time_series_container-Tuple{StandardLoad}","page":"StandardLoad","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::StandardLoad\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet StandardLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_available-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_available","text":"get_available(value::StandardLoad) -> Bool\n\n\nGet StandardLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_base_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::StandardLoad) -> Float64\n\n\nGet StandardLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_bus-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_bus","text":"get_bus(value::StandardLoad) -> ACBus\n\n\nGet StandardLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_constant_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_constant_active_power","text":"get_constant_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_constant_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_constant_reactive_power","text":"get_constant_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_current_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_current_active_power","text":"get_current_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_current_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_current_reactive_power","text":"get_current_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_dynamic_injector-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::StandardLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet StandardLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_ext-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_ext","text":"get_ext(value::StandardLoad) -> Dict{String, Any}\n\n\nGet StandardLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_impedance_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_impedance_active_power","text":"get_impedance_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_impedance_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_impedance_reactive_power","text":"get_impedance_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_constant_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_constant_active_power","text":"get_max_constant_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_constant_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_constant_reactive_power","text":"get_max_constant_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_current_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_current_active_power","text":"get_max_current_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_current_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_current_reactive_power","text":"get_max_current_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_impedance_active_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_impedance_active_power","text":"get_max_impedance_active_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_max_impedance_reactive_power-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_max_impedance_reactive_power","text":"get_max_impedance_reactive_power(value::StandardLoad) -> Any\n\n\nGet StandardLoad max_impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.get_services-Tuple{StandardLoad}","page":"StandardLoad","title":"PowerSystems.get_services","text":"get_services(value::StandardLoad) -> Vector{Service}\n\n\nGet StandardLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_available!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_available!","text":"set_available!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_base_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_bus!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_constant_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_constant_active_power!","text":"set_constant_active_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_constant_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_constant_reactive_power!","text":"set_constant_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_current_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_current_active_power!","text":"set_current_active_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_current_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_current_reactive_power!","text":"set_current_reactive_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_ext!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_impedance_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_impedance_active_power!","text":"set_impedance_active_power!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_impedance_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_impedance_reactive_power!","text":"set_impedance_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_constant_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_constant_active_power!","text":"set_max_constant_active_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_constant_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_constant_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_constant_reactive_power!","text":"set_max_constant_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_constant_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_current_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_current_active_power!","text":"set_max_current_active_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_current_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_current_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_current_reactive_power!","text":"set_max_current_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_current_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_impedance_active_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_impedance_active_power!","text":"set_max_impedance_active_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_impedance_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_max_impedance_reactive_power!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_max_impedance_reactive_power!","text":"set_max_impedance_reactive_power!(\n value::StandardLoad,\n val\n) -> Any\n\n\nSet StandardLoad max_impedance_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_services!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_services!","text":"set_services!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StandardLoad/#PowerSystems.set_time_series_container!-Tuple{StandardLoad, Any}","page":"StandardLoad","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::StandardLoad, val) -> Any\n\n\nSet StandardLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#Area","page":"Area","title":"Area","text":"","category":"section"},{"location":"model_library/generated_Area/","page":"Area","title":"Area","text":"Modules = [PowerSystems]\nPages = [\"generated/Area.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Area/#PowerSystems.Area","page":"Area","title":"PowerSystems.Area","text":"mutable struct Area <: AggregationTopology\n name::String\n peak_active_power::Float64\n peak_reactive_power::Float64\n load_response::Float64\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nA collection of buses for control purposes.\n\nArguments\n\nname::String\npeak_active_power::Float64\npeak_reactive_power::Float64\nload_response::Float64\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Area/#InfrastructureSystems.get_name-Tuple{Area}","page":"Area","title":"InfrastructureSystems.get_name","text":"get_name(value::Area) -> String\n\n\nGet Area name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#InfrastructureSystems.get_time_series_container-Tuple{Area}","page":"Area","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::Area\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet Area time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_load_response-Tuple{Area}","page":"Area","title":"PowerSystems.get_load_response","text":"get_load_response(value::Area) -> Float64\n\n\nGet Area load_response.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_peak_active_power-Tuple{Area}","page":"Area","title":"PowerSystems.get_peak_active_power","text":"get_peak_active_power(value::Area) -> Any\n\n\nGet Area peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.get_peak_reactive_power-Tuple{Area}","page":"Area","title":"PowerSystems.get_peak_reactive_power","text":"get_peak_reactive_power(value::Area) -> Any\n\n\nGet Area peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_load_response!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_load_response!","text":"set_load_response!(value::Area, val) -> Any\n\n\nSet Area load_response.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_peak_active_power!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_peak_active_power!","text":"set_peak_active_power!(value::Area, val) -> Any\n\n\nSet Area peak_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_peak_reactive_power!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_peak_reactive_power!","text":"set_peak_reactive_power!(value::Area, val) -> Any\n\n\nSet Area peak_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Area/#PowerSystems.set_time_series_container!-Tuple{Area, Any}","page":"Area","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::Area, val) -> Any\n\n\nSet Area time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/regulation_device/#Regulation-Device","page":"Regulation Device","title":"Regulation Device","text":"","category":"section"},{"location":"model_library/regulation_device/","page":"Regulation Device","title":"Regulation Device","text":"Modules = [PowerSystems]\nPages = [\"models/regulation_device.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/regulation_device/#PowerSystems.RegulationDevice","page":"Regulation Device","title":"PowerSystems.RegulationDevice","text":"Parametric struct to allow Injection Devices to be used in regulation services. Extends the device type and provides additional fields relevant to regulation services.\n\n\n\n\n\n","category":"type"},{"location":"model_library/regulation_device/#PowerSystems.RegulationDevice-Tuple{T} where T<:StaticInjection","page":"Regulation Device","title":"PowerSystems.RegulationDevice","text":"Default constructor for the Regulation Device\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#ThermalStandard","page":"ThermalStandard","title":"ThermalStandard","text":"","category":"section"},{"location":"model_library/generated_ThermalStandard/","page":"ThermalStandard","title":"ThermalStandard","text":"Modules = [PowerSystems]\nPages = [\"generated/ThermalStandard.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.ThermalStandard","page":"ThermalStandard","title":"PowerSystems.ThermalStandard","text":"mutable struct ThermalStandard <: ThermalGen\n name::String\n available::Bool\n status::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n operation_cost::OperationalCost\n base_power::Float64\n time_limits::Union{Nothing, UpDown}\n must_run::Bool\n prime_mover_type::PrimeMovers\n fuel::ThermalFuels\n services::Vector{Service}\n time_at_status::Float64\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for thermal generation technologies.\n\nArguments\n\nname::String\navailable::Bool\nstatus::Bool\nbus::ACBus\nactive_power::Float64, validation range: active_power_limits, action if invalid: warn\nreactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nactive_power_limits::MinMax, validation range: (0, nothing), action if invalid: warn\nreactive_power_limits::Union{Nothing, MinMax}\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error\noperation_cost::OperationalCost\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error\nmust_run::Bool\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\nfuel::ThermalFuels: Prime mover fuel according to EIA 923\nservices::Vector{Service}: Services that this device contributes to\ntime_at_status::Float64\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ThermalStandard/#InfrastructureSystems.get_name-Tuple{ThermalStandard}","page":"ThermalStandard","title":"InfrastructureSystems.get_name","text":"get_name(value::ThermalStandard) -> String\n\n\nGet ThermalStandard name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#InfrastructureSystems.get_time_series_container-Tuple{ThermalStandard}","page":"ThermalStandard","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::ThermalStandard\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet ThermalStandard time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_active_power-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_active_power","text":"get_active_power(value::ThermalStandard) -> Any\n\n\nGet ThermalStandard active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_active_power_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::ThermalStandard\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet ThermalStandard active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_available-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_available","text":"get_available(value::ThermalStandard) -> Bool\n\n\nGet ThermalStandard available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_base_power-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_base_power","text":"get_base_power(value::ThermalStandard) -> Float64\n\n\nGet ThermalStandard base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_bus-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_bus","text":"get_bus(value::ThermalStandard) -> ACBus\n\n\nGet ThermalStandard bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_dynamic_injector-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::ThermalStandard\n) -> Union{Nothing, DynamicInjection}\n\n\nGet ThermalStandard dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_ext-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_ext","text":"get_ext(value::ThermalStandard) -> Dict{String, Any}\n\n\nGet ThermalStandard ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_fuel-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_fuel","text":"get_fuel(value::ThermalStandard) -> ThermalFuels\n\n\nGet ThermalStandard fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_must_run-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_must_run","text":"get_must_run(value::ThermalStandard) -> Bool\n\n\nGet ThermalStandard must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_operation_cost-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::ThermalStandard\n) -> PowerSystems.OperationalCost\n\n\nGet ThermalStandard operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_prime_mover_type-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::ThermalStandard) -> PrimeMovers\n\n\nGet ThermalStandard prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_ramp_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::ThermalStandard\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet ThermalStandard ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_rating-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_rating","text":"get_rating(value::ThermalStandard) -> Any\n\n\nGet ThermalStandard rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_reactive_power-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::ThermalStandard) -> Any\n\n\nGet ThermalStandard reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_reactive_power_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::ThermalStandard\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet ThermalStandard reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_services-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_services","text":"get_services(value::ThermalStandard) -> Vector{Service}\n\n\nGet ThermalStandard services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_status-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_status","text":"get_status(value::ThermalStandard) -> Bool\n\n\nGet ThermalStandard status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_time_at_status-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::ThermalStandard) -> Float64\n\n\nGet ThermalStandard time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.get_time_limits-Tuple{ThermalStandard}","page":"ThermalStandard","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::ThermalStandard\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet ThermalStandard time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_active_power!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_active_power_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_available!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_available!","text":"set_available!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_base_power!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_bus!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_bus!","text":"set_bus!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_ext!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_ext!","text":"set_ext!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_fuel!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_fuel!","text":"set_fuel!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_must_run!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_must_run!","text":"set_must_run!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_operation_cost!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_prime_mover_type!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_ramp_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_rating!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_rating!","text":"set_rating!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_reactive_power!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_reactive_power_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::ThermalStandard,\n val\n) -> Any\n\n\nSet ThermalStandard reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_services!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_services!","text":"set_services!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_status!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_status!","text":"set_status!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_time_at_status!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_time_limits!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::ThermalStandard, val) -> Any\n\n\nSet ThermalStandard time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalStandard/#PowerSystems.set_time_series_container!-Tuple{ThermalStandard, Any}","page":"ThermalStandard","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::ThermalStandard,\n val\n) -> Any\n\n\nSet ThermalStandard time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#VariableReserveNonSpinning","page":"VariableReserveNonSpinning","title":"VariableReserveNonSpinning","text":"","category":"section"},{"location":"model_library/generated_VariableReserveNonSpinning/","page":"VariableReserveNonSpinning","title":"VariableReserveNonSpinning","text":"Modules = [PowerSystems]\nPages = [\"generated/VariableReserveNonSpinning.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.VariableReserveNonSpinning","page":"VariableReserveNonSpinning","title":"PowerSystems.VariableReserveNonSpinning","text":"mutable struct VariableReserveNonSpinning <: ReserveNonSpinning\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for the procurement products for system simulations.\n\nArguments\n\nname::String\navailable::Bool\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error\nrequirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData\nsustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error\nmax_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error\nmax_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error\ndeployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_VariableReserveNonSpinning/#InfrastructureSystems.get_name-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"InfrastructureSystems.get_name","text":"get_name(value::VariableReserveNonSpinning) -> String\n\n\nGet VariableReserveNonSpinning name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#InfrastructureSystems.get_time_series_container-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::VariableReserveNonSpinning\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet VariableReserveNonSpinning time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_available-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_available","text":"get_available(value::VariableReserveNonSpinning) -> Bool\n\n\nGet VariableReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_deployed_fraction-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_ext-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_ext","text":"get_ext(\n value::VariableReserveNonSpinning\n) -> Dict{String, Any}\n\n\nGet VariableReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_max_output_fraction-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_max_participation_factor-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_requirement-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_requirement","text":"get_requirement(value::VariableReserveNonSpinning) -> Any\n\n\nGet VariableReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_sustained_time-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(\n value::VariableReserveNonSpinning\n) -> Float64\n\n\nGet VariableReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.get_time_frame-Tuple{VariableReserveNonSpinning}","page":"VariableReserveNonSpinning","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::VariableReserveNonSpinning) -> Float64\n\n\nGet VariableReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_available!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_available!","text":"set_available!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_deployed_fraction!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_ext!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_ext!","text":"set_ext!(value::VariableReserveNonSpinning, val) -> Any\n\n\nSet VariableReserveNonSpinning ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_max_output_fraction!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_max_participation_factor!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_requirement!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_requirement!","text":"set_requirement!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_sustained_time!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_time_frame!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_VariableReserveNonSpinning/#PowerSystems.set_time_series_container!-Tuple{VariableReserveNonSpinning, Any}","page":"VariableReserveNonSpinning","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::VariableReserveNonSpinning,\n val\n) -> Any\n\n\nSet VariableReserveNonSpinning time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#Converter","page":"Converter","title":"Converter","text":"","category":"section"},{"location":"model_library/generated_Converter/#AverageConverter","page":"Converter","title":"AverageConverter","text":"","category":"section"},{"location":"model_library/generated_Converter/","page":"Converter","title":"Converter","text":"Modules = [PowerSystems]\nPages = [\"/AverageConverter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Converter/#PowerSystems.AverageConverter","page":"Converter","title":"PowerSystems.AverageConverter","text":"mutable struct AverageConverter <: Converter\n rated_voltage::Float64\n rated_current::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an average converter model\n\nArguments\n\nrated_voltage::Float64: rated voltage, validation range: (0, nothing)\nrated_current::Float64: rated VA, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}\nn_states::Int: AverageConverter has no states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Converter/#PowerSystems.get_ext-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_ext","text":"get_ext(value::AverageConverter) -> Dict{String, Any}\n\n\nGet AverageConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_n_states-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_n_states","text":"get_n_states(value::AverageConverter) -> Int64\n\n\nGet AverageConverter n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_rated_current-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_rated_current","text":"get_rated_current(value::AverageConverter) -> Float64\n\n\nGet AverageConverter rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_rated_voltage-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_rated_voltage","text":"get_rated_voltage(value::AverageConverter) -> Float64\n\n\nGet AverageConverter rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_states-Tuple{AverageConverter}","page":"Converter","title":"PowerSystems.get_states","text":"get_states(value::AverageConverter) -> Vector{Symbol}\n\n\nGet AverageConverter states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_ext!-Tuple{AverageConverter, Any}","page":"Converter","title":"PowerSystems.set_ext!","text":"set_ext!(value::AverageConverter, val) -> Any\n\n\nSet AverageConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_rated_current!-Tuple{AverageConverter, Any}","page":"Converter","title":"PowerSystems.set_rated_current!","text":"set_rated_current!(value::AverageConverter, val) -> Any\n\n\nSet AverageConverter rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_rated_voltage!-Tuple{AverageConverter, Any}","page":"Converter","title":"PowerSystems.set_rated_voltage!","text":"set_rated_voltage!(value::AverageConverter, val) -> Any\n\n\nSet AverageConverter rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#RenewableEnergyConverterTypeA","page":"Converter","title":"RenewableEnergyConverterTypeA","text":"","category":"section"},{"location":"model_library/generated_Converter/","page":"Converter","title":"Converter","text":"Modules = [PowerSystems]\nPages = [\"/RenewableEnergyConverterTypeA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Converter/#PowerSystems.RenewableEnergyConverterTypeA","page":"Converter","title":"PowerSystems.RenewableEnergyConverterTypeA","text":"mutable struct RenewableEnergyConverterTypeA <: Converter\n T_g::Float64\n Rrpwr::Float64\n Brkpt::Float64\n Zerox::Float64\n Lvpl1::Float64\n Vo_lim::Float64\n Lv_pnts::MinMax\n Io_lim::Float64\n T_fltr::Float64\n K_hv::Float64\n Iqr_lims::MinMax\n Accel::Float64\n Lvpl_sw::Int\n Q_ref::Float64\n R_source::Float64\n X_source::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE\n\nArguments\n\nT_g::Float64: Converter time constant (s), validation range: (0, nothing)\nRrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)\nBrkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)\nZerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)\nLvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)\nVo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)\nLv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)\nIo_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)\nT_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)\nK_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)\nIqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)\nAccel::Float64: Acceleration factor, validation range: (0, 1)\nLvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)\nQ_ref::Float64: Initial machine reactive power from power flow, validation range: (0, nothing)\nR_source::Float64: Output resistor used for the Thevenin Equivalent, validation range: (0, nothing)\nX_source::Float64: Output resistor used for the Thevenin Equivalent, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\tIp: Converter lag for Ipcmd,\tIq: Converter lag for Iqcmd,\tVmeas: Voltage filter for low voltage active current management\nn_states::Int: RenewableEnergyConverterTypeA has 3 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Converter/#PowerSystems.get_Accel-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Accel","text":"get_Accel(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Brkpt-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Brkpt","text":"get_Brkpt(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Io_lim-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Io_lim","text":"get_Io_lim(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Iqr_lims-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Iqr_lims","text":"get_Iqr_lims(\n value::RenewableEnergyConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_K_hv-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_K_hv","text":"get_K_hv(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lv_pnts-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lv_pnts","text":"get_Lv_pnts(\n value::RenewableEnergyConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl1-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl1","text":"get_Lvpl1(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl_sw-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl_sw","text":"get_Lvpl_sw(value::RenewableEnergyConverterTypeA) -> Int64\n\n\nGet RenewableEnergyConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Q_ref-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_R_source-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_R_source","text":"get_R_source(\n value::RenewableEnergyConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyConverterTypeA R_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Rrpwr-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Rrpwr","text":"get_Rrpwr(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_fltr-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_fltr","text":"get_T_fltr(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_g-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_g","text":"get_T_g(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Vo_lim-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Vo_lim","text":"get_Vo_lim(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_X_source-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_X_source","text":"get_X_source(\n value::RenewableEnergyConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyConverterTypeA X_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Zerox-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_Zerox","text":"get_Zerox(value::RenewableEnergyConverterTypeA) -> Float64\n\n\nGet RenewableEnergyConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_ext-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_ext","text":"get_ext(\n value::RenewableEnergyConverterTypeA\n) -> Dict{String, Any}\n\n\nGet RenewableEnergyConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_n_states-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_n_states","text":"get_n_states(value::RenewableEnergyConverterTypeA) -> Int64\n\n\nGet RenewableEnergyConverterTypeA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_states-Tuple{RenewableEnergyConverterTypeA}","page":"Converter","title":"PowerSystems.get_states","text":"get_states(\n value::RenewableEnergyConverterTypeA\n) -> Vector{Symbol}\n\n\nGet RenewableEnergyConverterTypeA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Accel!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Accel!","text":"set_Accel!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Brkpt!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Brkpt!","text":"set_Brkpt!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Io_lim!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Io_lim!","text":"set_Io_lim!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Iqr_lims!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Iqr_lims!","text":"set_Iqr_lims!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_K_hv!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_K_hv!","text":"set_K_hv!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lv_pnts!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lv_pnts!","text":"set_Lv_pnts!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl1!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl1!","text":"set_Lvpl1!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl_sw!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl_sw!","text":"set_Lvpl_sw!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Q_ref!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_R_source!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_R_source!","text":"set_R_source!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA R_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Rrpwr!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Rrpwr!","text":"set_Rrpwr!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_fltr!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_fltr!","text":"set_T_fltr!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_g!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_g!","text":"set_T_g!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Vo_lim!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Vo_lim!","text":"set_Vo_lim!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_X_source!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_X_source!","text":"set_X_source!(\n value::RenewableEnergyConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyConverterTypeA X_source.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Zerox!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Zerox!","text":"set_Zerox!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_ext!-Tuple{RenewableEnergyConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_ext!","text":"set_ext!(value::RenewableEnergyConverterTypeA, val) -> Any\n\n\nSet RenewableEnergyConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#RenewableEnergyVoltageConverterTypeA","page":"Converter","title":"RenewableEnergyVoltageConverterTypeA","text":"","category":"section"},{"location":"model_library/generated_Converter/","page":"Converter","title":"Converter","text":"Modules = [PowerSystems]\nPages = [\"/RenewableEnergyVoltageConverterTypeA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Converter/#PowerSystems.RenewableEnergyVoltageConverterTypeA","page":"Converter","title":"PowerSystems.RenewableEnergyVoltageConverterTypeA","text":"mutable struct RenewableEnergyVoltageConverterTypeA <: Converter\n T_g::Float64\n Rrpwr::Float64\n Brkpt::Float64\n Zerox::Float64\n Lvpl1::Float64\n Vo_lim::Float64\n Lv_pnts::MinMax\n Io_lim::Float64\n T_fltr::Float64\n K_hv::Float64\n Iqr_lims::MinMax\n Accel::Float64\n Lvpl_sw::Int\n Q_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a renewable energy generator/converter model, this model corresponds to REGCA1 in PSSE, but to be interfaced using a Voltage Source instead of a Current Source.\n\nArguments\n\nT_g::Float64: Converter time constant (s), validation range: (0, nothing)\nRrpwr::Float64: Low Voltage Power Logic (LVPL) ramp rate limit (pu/s), validation range: (0, nothing)\nBrkpt::Float64: LVPL characteristic voltage 2 (pu), validation range: (0, nothing)\nZerox::Float64: LVPL characteristic voltage 1 (pu), validation range: (0, nothing)\nLvpl1::Float64: LVPL gain (pu), validation range: (0, nothing)\nVo_lim::Float64: Voltage limit for high voltage reactive current management (pu), validation range: (0, nothing)\nLv_pnts::MinMax: Voltage points for low voltage active current management (pu) (Lvpnt0, Lvpnt1)\nIo_lim::Float64: Current limit (pu) for high voltage reactive current management (specified as a negative value), validation range: (nothing, 0)\nT_fltr::Float64: Voltage filter time constant for low voltage active current management (s), validation range: (0, nothing)\nK_hv::Float64: Overvoltage compensation gain used in the high voltage reactive current management, validation range: (0, nothing)\nIqr_lims::MinMax: Limit on rate of change for reactive current (pu/s) (Iqrmin, Iqrmax)\nAccel::Float64: Acceleration factor, validation range: (0, 1)\nLvpl_sw::Int: Low voltage power logic (LVPL) switch. (0: LVPL not present, 1: LVPL present), validation range: (0, 1)\nQ_ref::Float64: Initial machine reactive power from power flow, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\tIp: Converter lag for Ipcmd,\tIq: Converter lag for Iqcmd,\tVmeas: Voltage filter for low voltage active current management\nn_states::Int: RenewableEnergyVoltageConverterTypeA has 3 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Converter/#PowerSystems.get_Accel-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Accel","text":"get_Accel(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Brkpt-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Brkpt","text":"get_Brkpt(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Io_lim-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Io_lim","text":"get_Io_lim(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Iqr_lims-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Iqr_lims","text":"get_Iqr_lims(\n value::RenewableEnergyVoltageConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyVoltageConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_K_hv-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_K_hv","text":"get_K_hv(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lv_pnts-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lv_pnts","text":"get_Lv_pnts(\n value::RenewableEnergyVoltageConverterTypeA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RenewableEnergyVoltageConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl1-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl1","text":"get_Lvpl1(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Lvpl_sw-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Lvpl_sw","text":"get_Lvpl_sw(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Int64\n\n\nGet RenewableEnergyVoltageConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Q_ref-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Q_ref","text":"get_Q_ref(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Rrpwr-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Rrpwr","text":"get_Rrpwr(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_fltr-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_fltr","text":"get_T_fltr(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_T_g-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_T_g","text":"get_T_g(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Vo_lim-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Vo_lim","text":"get_Vo_lim(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_Zerox-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_Zerox","text":"get_Zerox(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Float64\n\n\nGet RenewableEnergyVoltageConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_ext-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_ext","text":"get_ext(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Dict{String, Any}\n\n\nGet RenewableEnergyVoltageConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_n_states-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_n_states","text":"get_n_states(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Int64\n\n\nGet RenewableEnergyVoltageConverterTypeA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.get_states-Tuple{RenewableEnergyVoltageConverterTypeA}","page":"Converter","title":"PowerSystems.get_states","text":"get_states(\n value::RenewableEnergyVoltageConverterTypeA\n) -> Vector{Symbol}\n\n\nGet RenewableEnergyVoltageConverterTypeA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Accel!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Accel!","text":"set_Accel!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Accel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Brkpt!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Brkpt!","text":"set_Brkpt!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Brkpt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Io_lim!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Io_lim!","text":"set_Io_lim!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Io_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Iqr_lims!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Iqr_lims!","text":"set_Iqr_lims!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Iqr_lims.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_K_hv!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_K_hv!","text":"set_K_hv!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA K_hv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lv_pnts!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lv_pnts!","text":"set_Lv_pnts!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Lv_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl1!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl1!","text":"set_Lvpl1!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Lvpl1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Lvpl_sw!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Lvpl_sw!","text":"set_Lvpl_sw!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Lvpl_sw.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Q_ref!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Q_ref!","text":"set_Q_ref!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Q_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Rrpwr!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Rrpwr!","text":"set_Rrpwr!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Rrpwr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_fltr!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_fltr!","text":"set_T_fltr!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA T_fltr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_T_g!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_T_g!","text":"set_T_g!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA T_g.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Vo_lim!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Vo_lim!","text":"set_Vo_lim!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Vo_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_Zerox!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_Zerox!","text":"set_Zerox!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA Zerox.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Converter/#PowerSystems.set_ext!-Tuple{RenewableEnergyVoltageConverterTypeA, Any}","page":"Converter","title":"PowerSystems.set_ext!","text":"set_ext!(\n value::RenewableEnergyVoltageConverterTypeA,\n val\n) -> Any\n\n\nSet RenewableEnergyVoltageConverterTypeA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PhaseShiftingTransformer","page":"PhaseShiftingTransformer","title":"PhaseShiftingTransformer","text":"","category":"section"},{"location":"model_library/generated_PhaseShiftingTransformer/","page":"PhaseShiftingTransformer","title":"PhaseShiftingTransformer","text":"Modules = [PowerSystems]\nPages = [\"generated/PhaseShiftingTransformer.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.PhaseShiftingTransformer","page":"PhaseShiftingTransformer","title":"PowerSystems.PhaseShiftingTransformer","text":"mutable struct PhaseShiftingTransformer <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n primary_shunt::Float64\n tap::Float64\n α::Float64\n rate::Union{Nothing, Float64}\n phase_angle_limits::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\nreactive_power_flow::Float64\narc::Arc\nr::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn\nx::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn\nprimary_shunt::Float64, validation range: (0, 2), action if invalid: warn\ntap::Float64, validation range: (0, 2), action if invalid: error\nα::Float64, validation range: (-1.571, 1.571), action if invalid: warn\nrate::Union{Nothing, Float64}, validation range: (0, nothing), action if invalid: error\nphase_angle_limits::MinMax, validation range: (-1.571, 1.571), action if invalid: error\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PhaseShiftingTransformer/#InfrastructureSystems.get_name-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"InfrastructureSystems.get_name","text":"get_name(value::PhaseShiftingTransformer) -> String\n\n\nGet PhaseShiftingTransformer name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#InfrastructureSystems.get_time_series_container-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::PhaseShiftingTransformer\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet PhaseShiftingTransformer time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_active_power_flow-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(\n value::PhaseShiftingTransformer\n) -> Any\n\n\nGet PhaseShiftingTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_arc-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_arc","text":"get_arc(value::PhaseShiftingTransformer) -> Arc\n\n\nGet PhaseShiftingTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_available-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_available","text":"get_available(value::PhaseShiftingTransformer) -> Bool\n\n\nGet PhaseShiftingTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_ext-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_ext","text":"get_ext(\n value::PhaseShiftingTransformer\n) -> Dict{String, Any}\n\n\nGet PhaseShiftingTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_phase_angle_limits-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_phase_angle_limits","text":"get_phase_angle_limits(\n value::PhaseShiftingTransformer\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet PhaseShiftingTransformer phase_angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_primary_shunt-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_primary_shunt","text":"get_primary_shunt(\n value::PhaseShiftingTransformer\n) -> Float64\n\n\nGet PhaseShiftingTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_r-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_r","text":"get_r(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_rate-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_rate","text":"get_rate(value::PhaseShiftingTransformer) -> Any\n\n\nGet PhaseShiftingTransformer rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_reactive_power_flow-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(\n value::PhaseShiftingTransformer\n) -> Any\n\n\nGet PhaseShiftingTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_services-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_services","text":"get_services(\n value::PhaseShiftingTransformer\n) -> Vector{Service}\n\n\nGet PhaseShiftingTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_tap-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_tap","text":"get_tap(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_x-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_x","text":"get_x(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.get_α-Tuple{PhaseShiftingTransformer}","page":"PhaseShiftingTransformer","title":"PowerSystems.get_α","text":"get_α(value::PhaseShiftingTransformer) -> Float64\n\n\nGet PhaseShiftingTransformer α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_active_power_flow!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_arc!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_arc!","text":"set_arc!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_available!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_available!","text":"set_available!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_ext!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_ext!","text":"set_ext!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_phase_angle_limits!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_phase_angle_limits!","text":"set_phase_angle_limits!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer phase_angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_primary_shunt!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_primary_shunt!","text":"set_primary_shunt!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_r!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_r!","text":"set_r!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_rate!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_rate!","text":"set_rate!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_reactive_power_flow!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_services!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_services!","text":"set_services!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_tap!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_tap!","text":"set_tap!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_time_series_container!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::PhaseShiftingTransformer,\n val\n) -> Any\n\n\nSet PhaseShiftingTransformer time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_x!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_x!","text":"set_x!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PhaseShiftingTransformer/#PowerSystems.set_α!-Tuple{PhaseShiftingTransformer, Any}","page":"PhaseShiftingTransformer","title":"PowerSystems.set_α!","text":"set_α!(value::PhaseShiftingTransformer, val) -> Any\n\n\nSet PhaseShiftingTransformer α.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#ThreePartCost","page":"ThreePartCost","title":"ThreePartCost","text":"","category":"section"},{"location":"model_library/generated_ThreePartCost/","page":"ThreePartCost","title":"ThreePartCost","text":"Modules = [PowerSystems]\nPages = [\"generated/ThreePartCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.ThreePartCost","page":"ThreePartCost","title":"PowerSystems.ThreePartCost","text":"mutable struct ThreePartCost <: OperationalCost\n variable::VariableCost\n fixed::Float64\n start_up::Float64\n shut_down::Float64\nend\n\nData Structure Operational Cost Data in Three parts fixed, variable cost and start - stop costs.\n\nArguments\n\nvariable::VariableCost: variable cost\nfixed::Float64: fixed cost\nstart_up::Float64: start-up cost, validation range: (0, nothing), action if invalid: warn\nshut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.get_fixed-Tuple{ThreePartCost}","page":"ThreePartCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::ThreePartCost) -> Float64\n\n\nGet ThreePartCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.get_shut_down-Tuple{ThreePartCost}","page":"ThreePartCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::ThreePartCost) -> Float64\n\n\nGet ThreePartCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.get_start_up-Tuple{ThreePartCost}","page":"ThreePartCost","title":"PowerSystems.get_start_up","text":"get_start_up(value::ThreePartCost) -> Float64\n\n\nGet ThreePartCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.get_variable-Tuple{ThreePartCost}","page":"ThreePartCost","title":"PowerSystems.get_variable","text":"get_variable(value::ThreePartCost) -> VariableCost\n\n\nGet ThreePartCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.set_fixed!-Tuple{ThreePartCost, Any}","page":"ThreePartCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::ThreePartCost, val) -> Any\n\n\nSet ThreePartCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.set_shut_down!-Tuple{ThreePartCost, Any}","page":"ThreePartCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::ThreePartCost, val) -> Any\n\n\nSet ThreePartCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.set_start_up!-Tuple{ThreePartCost, Any}","page":"ThreePartCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(value::ThreePartCost, val) -> Any\n\n\nSet ThreePartCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThreePartCost/#PowerSystems.set_variable!-Tuple{ThreePartCost, Any}","page":"ThreePartCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::ThreePartCost, val) -> Any\n\n\nSet ThreePartCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#Transfer","page":"Transfer","title":"Transfer","text":"","category":"section"},{"location":"model_library/generated_Transfer/","page":"Transfer","title":"Transfer","text":"Modules = [PowerSystems]\nPages = [\"generated/Transfer.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Transfer/#PowerSystems.Transfer","page":"Transfer","title":"PowerSystems.Transfer","text":"mutable struct Transfer <: Service\n name::String\n available::Bool\n requirement::Float64\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nrequirement::Float64\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Transfer/#InfrastructureSystems.get_name-Tuple{Transfer}","page":"Transfer","title":"InfrastructureSystems.get_name","text":"get_name(value::Transfer) -> String\n\n\nGet Transfer name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#InfrastructureSystems.get_time_series_container-Tuple{Transfer}","page":"Transfer","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::Transfer\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet Transfer time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.get_available-Tuple{Transfer}","page":"Transfer","title":"PowerSystems.get_available","text":"get_available(value::Transfer) -> Bool\n\n\nGet Transfer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.get_ext-Tuple{Transfer}","page":"Transfer","title":"PowerSystems.get_ext","text":"get_ext(value::Transfer) -> Dict{String, Any}\n\n\nGet Transfer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.get_requirement-Tuple{Transfer}","page":"Transfer","title":"PowerSystems.get_requirement","text":"get_requirement(value::Transfer) -> Float64\n\n\nGet Transfer requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.set_available!-Tuple{Transfer, Any}","page":"Transfer","title":"PowerSystems.set_available!","text":"set_available!(value::Transfer, val) -> Any\n\n\nSet Transfer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.set_ext!-Tuple{Transfer, Any}","page":"Transfer","title":"PowerSystems.set_ext!","text":"set_ext!(value::Transfer, val) -> Any\n\n\nSet Transfer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.set_requirement!-Tuple{Transfer, Any}","page":"Transfer","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::Transfer, val) -> Any\n\n\nSet Transfer requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transfer/#PowerSystems.set_time_series_container!-Tuple{Transfer, Any}","page":"Transfer","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::Transfer, val) -> Any\n\n\nSet Transfer time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_developer_guide/adding_additional_fields/#Adding-additional-fields","page":"Adding Additional Fields","title":"Adding additional fields","text":"","category":"section"},{"location":"model_developer_guide/adding_additional_fields/","page":"Adding Additional Fields","title":"Adding Additional Fields","text":"All components currently implemented in PowerSystems.jl have an ext field that contains an empty Dictionary. This empty dictionary can be accessed with the method get_ext. shows an example of adding additional data to the ThermalStandard structs for other modeling requirements.","category":"page"},{"location":"model_developer_guide/adding_additional_fields/","page":"Adding Additional Fields","title":"Adding Additional Fields","text":"This method is useful if there is no requirement to create new behaviours for components of a particular type but additional fields are required. A simple example is the addition of geographic information if needed.","category":"page"},{"location":"model_developer_guide/adding_additional_fields/","page":"Adding Additional Fields","title":"Adding Additional Fields","text":"using PowerSystems\nconst PSY = PowerSystems\n\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")\nsystem = System(joinpath(file_dir, \"case5_re.m\"))\n\nfor g in get_components(ThermalStandard, system)\n external_field = get_ext(g)\n external_field[\"my_data\"] = 1.0\nend\n\ngen_alta = get_component(ThermalStandard, system, \"Alta\")\n\nmy_data = get_ext(gen_alta)[\"my_data\"]","category":"page"},{"location":"model_library/generated_PowerLoad/#PowerLoad","page":"PowerLoad","title":"PowerLoad","text":"","category":"section"},{"location":"model_library/generated_PowerLoad/","page":"PowerLoad","title":"PowerLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/PowerLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_PowerLoad/#PowerSystems.PowerLoad","page":"PowerLoad","title":"PowerSystems.PowerLoad","text":"mutable struct PowerLoad <: StaticLoad\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n base_power::Float64\n max_active_power::Float64\n max_reactive_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData structure for a static power load.\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nmax_active_power::Float64\nmax_reactive_power::Float64\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_PowerLoad/#InfrastructureSystems.get_name-Tuple{PowerLoad}","page":"PowerLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::PowerLoad) -> String\n\n\nGet PowerLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#InfrastructureSystems.get_time_series_container-Tuple{PowerLoad}","page":"PowerLoad","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::PowerLoad\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet PowerLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_active_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_active_power","text":"get_active_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_available-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_available","text":"get_available(value::PowerLoad) -> Bool\n\n\nGet PowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_base_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_base_power","text":"get_base_power(value::PowerLoad) -> Float64\n\n\nGet PowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_bus-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_bus","text":"get_bus(value::PowerLoad) -> ACBus\n\n\nGet PowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_dynamic_injector-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::PowerLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet PowerLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_ext-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_ext","text":"get_ext(value::PowerLoad) -> Dict{String, Any}\n\n\nGet PowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_max_active_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_max_reactive_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_reactive_power-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::PowerLoad) -> Any\n\n\nGet PowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.get_services-Tuple{PowerLoad}","page":"PowerLoad","title":"PowerSystems.get_services","text":"get_services(value::PowerLoad) -> Vector{Service}\n\n\nGet PowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_active_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_available!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_available!","text":"set_available!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_base_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_bus!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_ext!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_max_active_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_max_active_power!","text":"set_max_active_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_max_reactive_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_max_reactive_power!","text":"set_max_reactive_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_reactive_power!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_services!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_services!","text":"set_services!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_PowerLoad/#PowerSystems.set_time_series_container!-Tuple{PowerLoad, Any}","page":"PowerLoad","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::PowerLoad, val) -> Any\n\n\nSet PowerLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoPartCost/#TwoPartCost","page":"TwoPartCost","title":"TwoPartCost","text":"","category":"section"},{"location":"model_library/generated_TwoPartCost/","page":"TwoPartCost","title":"TwoPartCost","text":"Modules = [PowerSystems]\nPages = [\"generated/TwoPartCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TwoPartCost/#PowerSystems.TwoPartCost","page":"TwoPartCost","title":"PowerSystems.TwoPartCost","text":"mutable struct TwoPartCost <: OperationalCost\n variable::VariableCost\n fixed::Float64\nend\n\nData Structure Operational Cost Data in two parts: fixed and variable cost.\n\nArguments\n\nvariable::VariableCost: variable cost\nfixed::Float64: fixed cost, validation range: (0, nothing), action if invalid: warn\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TwoPartCost/#PowerSystems.get_fixed-Tuple{TwoPartCost}","page":"TwoPartCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::TwoPartCost) -> Float64\n\n\nGet TwoPartCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoPartCost/#PowerSystems.get_variable-Tuple{TwoPartCost}","page":"TwoPartCost","title":"PowerSystems.get_variable","text":"get_variable(value::TwoPartCost) -> VariableCost\n\n\nGet TwoPartCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoPartCost/#PowerSystems.set_fixed!-Tuple{TwoPartCost, Any}","page":"TwoPartCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::TwoPartCost, val) -> Any\n\n\nSet TwoPartCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoPartCost/#PowerSystems.set_variable!-Tuple{TwoPartCost, Any}","page":"TwoPartCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::TwoPartCost, val) -> Any\n\n\nSet TwoPartCost variable.\n\n\n\n\n\n","category":"method"},{"location":"#PowerSystems.jl","page":"Welcome Page","title":"PowerSystems.jl","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"CurrentModule = PowerSystems","category":"page"},{"location":"#Overview","page":"Welcome Page","title":"Overview","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl is a Julia package that provides a rigorous data model using Julia structures to enable power systems modeling. PowerSystems.jl is agnostic to a specific mathematical model and can be used for many model categories.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl provides tools to prepare and process data useful for electric energy systems modeling. This package serves two purposes:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"It facilitates the development and open sharing of large data sets for Power Systems modeling\nIt provides a data model that imposes discipline on model specification, addressing the challenge of design and terminology choices when sharing code and data.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"The main features include:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Comprehensive and extensible library of data structures for electric systems modeling.\nLarge scale data set development tools based on common text based data formats (PSS/e .raw and .dyr, and MATPOWER) and configurable tabular data (e.g. CSV) parsing capabilities.\nOptimized container for component data and time series supporting serialization to portable file formats and configurable validation routines.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl documentation and code are organized according to the needs of different users depending on their skillset and requirements. In broad terms there are three categories:","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Modeler: Users that want to run a particular analysis or experiment and use PowerSystems.jl to develop data sets.\nModel Developer: Users that want to develop custom components and structs in order to exploit PowerSystems.jl features to produce custom data sets.\nCode Base Developers: Users that want to add new core functionalities or fix bugs in the core capabilities of PowerSystems.jl.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems.jl is an active project under development, and we welcome your feedback, suggestions, and bug reports.","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Note: PowerSystems.jl uses InfrastructureSystems.jl as a utility library. Several methods are re-exported from InfrastructureSystems.jl. For most users there is no need to import InfrastructureSystems.jl.","category":"page"},{"location":"#Installation","page":"Welcome Page","title":"Installation","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"The latest stable release of PowerSystems can be installed using the Julia package manager with","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"] add PowerSystems","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"For the current development version, \"checkout\" this package with","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"] add PowerSystems#main","category":"page"},{"location":"#Citing-PowerSystems.jl","page":"Welcome Page","title":"Citing PowerSystems.jl","text":"","category":"section"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"Paper describing PowerSystems.jl","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"@article{LARA2021100747,\ntitle = {PowerSystems.jl — A power system data management package for large scale modeling},\njournal = {SoftwareX},\nvolume = {15},\npages = {100747},\nyear = {2021},\nissn = {2352-7110},\ndoi = {https://doi.org/10.1016/j.softx.2021.100747},\nurl = {https://www.sciencedirect.com/science/article/pii/S2352711021000765},\nauthor = {José Daniel Lara and Clayton Barrows and Daniel Thom and Dheepak Krishnamurthy and Duncan Callaway},\nkeywords = {Power Systems, Julia, Energy},","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"","category":"page"},{"location":"","page":"Welcome Page","title":"Welcome Page","text":"PowerSystems has been developed as part of the Scalable Integrated Infrastructure Planning (SIIP) initiative at the U.S. Department of Energy's National Renewable Energy Laboratory (NREL).","category":"page"},{"location":"model_library/generated_BatteryEMS/#BatteryEMS","page":"BatteryEMS","title":"BatteryEMS","text":"","category":"section"},{"location":"model_library/generated_BatteryEMS/","page":"BatteryEMS","title":"BatteryEMS","text":"Modules = [PowerSystems]\nPages = [\"generated/BatteryEMS.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.BatteryEMS","page":"BatteryEMS","title":"PowerSystems.BatteryEMS","text":"mutable struct BatteryEMS <: Storage\n name::String\n available::Bool\n bus::ACBus\n prime_mover_type::PrimeMovers\n initial_energy::Float64\n state_of_charge_limits::MinMax\n rating::Float64\n active_power::Float64\n input_active_power_limits::MinMax\n output_active_power_limits::MinMax\n efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}\n reactive_power::Float64\n reactive_power_limits::Union{Nothing, MinMax}\n base_power::Float64\n operation_cost::StorageManagementCost\n storage_target::Float64\n cycle_limits::Int\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData structure for a battery compatible with energy management formulations.\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\ninitial_energy::Float64: State of Charge of the Battery p.u.-hr, validation range: (0, nothing), action if invalid: error\nstate_of_charge_limits::MinMax: Maximum and Minimum storage capacity in p.u.-hr, validation range: (0, nothing), action if invalid: error\nrating::Float64\nactive_power::Float64\ninput_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error\noutput_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error\nefficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}, validation range: (0, 1), action if invalid: warn\nreactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn\nreactive_power_limits::Union{Nothing, MinMax}\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\noperation_cost::StorageManagementCost\nstorage_target::Float64: Storage target at the end of simulation as ratio of storage capacity.\ncycle_limits::Int: Storage Maximum number of cycles per year\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_BatteryEMS/#InfrastructureSystems.get_name-Tuple{BatteryEMS}","page":"BatteryEMS","title":"InfrastructureSystems.get_name","text":"get_name(value::BatteryEMS) -> String\n\n\nGet BatteryEMS name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#InfrastructureSystems.get_time_series_container-Tuple{BatteryEMS}","page":"BatteryEMS","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::BatteryEMS\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet BatteryEMS time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_active_power-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_active_power","text":"get_active_power(value::BatteryEMS) -> Any\n\n\nGet BatteryEMS active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_available-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_available","text":"get_available(value::BatteryEMS) -> Bool\n\n\nGet BatteryEMS available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_base_power-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_base_power","text":"get_base_power(value::BatteryEMS) -> Float64\n\n\nGet BatteryEMS base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_bus-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_bus","text":"get_bus(value::BatteryEMS) -> ACBus\n\n\nGet BatteryEMS bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_cycle_limits-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_cycle_limits","text":"get_cycle_limits(value::BatteryEMS) -> Int64\n\n\nGet BatteryEMS cycle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_dynamic_injector-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::BatteryEMS\n) -> Union{Nothing, DynamicInjection}\n\n\nGet BatteryEMS dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_efficiency-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_efficiency","text":"get_efficiency(\n value::BatteryEMS\n) -> @NamedTuple{in::Float64, out::Float64}\n\n\nGet BatteryEMS efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_ext-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_ext","text":"get_ext(value::BatteryEMS) -> Dict{String, Any}\n\n\nGet BatteryEMS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_initial_energy-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_initial_energy","text":"get_initial_energy(value::BatteryEMS) -> Any\n\n\nGet BatteryEMS initial_energy.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_input_active_power_limits-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_input_active_power_limits","text":"get_input_active_power_limits(\n value::BatteryEMS\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet BatteryEMS input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_operation_cost-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::BatteryEMS\n) -> StorageManagementCost\n\n\nGet BatteryEMS operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_output_active_power_limits-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_output_active_power_limits","text":"get_output_active_power_limits(\n value::BatteryEMS\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet BatteryEMS output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_prime_mover_type-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::BatteryEMS) -> PrimeMovers\n\n\nGet BatteryEMS prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_rating-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_rating","text":"get_rating(value::BatteryEMS) -> Any\n\n\nGet BatteryEMS rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_reactive_power-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::BatteryEMS) -> Any\n\n\nGet BatteryEMS reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_reactive_power_limits-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::BatteryEMS\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet BatteryEMS reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_services-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_services","text":"get_services(value::BatteryEMS) -> Vector{Service}\n\n\nGet BatteryEMS services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_state_of_charge_limits-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_state_of_charge_limits","text":"get_state_of_charge_limits(\n value::BatteryEMS\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet BatteryEMS state_of_charge_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.get_storage_target-Tuple{BatteryEMS}","page":"BatteryEMS","title":"PowerSystems.get_storage_target","text":"get_storage_target(value::BatteryEMS) -> Float64\n\n\nGet BatteryEMS storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_active_power!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_available!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_available!","text":"set_available!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_base_power!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_bus!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_bus!","text":"set_bus!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_cycle_limits!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_cycle_limits!","text":"set_cycle_limits!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS cycle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_efficiency!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_efficiency!","text":"set_efficiency!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_ext!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_ext!","text":"set_ext!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_initial_energy!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_initial_energy!","text":"set_initial_energy!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS initial_energy.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_input_active_power_limits!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_input_active_power_limits!","text":"set_input_active_power_limits!(\n value::BatteryEMS,\n val\n) -> Any\n\n\nSet BatteryEMS input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_operation_cost!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_output_active_power_limits!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_output_active_power_limits!","text":"set_output_active_power_limits!(\n value::BatteryEMS,\n val\n) -> Any\n\n\nSet BatteryEMS output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_prime_mover_type!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_rating!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_rating!","text":"set_rating!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_reactive_power!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_reactive_power_limits!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_services!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_services!","text":"set_services!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_state_of_charge_limits!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_state_of_charge_limits!","text":"set_state_of_charge_limits!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS state_of_charge_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_storage_target!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_storage_target!","text":"set_storage_target!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_BatteryEMS/#PowerSystems.set_time_series_container!-Tuple{BatteryEMS, Any}","page":"BatteryEMS","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::BatteryEMS, val) -> Any\n\n\nSet BatteryEMS time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"modeler_guide/time_series/#ts_data","page":"Time Series Data","title":"Time Series Data","text":"","category":"section"},{"location":"modeler_guide/time_series/#Introduction","page":"Time Series Data","title":"Introduction","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The bulk of the data in many power system models is time series data, in order to organize the data the potential inherent complexity, PowerSystems.jl has a set of definitions to enable consistent modeling.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Resolution: The period of time between each discrete value in the data, all resolutions are represented using Dates.Period types. For instance, a Day-ahead market data set usually has a resolution of Hour(1), a Real-Time market data set usually has a resolution of Minute(5).\nStatic data: a single column of time series values for a component field (such as active power) where each time period is represented by a single value. This data commonly is obtained from historical information or the realization of a time-varying quantity.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"This category of Time Series data usually comes in the following format:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"DateTime Value\n2020-09-01T00:00:00 100.0\n2020-09-01T01:00:00 101.0\n2020-09-01T02:00:00 99.0","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Where a column (or several columns) represent the timestamp associated with the value and a column stores the values of interest.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Forecasts: Predicted values of a time-varying quantity that commonly features a look-ahead and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Forecast data usually comes in the following format:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"DateTime 0 1 2 3 4 5 6 7\n2020-09-01T00:00:00 100.0 101.0 101.3 90.0 98.0 87.0 88.0 67.0\n2020-09-01T01:00:00 101.0 101.3 99.0 98.0 88.9 88.3 67.1 89.4\n2020-09-01T02:00:00 99.0 67.0 89.0 99.9 100.0 101.0 112.0 101.3","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Where a column (or several columns) represent the time stamp associated with the initial time of the forecast, and the columns represent the forecasted values.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Interval: The period of time between forecasts initial times. In PowerSystems.jl all intervals are represented using Dates.Period types. For instance, in a Day-Ahead market simulation, the interval of the time series is usually Hour(24), in the example above, the interval is Hour(1).\nHorizon: Is the count of discrete forecasted values, all horizons in PowerSystems.jl are represented with Int. For instance, many Day-ahead markets will have a forecast with a horizon 24.\nForecast window: Represents the forecasted value starting at a particular initial time.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Currently PowerSystems.jl does not support Forecasts or SingleTimeSeries with dissimilar intervals or resolution.","category":"page"},{"location":"modeler_guide/time_series/#Types","page":"Time Series Data","title":"Types","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems.jl supports two categories of time series data depending on the process to obtain the data:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Static data: a single column of time series values for a component field (such as active power) where each time period is represented by a single value. This data commonly is obtained from historical information or the realization of a time-varying quantity.\nForecasts: Predicted values of a time-varying quantity that commonly features a look-ahead and can have multiple data values representing each time period. This data is used in simulation with receding horizons or data generated from forecasting algorithms.","category":"page"},{"location":"modeler_guide/time_series/#Static-Time-Series-Data","page":"Time Series Data","title":"Static Time Series Data","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems defines the Julia struct SingleTimeSeries to represent this data.","category":"page"},{"location":"modeler_guide/time_series/#Forecasts","page":"Time Series Data","title":"Forecasts","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems defines the following Julia structs to represent forecasts:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Deterministic: Point forecast without any uncertainty representation.\nProbabilistic: Stores a discretized cumulative distribution functions (CDFs) or probability distribution functions (PDFs) at each time step in the look-ahead window.\nScenarios: Stores a set of probable trajectories for forecasted quantity with equal probability.","category":"page"},{"location":"modeler_guide/time_series/#Storage","page":"Time Series Data","title":"Storage","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"By default PowerSystems stores time series data in an HDF5 file. This prevents large datasets from overwhelming system memory. If you know that your dataset will fit in your computer's memory then you can increase performance by storing it in memory. Here is an example of how to do this:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"sys = System(100.0; time_series_in_memory = true)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems stores the HDF5 file in the tmp filesystem by default. You can change this by passing time_series_directory = X when you create the System. This is required if the time series data is larger than the amount of tmp space available. You can also override the location by setting the environment variable SIIPTIMESERIES_DIRECTORY to another directory.","category":"page"},{"location":"modeler_guide/time_series/#Compression","page":"Time Series Data","title":"Compression","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems does not enable HDF5 compression by default. You can enable it to get significant storage savings at the cost of CPU time.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"# Take defaults.\nsys = System(100.0; enable_compression = true)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"# Customize.\nsettings = CompressionSettings(\n enabled = true,\n type = CompressionTypes.DEFLATE, # BLOSC is also supported\n level = 3,\n shuffle = true,\n)\nsys = System(100.0; compression = settings)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Refer to the HDF5.jl and HDF5 documentation for more details on the options.","category":"page"},{"location":"modeler_guide/time_series/#Creating-Time-Series-Data","page":"Time Series Data","title":"Creating Time Series Data","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems supports several methods to load time series data (Forecasts or StaticTimeSeries) into a System.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Automated parsing during system construction, this method loads the data from CSV files. Refer to the parsing documentation.\nCreate directly from data in TimeSeries.TimeArray or DataFrames.DataFrame.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Examples:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"When creating data for SingleTimeSeries the user can directly pass a TimeSeries.TimeArray to the constructor.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" resolution = Dates.Hour(1)\n dates = range(DateTime(\"2020-01-01T00:00:00\"), step = resolution, length = 24)\n data = TimeArray(dates, ones(24))\n time_series = SingleTimeSeries(\"max_active_power\", data)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"When creating time series data that represents forecasts, the data can be stored in any AbstractDict where the key is the initial time of the forecast and the value field is the forecast value. The value fields in the dictionary can be regular vectors or TimeSeries.TimeArray.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" resolution = Dates.Hour(1)\n data = Dict(\n DateTime(\"2020-01-01T00:00:00\") => 10.0*ones(24),\n DateTime(\"2020-01-01T01:00:00\") => 5.0*ones(24),\n )\n forecast = Deterministic(\"max_active_power\", data, resolution)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Load from CSV file. For Deterministic forecasts, each row represents one look-ahead window. The first column must be the initial time and the rest must be the forecast values. The CSV file must have no header in the first row.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" resolution = Dates.Hour(1)\n forecast = Deterministic(\"max_active_power\", csv_filename, component, resolution)","category":"page"},{"location":"modeler_guide/time_series/#Scaling-factors","page":"Time Series Data","title":"Scaling factors","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series data can store actual component values (for instance MW) or scaling factors intended to be multiplied by a scalar to generate the component values. By default PowerSystems treats the values in the time series data as physical units. In order to specify them as scaling factors, you must pass the accessor function that provides the multiplier value. This value must be passed into the forecast when you create it.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Example:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" resolution = Dates.Hour(1)\n data = Dict(\n DateTime(\"2020-01-01T00:00:00\") => ones(24),\n DateTime(\"2020-01-01T01:00:00\") => ones(24),\n )\n forecast = Deterministic(\n\t\"max_active_power\",\n\tdata,\n\tresolution,\n\tscaling_factor_multiplier = get_max_active_power,\n )","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"In this example, the forecasted component is a generator. Whenever the user retrieves the forecast data PowerSystems will call get_max_active_power(component) and multiply the result with the forecast values (scaling factors). For instance it the maximum active power returns the value 50.0 and the scaling factor at some time point is 0.65, the forecast value will correspond to 32.5.","category":"page"},{"location":"modeler_guide/time_series/#Adding-time-series-to-the-System","page":"Time Series Data","title":"Adding time series to the System","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Adding time series data to a system requires a component that is already attached to the system. Extending the example above:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" add_time_series!(sys, component, forecast)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"In order to optimize the storage of time series data, time series can be shared across devices to avoid duplication. If the same forecast applies to multiple components then can call add_time_series!, passing the collection of components that share the time series data.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" add_time_series!(sys, components, forecast)","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"This function stores a single copy of the data. Each component will store a reference to that data.","category":"page"},{"location":"modeler_guide/time_series/#Removing-time-series-data","page":"Time Series Data","title":"Removing time series data","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Time series instances can be removed from a system like this:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" remove_time_series!(Deterministic, sys, \"max_active_power\")","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Note: If you are storing time series data in an HDF5 file, this does not actually free up file space (HDF5 behavior). If you want to remove all or most time series instances then consider using clear_time_series!. It will delete the HDF5 file and create a new one. PowerSystems has plans to automate this type of workflow.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" clear_time_series!(sys)","category":"page"},{"location":"modeler_guide/time_series/#Retrieving-time-series-data","page":"Time Series Data","title":"Retrieving time series data","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems provides several methods to retrieve time series data. It is important that you choose the best one for your use case as there are performance implications. When an accessor function is used to create the forecast, the get_time_series_array methods will apply the associated multiplier and return a different value than is stored. If you want to explore the data as it's stored rather than as it's intended for modeling use, refer to the next section.","category":"page"},{"location":"modeler_guide/time_series/#Get-a-TimeArray-for-a-SingleTimeSeries","page":"Time Series Data","title":"Get a TimeArray for a SingleTimeSeries","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" ta = get_time_series_array(\n SingleTimeSeries,\n component,\n \"max_active_power\",\n start_time = DateTime(\"2020-01-01T00:00:00\"),\n len = 24,\n )","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Note: The default behavior is to read all data, so specify start_time and len if you only need a subset of data.","category":"page"},{"location":"modeler_guide/time_series/#Get-a-TimeArray-for-a-Deterministic-forecast","page":"Time Series Data","title":"Get a TimeArray for a Deterministic forecast","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"For forecasts, the interfaces assume that modeling code will access one forecast window at a time. Here's how to get one window:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" ta = get_time_series_array(\n Deterministic,\n component,\n \"max_active_power\",\n start_time = DateTime(\"2020-01-01T00:00:00\"),\n )","category":"page"},{"location":"modeler_guide/time_series/#Data-exploration","page":"Time Series Data","title":"Data exploration","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"If you want to explore the time series data as it is stored in a system then you will want to use the get_time_series function.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Warning: This will load all forecast windows into memory by default. Be aware of how much data is stored.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Note: Unlike the functions above this will only return the exact stored data. It will not apply a scaling factor multiplier.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" forecast = get_time_series(Deterministic, component, \"max_active_power\")","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"You can limit the data returned by specifying start_time and count.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" forecast = get_time_series(\n Deterministic,\n component,\n \"max_active_power\",\n start_time = DateTime(\"2020-01-09T00:00:00\"),\n count = 10,\n )","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Once you have a forecast instance you can access a specific window like this:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" window = get_window(forecast, DateTime(\"2020-01-09T00:00:00\"))","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"or iterate over the look-ahead windows like this:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" for window in iterate_windows(forecast)\n @show window\n end","category":"page"},{"location":"modeler_guide/time_series/#Using-forecast-data-in-simulations","page":"Time Series Data","title":"Using forecast data in simulations","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"The interfaces documented up to this point are useful for the development of scripts and models that use a small amount of forecasting data or do not require accessing time series data multiple times. It is important to understand the performance implications of accessing forecast windows repeatedly like in the case of production cost modeling simulations.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"If each forecast window contains an array of 24 floats and the windows cover an entire year then each retrieval will involve a small disk read. This can slow down a simulation significantly, especially if the underlying storage uses spinning disks.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems provides an alternate interface that pre-fetches data into the system memory with large reads in order to mitigate this potential problem. The mechanism creates a cache of data and makes it available to the user.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"It is highly recommended that you use this interface for modeling implementations. This is particularly relevant for models using large datasets.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" cache = ForecastCache(Deterministic, component, \"max_active_power\")\n window1 = get_next_time_series_array(cache)\n window2 = get_next_time_series_array(cache)\n\n # or\n\n for window in cache\n @show window\n end","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Each iteration on the cache object will deliver the next forecast window. get_next_time_series_array will return nothing when all windows have been delivered.","category":"page"},{"location":"modeler_guide/time_series/#Transform-static-time-series-into-forecasts","page":"Time Series Data","title":"Transform static time series into forecasts","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"A common workflow in developing models is transforming data generated from a realization and stored in a single column into deterministic forecasts to account for the effects of the look-ahead. Usually, this workflow leads to large data duplications in the overlapping windows between forecasts.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems provides a method to transform SingleTimeSeries data into Deterministic forecasts without duplicating any data. The resulting object behaves exactly like a Deterministic. Instead of storing windows at each initial time it provides a view into the existing data at incrementing offsets.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Here's an example:","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" # Create static time series data.\n resolution = Dates.Hour(1)\n dates = range(DateTime(\"2020-01-01T00:00:00\"), step = resolution, length = 8760)\n data = TimeArray(dates, ones(8760))\n ts = SingleTimeSeries(\"max_active_power\", data)\n add_time_series!(sys, component, ts)\n\n # Transform it to Deterministic\n transform_single_time_series!(sys, 24, Hour(24))","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"This function transforms all SingleTimeSeries instances stored in the system. You can also call it on a single component.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"You can now access either a Deterministic or the original SingleTimeSeries.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":" ta_forecast = get_time_series_array(\n Deterministic,\n component,\n \"max_active_power\",\n start_time = DateTime(\"2020-01-01T00:00:00\"),\n )\n ta_static = get_time_series_array(SingleTimeSeries, component, \"max_active_power\")","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Note: The actual type of the returned forecast will be DeterministicSingleTimeSeries. This type and Deterministic are subtypes of AbstractDeterministic and implement all of the same methods (i.e., they behave identically).","category":"page"},{"location":"modeler_guide/time_series/#Time-Series-Validation","page":"Time Series Data","title":"Time Series Validation","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"PowerSystems applies validation rules whenever users add time series to a System. It will throw an exception if any rule is violated.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"All time series data, static or forecasts, must have the same resolution.\nAll forecasts must have identical parameters: initial timestamp, horizon, interval, look-ahead window count.","category":"page"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Static time series instances may have different start times and lengths.","category":"page"},{"location":"modeler_guide/time_series/#Data-Format","page":"Time Series Data","title":"Data Format","text":"","category":"section"},{"location":"modeler_guide/time_series/","page":"Time Series Data","title":"Time Series Data","text":"Refer to this page for details on how the time series data is stored in HDF5 files.","category":"page"},{"location":"modeler_guide/parsing/#parsing","page":"Parsing Data","title":"Parsing Data","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems.jl supports the creation of a System from a variety of common data formats:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"MATPOWER (code copied with permission from PowerModels.jl)\nPSS/e RAW Files (code copied with permission from PowerModels.jl)\nPSS/e DYR Files\nPowerSystems table data (CSV Files)","category":"page"},{"location":"modeler_guide/parsing/#pm_data","page":"Parsing Data","title":"MATPOWER / PSS/e","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"The following code will create a System from a MATPOWER or PSS/e file:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"using PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")\nsys = System(joinpath(file_dir, \"case5.m\"))","category":"page"},{"location":"modeler_guide/parsing/#dyr_data","page":"Parsing Data","title":"PSS/e dynamic data parsing","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PSS/e's dynamic model library is extensive, we currently support parsing a limited amount of models out of the box.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Machine models AVR Models Prime Movers PSS models\nGENSAE IEEET1 HYGOV IEEEST\nGENSAL ESDC1A IEEEG1 \nGENROE ESAC1A GGOV1 \nGENCLS ESST4B \nGENROU EXAC2 \n EXPIC1 \n ESAC6A \n EXAC1 \n SCRX \n ESDC2A ","category":"page"},{"location":"modeler_guide/parsing/#Creating-a-Dynamic-System-using-.RAW-and-.DYR-data","page":"Parsing Data","title":"Creating a Dynamic System using .RAW and .DYR data","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"A PowerSystems.jl system can be created using a .RAW and a .DYR file. In this example we will create the following three bus system using the following RAW file:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev\n\n\n 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9\n 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9\n 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9\n0 / END OF BUS DATA, BEGIN LOAD DATA\n 101, 1, 1, 1, 1, 100, 20, 0, 0, 0, 0, 1, 1, 0\n 102, 1, 1, 1, 1, 70, 10, 0, 0, 0, 0, 1, 1, 0\n 103, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0\n0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA\n0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA\n 101, 1, 20, 0, 100, -100, 1.02, 0, 100, 0, 0, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n 102, 1, 100, 0, 100, -100, 1.0142, 0, 100, 0, 0.7, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n 103, 1, 100, 0, 100, -100, 1.0059, 0, 100, 0, 0.2, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n0 / END OF GENERATOR DATA, BEGIN BRANCH DATA\n 101, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n 101, 102, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n 102, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA\n0 / END OF TRANSFORMER DATA, BEGIN AREA DATA\n0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA\n0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA\n0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA\n0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA\n0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA\n0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA\n0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA\n0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA\n0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA\n0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA\n0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA\n0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA\n0 / END OF INDUCTION MACHINE DATA\nQ","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"This system is a three bus system with three generators, three loads and three branches. The dynamic data for the generators is provided in the DYR file:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":" 101 'GENROE' 1 8.000000 0.030000 0.400000 0.050000 6.500000 0.000000 1.800000\n 1.700000 0.300000 0.550000 0.250000 0.200000 0.039200 0.267200 /\n 101 'ESST1A' 1 1 1 0.01 99 -99 1 10 1 1 200 0 4 -4 4 -4 0 0 1 0 3 /\n 102 'GENCLS' 1 0.0 0.0 /\n 103 'GENCLS' 1 3.1 2.0 /","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"That assigns a GENROU generator and a ESST1A voltage regulator at the generator located at bus 101, while classic machine models for the generators located at bus 102 and 103.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"To create the system we can do it passing both files directories:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"RAW_dir = joinpath(file_dir, \"ThreeBusNetwork.raw\")\nDYR_dir = joinpath(file_dir, \"TestGENCLS.dyr\")\ndyn_system = System(RAW_dir, DYR_dir, runchecks = false)","category":"page"},{"location":"modeler_guide/parsing/#Common-Issues","page":"Parsing Data","title":"Common Issues","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Please note that while PSS/e does not enforce unique bus names, PowerSystems.jl does. To reparse bus names to comply with this requirement the bus_name_formatter *kwarg can be used in System() as shown in the example below:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"dyn_system = System(RAW_dir, DYR_dir; bus_name_formatter = x -> strip(string(x[\"name\"])) * \"-\" * string(x[\"index\"]))","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"In this example the anonymous function x -> strip(string(x[\"name\"])) * \"-\" * string(x[\"index\"]) takes the bus name and index from PSSe and concatenates them to produce the name. ","category":"page"},{"location":"modeler_guide/parsing/#table_data","page":"Parsing Data","title":"PowerSystems Table Data","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"This is a custom format that allows users to define power system component data by category and column with custom names, types, and units.","category":"page"},{"location":"modeler_guide/parsing/#Categories","page":"Parsing Data","title":"Categories","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Components for each category must be defined in their own CSV file. The following categories are currently supported:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"branch.csv\nbus.csv (required)\ncolumns specifying area and zone will create a corresponding set of Area and LoadZone objects.\ncolumns specifying max_active_power or max_reactive_power will create PowerLoad objects when nonzero values are encountered and will contribute to the peak_active_power and peak_reactive_power values for the\ncorresponding LoadZone object.\ndc_branch.csv\ngen.csv\nload.csv\nreserves.csv\nstorage.csv","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"These must reside in the directory passed when constructing PowerSystemTableData.","category":"page"},{"location":"modeler_guide/parsing/#parsing_time_series","page":"Parsing Data","title":"Adding Time Series Data","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems requires a metadata file that maps components to their time series data in order to be able to automatically construct time_series from raw data files. The following fields are required for each time array:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"simulation: User description of simulation\nresolution: Resolution of time series in seconds\nmodule: Module that defines the abstract type of the component\ncategory: Type of component. Must map to abstract types defined by the \"module\" entry (Bus, ElectricLoad, Generator, LoadZone, Reserve)\ncomponent_name: Name of component\nname: User-defined name for the time series data.\nnormalization_factor: Controls normalization of the data. Use 1.0 for pre-normalized data. Use 'Max' to divide the time series by the max value in the column. Use any float for a custom scaling factor.\nscaling_factor_multiplier_module: Module that defines the accessor function for the","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"scaling factor","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"scaling_factor_multiplier: Accessor function of the scaling factor\ndata_file: Path to the time series data file","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Notes:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"The \"module\", \"category\", and \"component_name\" entries must be valid arguments to retrieve","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"a component using get_component(${module}.${category}, sys, $name).","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"The \"scalingfactormultipliermodule\" and the \"scalingfactor_multiplier\" entries must","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"be sufficient to return the scaling factor data using ${scaling_factor_multiplier_module}.${scaling_factor_multiplier}(component).","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems supports this metadata in either CSV or JSON formats. Refer to RTS_GMLC for an example.","category":"page"},{"location":"modeler_guide/parsing/#Performance-considerations","page":"Parsing Data","title":"Performance considerations","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"By default PowerSystems stores time series data in HDF5 files. It does not keep all of the data in memory. This means that every time you access a timeseries PowerSystems will have to read the data from storage, which will add latency. If you know ahead of time that all of your data will fit in memory then you can change this behavior by passing `timeseriesinmemory = true` when you create the System.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"If the time series data is stored in HDF5 then PowerSystems will use the tmp filesystem by default. You can change this by passing time_series_directory = X when you create the System. This is required if the time series data is larger than the amount of tmp space available. You can also override the location by setting the environment variable SIIPTIMESERIES_DIRECTORY to another directory.","category":"page"},{"location":"modeler_guide/parsing/#Customization","page":"Parsing Data","title":"Customization","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"The tabular data parser in PowerSystems.jl can be customized to read a variety of datasets by configuring:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"which type of generator (<:Generator) to create based on the fuel and prime mover specifications\nproperty names, units, and per units conversions](@ref csvperunit) in *.csv files","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Here is an example of how to construct a System with all customizations listed in this section:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"data_dir = \"/data/my-data-dir\"\nbase_power = 100.0\ndescriptors = \"./user_descriptors.yaml\"\ntimeseries_metadata_file = \"./timeseries_pointers.json\"\ngenerator_mapping_file = \"./generator_mapping.yaml\"\ndata = PowerSystemTableData(\n data_dir,\n base_power,\n descriptors;\n timeseries_metadata_file = timeseries_metadata_file,\n generator_mapping_file = generator_mapping_file,\n)\nsys = System(data, time_series_in_memory = true)","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Examples configuration files can be found in the RTS-GMLC repo:","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"user_descriptors.yaml\ngenerator_mapping.yaml","category":"page"},{"location":"modeler_guide/parsing/#csv_data","page":"Parsing Data","title":"CSV Data Configurations","text":"","category":"section"},{"location":"modeler_guide/parsing/#csv_genmap","page":"Parsing Data","title":"Custom construction of generators","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems supports custom construction of subtypes of the abstract type Generator based on fuel and type. The parsing code detects these fields in the raw data and then constructs the concrete type listed in the passed generator mapping file. The default file is src/parsers/generator_mapping.yaml. You can override this behavior by specifying your own file when constructing PowerSystemTableData.","category":"page"},{"location":"modeler_guide/parsing/#csv_columns","page":"Parsing Data","title":"Column names","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems provides am input mapping capability that allows you to keep your own column names.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"For example, when parsing raw data for a generator the code expects a column called name. If the raw data instead defines that column as GEN UID then you can change the custom_name field under the generator category to GEN UID in your YAML file.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"To enable the parsing of a custom set of csv files, you can generate a configuration file (such as user_descriptors.yaml) from the defaults, which are stored in src/descriptors/power_system_inputs.json.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"python ./bin/generate_config_file.py ./user_descriptors.yaml","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Next, edit this file with your customizations.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"Note that the user-specific customizations are stored in YAML rather than JSON to allow for easier editing. The next few sections describe changes you can make to this YAML file. Do not edit the default JSON file.","category":"page"},{"location":"modeler_guide/parsing/#csv_per_unit","page":"Parsing Data","title":"Per-unit conversion","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"For more info on the per-unit conventions in PowerSystems.jl, refer to the per-unit section of the system documentation.","category":"page"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems defines whether it expects a column value to be per-unit system base, per-unit device base, or natural units in power_system_inputs.json. If it expects a per-unit convention that differs from your values then you can set the unit_system in user_descriptors.yaml and PowerSystems will automatically convert the values. For example, if you have a max_active_power value stored in natural units (MW), but power_system_inputs.json specifies unit_system: device_base, you can enter unit_system: natural_units in user_descriptors.yaml and PowerSystems will divide the value by the value of the corresponding entry in the column identified by the base_reference field in power_system_inputs.json. You can also override the base_reference setting by adding base_reference: My Column to make device base per-unit conversion by dividing the value by the entry in My Column. System base per-unit conversions always divide the value by the system base_power value instantiated when constructing a System.","category":"page"},{"location":"modeler_guide/parsing/#csv_units","page":"Parsing Data","title":"Unit conversion","text":"","category":"section"},{"location":"modeler_guide/parsing/","page":"Parsing Data","title":"Parsing Data","text":"PowerSystems provides a limited set of unit conversions. For example, if power_system_inputs.json indicates that a value's unit is degrees but your values are in radians then you can set unit: radian in your YAML file. Other valid unit entries include GW, GWh, MW, MWh, kW, and kWh.","category":"page"},{"location":"code_base_developer_guide/developer/#Guidelines-for-Developers","page":"Developer Guide","title":"Guidelines for Developers","text":"","category":"section"},{"location":"code_base_developer_guide/developer/","page":"Developer Guide","title":"Developer Guide","text":"In order to contribute to PowerSystems.jl repository please read the following sections of InfrastructureSystems.jl documentation in detail:","category":"page"},{"location":"code_base_developer_guide/developer/","page":"Developer Guide","title":"Developer Guide","text":"Style Guide\nContributing Guidelines","category":"page"},{"location":"code_base_developer_guide/developer/","page":"Developer Guide","title":"Developer Guide","text":"Pull requests are always welcome to fix bugs or add additional modeling capabilities.","category":"page"},{"location":"code_base_developer_guide/developer/","page":"Developer Guide","title":"Developer Guide","text":"All the code contributions need to include tests with a minimum coverage of 70%","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Creating-a-custom-Component","page":"Adding Types","title":"Creating a custom Component","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/#Type-Hierarchy","page":"Adding Types","title":"Type Hierarchy","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"All structs that correlate to power system components must be subtypes of the Component abstract type. Browse its type hierachy to choose an appropriate supertype for your new struct.","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Interfaces","page":"Adding Types","title":"Interfaces","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Refer to the managing components guide for component requirements.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Note: get_internal, get_name, and get_time_series_container are imported into PowerSystems, so you should implement your methods as PowerSystems methods.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Some abstract types define required interface functions in docstring. Be sure to implement each of them for your new type.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Formalized documentation for each abstract type is TBD.","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Specialize-an-Existing-Type","page":"Adding Types","title":"Specialize an Existing Type","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"There are scenarios where you may want to make a new type that is identical to an existing type except for one attribute or behavior, and don't want to duplicate the entire existing type and methods. In programming languages that support inheritance you would derive a new class from the existing class and automatically inherit its fields and methods. Julia doesn't support that. However, you can achieve a similar result with a forwarding macro. The basic idea is that you include the existing type within your struct and then use a macro to automatically forward specific methods to that instance.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"A few PowerSystems structs use the macro InfrastructureSystems.@forward to do this. Refer to the struct RoundRotorQuadratic for an example of how to use this.","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Custom-Rules","page":"Adding Types","title":"Custom Rules","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Some types require special checks before they can be added to or removed from a system. One example is the case where a component includes another component that is also stored in the system. We must ensure that the parent component does not contain a reference to another component that is not already attached to the system.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Similarly, if the child object is removed from the system we must also remove the parent's reference to that child.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"The source file src/base.jl provides functions that you can implement for your new type to manage these scenarios.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"check_component_addition(sys::System, component::Component; kwargs...)\nhandle_component_addition!(sys::System, component::Component; kwargs...)\ncheck_component_removal(sys::System, component::Component; kwargs...)\nhandle_component_removal!(sys::System, component::Component; kwargs...)","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"The functions add_component!() and remove_component!() call the check function before performing actions and then call the handle function afterwards. The default behavior of these functions is to do nothing. Implement versions that take your type in order to add your own checks or perform additional actions.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Beware of the condition where a custom method is already implemented for a supertype of your type.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Note that you can call the helper functions is_attached(component, system) and throw_if_not_attached(component, system).","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Custom-Validation","page":"Adding Types","title":"Custom Validation","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"You can implement three methods to perform custom validation or correction for your type. PowerSystems calls all of these functions in add_component!.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"sanitize_component!(component::Component, sys::System): intended to make standard data corrections (e.g. voltage angle in degrees -> radians)\nvalidate_component(component::Component): intended to check component field values for internal consistency\nvalidate_component_with_system(component::Component, sys::System): intended to check component field values for consistency with system","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Struct-Requirements-for-Serialization-of-custom-components","page":"Adding Types","title":"Struct Requirements for Serialization of custom components","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"One key feature of PowerSystems.jl is the serialization capabilities. Supporting serialization and de-serialization of custom components requires the implementation of several methods. The serialization code converts structs to dictionaries where the struct fields become dictionary keys.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"The code imposes these requirements:","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"The InfrastructureSystems methods serialize and deserialize must be implemented for the struct. InfrastructureSystems implements a method that covers all subtypes of InfrastructureSystemsType. All PowerSystems components should be subtypes of PowerSystems.Component which is a subtype InfrastructureSystemsType, so any new structs should be covered as well.\nAll struct fields must be able to be encoded in JSON format or be covered be covered by serialize and deserialize methods. Basic types, such as numbers and strings or arrays and dictionaries of numbers and strings, should just work. Complex containers with symbols may not.\nStructs relying on the default deserialize method must have a kwarg-only constructor. The deserialization code constructs objects by splatting the dictionary key/value pairs into the constructor.\nStructs that contain other PowerSystem components (like a generator contains a bus) must serialize those components as UUIDs instead of actual values. The deserialization code uses the UUIDs as a mechanism to restore a reference to the actual object rather a new object with identical values. It also significantly reduces the size of the JSON file.","category":"page"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"Refer to InfrastructureSystems.serialize_struct for example behavior. New structs that are not subtypes of InfrastructureSystemsType may be able to call it directly.","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Adding-PowerSystems.jl-as-a-dependency-in-a-modeling-package","page":"Adding Types","title":"Adding PowerSystems.jl as a dependency in a modeling package","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"module MyModelingModule\n\nimport PowerSystems\nimport InfrastructureSystems\nconst PSY = PowerSystems\nconst IS = InfrastructureSystems\n\nexport MyDevice\nexport get_name\n\nmutable struct MyDevice <: PSY.Device\n name::String\n internal::IS.InfrastructureSystemsInternal\nend\n\nfunction MyDevice(name::String)\n return MyDevice(name, IS.InfrastructureSystemsInternal())\nend\n\nPSY.get_name(val::MyDevice) = val.name\n\nend","category":"page"},{"location":"model_developer_guide/adding_custom_types/#Auto-Generating-Custom-Structs","page":"Adding Types","title":"Auto-Generating Custom Structs","text":"","category":"section"},{"location":"model_developer_guide/adding_custom_types/","page":"Adding Types","title":"Adding Types","text":"It is possible to use an advanced future to auto-generate structs in Julia source code files. It is not mandatory to use these tools, but it can be useful if you need to generate multiple custom structs for your model. Please refer to the docstrings for the functions generate_struct and generate_structs. Full details are in the InfrastructureSystems documentation at https://nrel-sienna.github.io/InfrastructureSystems.jl/stable/devguide/autogeneration/","category":"page"},{"location":"model_library/generated_TapTransformer/#TapTransformer","page":"TapTransformer","title":"TapTransformer","text":"","category":"section"},{"location":"model_library/generated_TapTransformer/","page":"TapTransformer","title":"TapTransformer","text":"Modules = [PowerSystems]\nPages = [\"generated/TapTransformer.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TapTransformer/#PowerSystems.TapTransformer","page":"TapTransformer","title":"PowerSystems.TapTransformer","text":"mutable struct TapTransformer <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n primary_shunt::Float64\n tap::Float64\n rate::Union{Nothing, Float64}\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\nreactive_power_flow::Float64\narc::Arc\nr::Float64: System per-unit value, validation range: (-2, 2), action if invalid: warn\nx::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn\nprimary_shunt::Float64: System per-unit value, validation range: (0, 2), action if invalid: warn\ntap::Float64, validation range: (0, 2), action if invalid: error\nrate::Union{Nothing, Float64}, validation range: (0, nothing), action if invalid: error\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TapTransformer/#InfrastructureSystems.get_name-Tuple{TapTransformer}","page":"TapTransformer","title":"InfrastructureSystems.get_name","text":"get_name(value::TapTransformer) -> String\n\n\nGet TapTransformer name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#InfrastructureSystems.get_time_series_container-Tuple{TapTransformer}","page":"TapTransformer","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::TapTransformer\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet TapTransformer time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_active_power_flow-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TapTransformer) -> Any\n\n\nGet TapTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_arc-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_arc","text":"get_arc(value::TapTransformer) -> Arc\n\n\nGet TapTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_available-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_available","text":"get_available(value::TapTransformer) -> Bool\n\n\nGet TapTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_ext-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_ext","text":"get_ext(value::TapTransformer) -> Dict{String, Any}\n\n\nGet TapTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_primary_shunt-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_primary_shunt","text":"get_primary_shunt(value::TapTransformer) -> Float64\n\n\nGet TapTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_r-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_r","text":"get_r(value::TapTransformer) -> Float64\n\n\nGet TapTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_rate-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_rate","text":"get_rate(value::TapTransformer) -> Any\n\n\nGet TapTransformer rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_reactive_power_flow-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::TapTransformer) -> Any\n\n\nGet TapTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_services-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_services","text":"get_services(value::TapTransformer) -> Vector{Service}\n\n\nGet TapTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_tap-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_tap","text":"get_tap(value::TapTransformer) -> Float64\n\n\nGet TapTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.get_x-Tuple{TapTransformer}","page":"TapTransformer","title":"PowerSystems.get_x","text":"get_x(value::TapTransformer) -> Float64\n\n\nGet TapTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_active_power_flow!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_arc!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_arc!","text":"set_arc!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_available!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_available!","text":"set_available!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_ext!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_ext!","text":"set_ext!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_primary_shunt!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_primary_shunt!","text":"set_primary_shunt!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_r!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_r!","text":"set_r!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_rate!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_rate!","text":"set_rate!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_reactive_power_flow!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_services!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_services!","text":"set_services!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_tap!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_tap!","text":"set_tap!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer tap.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_time_series_container!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::TapTransformer,\n val\n) -> Any\n\n\nSet TapTransformer time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TapTransformer/#PowerSystems.set_x!-Tuple{TapTransformer, Any}","page":"TapTransformer","title":"PowerSystems.set_x!","text":"set_x!(value::TapTransformer, val) -> Any\n\n\nSet TapTransformer x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#HydroPumpedStorage","page":"HydroPumpedStorage","title":"HydroPumpedStorage","text":"","category":"section"},{"location":"model_library/generated_HydroPumpedStorage/","page":"HydroPumpedStorage","title":"HydroPumpedStorage","text":"Modules = [PowerSystems]\nPages = [\"generated/HydroPumpedStorage.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.HydroPumpedStorage","page":"HydroPumpedStorage","title":"PowerSystems.HydroPumpedStorage","text":"mutable struct HydroPumpedStorage <: HydroGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n base_power::Float64\n prime_mover_type::PrimeMovers\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n time_limits::Union{Nothing, UpDown}\n rating_pump::Float64\n active_power_limits_pump::MinMax\n reactive_power_limits_pump::Union{Nothing, MinMax}\n ramp_limits_pump::Union{Nothing, UpDown}\n time_limits_pump::Union{Nothing, UpDown}\n storage_capacity::UpDown\n inflow::Float64\n outflow::Float64\n initial_storage::UpDown\n storage_target::UpDown\n operation_cost::OperationalCost\n pump_efficiency::Float64\n conversion_factor::Float64\n time_at_status::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\nactive_power_limits::MinMax, validation range: (0, nothing), action if invalid: warn\nreactive_power_limits::Union{Nothing, MinMax}, action if invalid: warn\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error\nrating_pump::Float64: Thermal limited MVA Power Withdrawl of the pump. <= Capacity, validation range: (0, nothing), action if invalid: error\nactive_power_limits_pump::MinMax\nreactive_power_limits_pump::Union{Nothing, MinMax}, action if invalid: warn\nramp_limits_pump::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute of pump, validation range: (0, nothing), action if invalid: error\ntime_limits_pump::Union{Nothing, UpDown}: Minimum up and Minimum down time limits of pump in hours, validation range: (0, nothing), action if invalid: error\nstorage_capacity::UpDown: Maximum storage capacity in the upper and lower reservoirs (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error\ninflow::Float64: Baseline inflow into the upper reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing), action if invalid: error\noutflow::Float64: Baseline outflow from the lower reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing), action if invalid: error\ninitial_storage::UpDown: Initial storage capacity in the upper and lower reservoir (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error\nstorage_target::UpDown: Storage target of upper reservoir at the end of simulation as ratio of storage capacity.\noperation_cost::OperationalCost: Operation Cost of Generation OperationalCost\npump_efficiency::Float64: Efficiency of pump, validation range: (0, 1), action if invalid: warn\nconversion_factor::Float64: Conversion factor from flow/volume to energy: m^3 -> p.u-hr.\ntime_at_status::Float64\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_HydroPumpedStorage/#InfrastructureSystems.get_name-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"InfrastructureSystems.get_name","text":"get_name(value::HydroPumpedStorage) -> String\n\n\nGet HydroPumpedStorage name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#InfrastructureSystems.get_time_series_container-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::HydroPumpedStorage\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet HydroPumpedStorage time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_active_power-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_active_power","text":"get_active_power(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_active_power_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::HydroPumpedStorage\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_active_power_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_active_power_limits_pump","text":"get_active_power_limits_pump(\n value::HydroPumpedStorage\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage active_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_available-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_available","text":"get_available(value::HydroPumpedStorage) -> Bool\n\n\nGet HydroPumpedStorage available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_base_power-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_base_power","text":"get_base_power(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_bus-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_bus","text":"get_bus(value::HydroPumpedStorage) -> ACBus\n\n\nGet HydroPumpedStorage bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_conversion_factor-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_conversion_factor","text":"get_conversion_factor(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_dynamic_injector-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HydroPumpedStorage\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HydroPumpedStorage dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_ext-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_ext","text":"get_ext(value::HydroPumpedStorage) -> Dict{String, Any}\n\n\nGet HydroPumpedStorage ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_inflow-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_inflow","text":"get_inflow(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_initial_storage-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_initial_storage","text":"get_initial_storage(\n value::HydroPumpedStorage\n) -> NamedTuple{(:up, :down), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_operation_cost-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::HydroPumpedStorage\n) -> PowerSystems.OperationalCost\n\n\nGet HydroPumpedStorage operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_outflow-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_outflow","text":"get_outflow(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage outflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_prime_mover_type-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::HydroPumpedStorage\n) -> PrimeMovers\n\n\nGet HydroPumpedStorage prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_pump_efficiency-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_pump_efficiency","text":"get_pump_efficiency(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage pump_efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_ramp_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_ramp_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_ramp_limits_pump","text":"get_ramp_limits_pump(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage ramp_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_rating-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_rating","text":"get_rating(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_rating_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_rating_pump","text":"get_rating_pump(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage rating_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_reactive_power-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HydroPumpedStorage) -> Any\n\n\nGet HydroPumpedStorage reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_reactive_power_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_reactive_power_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_reactive_power_limits_pump","text":"get_reactive_power_limits_pump(\n value::HydroPumpedStorage\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroPumpedStorage reactive_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_services-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_services","text":"get_services(value::HydroPumpedStorage) -> Vector{Service}\n\n\nGet HydroPumpedStorage services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_storage_capacity-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_storage_capacity","text":"get_storage_capacity(\n value::HydroPumpedStorage\n) -> NamedTuple{(:up, :down), <:Tuple{Any, Any}}\n\n\nGet HydroPumpedStorage storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_storage_target-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_storage_target","text":"get_storage_target(\n value::HydroPumpedStorage\n) -> @NamedTuple{up::Float64, down::Float64}\n\n\nGet HydroPumpedStorage storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_time_at_status-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::HydroPumpedStorage) -> Float64\n\n\nGet HydroPumpedStorage time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_time_limits-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::HydroPumpedStorage\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroPumpedStorage time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.get_time_limits_pump-Tuple{HydroPumpedStorage}","page":"HydroPumpedStorage","title":"PowerSystems.get_time_limits_pump","text":"get_time_limits_pump(\n value::HydroPumpedStorage\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroPumpedStorage time_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_active_power!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_active_power_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_active_power_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_active_power_limits_pump!","text":"set_active_power_limits_pump!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage active_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_available!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_available!","text":"set_available!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_base_power!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_bus!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_bus!","text":"set_bus!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_conversion_factor!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_conversion_factor!","text":"set_conversion_factor!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_ext!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_inflow!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_inflow!","text":"set_inflow!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_initial_storage!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_initial_storage!","text":"set_initial_storage!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_operation_cost!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_outflow!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_outflow!","text":"set_outflow!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage outflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_prime_mover_type!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_pump_efficiency!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_pump_efficiency!","text":"set_pump_efficiency!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage pump_efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_ramp_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_ramp_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_ramp_limits_pump!","text":"set_ramp_limits_pump!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage ramp_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_rating!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_rating!","text":"set_rating!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_rating_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_rating_pump!","text":"set_rating_pump!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage rating_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_reactive_power!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_reactive_power_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_reactive_power_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_reactive_power_limits_pump!","text":"set_reactive_power_limits_pump!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage reactive_power_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_services!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_services!","text":"set_services!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_storage_capacity!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_storage_capacity!","text":"set_storage_capacity!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_storage_target!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_storage_target!","text":"set_storage_target!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_at_status!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_limits!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_limits_pump!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_limits_pump!","text":"set_time_limits_pump!(value::HydroPumpedStorage, val) -> Any\n\n\nSet HydroPumpedStorage time_limits_pump.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroPumpedStorage/#PowerSystems.set_time_series_container!-Tuple{HydroPumpedStorage, Any}","page":"HydroPumpedStorage","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::HydroPumpedStorage,\n val\n) -> Any\n\n\nSet HydroPumpedStorage time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#StorageManagementCost","page":"StorageManagementCost","title":"StorageManagementCost","text":"","category":"section"},{"location":"model_library/generated_StorageManagementCost/","page":"StorageManagementCost","title":"StorageManagementCost","text":"Modules = [PowerSystems]\nPages = [\"generated/StorageManagementCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.StorageManagementCost","page":"StorageManagementCost","title":"PowerSystems.StorageManagementCost","text":"mutable struct StorageManagementCost <: OperationalCost\n variable::VariableCost\n fixed::Float64\n start_up::Float64\n shut_down::Float64\n energy_shortage_cost::Float64\n energy_surplus_cost::Float64\nend\n\nData Structure for Operational Cost Data like variable cost and start - stop costs and energy storage cost.\n\nArguments\n\nvariable::VariableCost: variable cost\nfixed::Float64: fixed cost\nstart_up::Float64: start-up cost, validation range: (0, nothing), action if invalid: warn\nshut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn\nenergy_shortage_cost::Float64: Cost incurred by the model for being short of the energy target., validation range: (0, nothing), action if invalid: warn\nenergy_surplus_cost::Float64: Cost incurred by the model for surplus energy stored., validation range: (0, nothing), action if invalid: warn\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.get_energy_shortage_cost-Tuple{StorageManagementCost}","page":"StorageManagementCost","title":"PowerSystems.get_energy_shortage_cost","text":"get_energy_shortage_cost(\n value::StorageManagementCost\n) -> Float64\n\n\nGet StorageManagementCost energy_shortage_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.get_energy_surplus_cost-Tuple{StorageManagementCost}","page":"StorageManagementCost","title":"PowerSystems.get_energy_surplus_cost","text":"get_energy_surplus_cost(\n value::StorageManagementCost\n) -> Float64\n\n\nGet StorageManagementCost energy_surplus_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.get_fixed-Tuple{StorageManagementCost}","page":"StorageManagementCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::StorageManagementCost) -> Float64\n\n\nGet StorageManagementCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.get_shut_down-Tuple{StorageManagementCost}","page":"StorageManagementCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::StorageManagementCost) -> Float64\n\n\nGet StorageManagementCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.get_start_up-Tuple{StorageManagementCost}","page":"StorageManagementCost","title":"PowerSystems.get_start_up","text":"get_start_up(value::StorageManagementCost) -> Float64\n\n\nGet StorageManagementCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.get_variable-Tuple{StorageManagementCost}","page":"StorageManagementCost","title":"PowerSystems.get_variable","text":"get_variable(value::StorageManagementCost) -> VariableCost\n\n\nGet StorageManagementCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.set_energy_shortage_cost!-Tuple{StorageManagementCost, Any}","page":"StorageManagementCost","title":"PowerSystems.set_energy_shortage_cost!","text":"set_energy_shortage_cost!(\n value::StorageManagementCost,\n val\n) -> Any\n\n\nSet StorageManagementCost energy_shortage_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.set_energy_surplus_cost!-Tuple{StorageManagementCost, Any}","page":"StorageManagementCost","title":"PowerSystems.set_energy_surplus_cost!","text":"set_energy_surplus_cost!(\n value::StorageManagementCost,\n val\n) -> Any\n\n\nSet StorageManagementCost energy_surplus_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.set_fixed!-Tuple{StorageManagementCost, Any}","page":"StorageManagementCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::StorageManagementCost, val) -> Any\n\n\nSet StorageManagementCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.set_shut_down!-Tuple{StorageManagementCost, Any}","page":"StorageManagementCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::StorageManagementCost, val) -> Any\n\n\nSet StorageManagementCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.set_start_up!-Tuple{StorageManagementCost, Any}","page":"StorageManagementCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(value::StorageManagementCost, val) -> Any\n\n\nSet StorageManagementCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_StorageManagementCost/#PowerSystems.set_variable!-Tuple{StorageManagementCost, Any}","page":"StorageManagementCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::StorageManagementCost, val) -> Any\n\n\nSet StorageManagementCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#ACBus","page":"ACBus","title":"ACBus","text":"","category":"section"},{"location":"model_library/generated_ACBus/","page":"ACBus","title":"ACBus","text":"Modules = [PowerSystems]\nPages = [\"generated/ACBus.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ACBus/#PowerSystems.ACBus","page":"ACBus","title":"PowerSystems.ACBus","text":"mutable struct ACBus <: Bus\n number::Int\n name::String\n bustype::Union{Nothing, ACBusTypes}\n angle::Union{Nothing, Float64}\n magnitude::Union{Nothing, Float64}\n voltage_limits::Union{Nothing, MinMax}\n base_voltage::Union{Nothing, Float64}\n area::Union{Nothing, Area}\n load_zone::Union{Nothing, LoadZone}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA power-system bus.\n\nArguments\n\nnumber::Int: number associated with the bus\nname::String: the name of the bus\nbustype::Union{Nothing, ACBusTypes}: bus type\nangle::Union{Nothing, Float64}: angle of the bus in radians, validation range: (-1.571, 1.571), action if invalid: error\nmagnitude::Union{Nothing, Float64}: voltage as a multiple of basevoltage, validation range: voltage_limits, action if invalid: warn\nvoltage_limits::Union{Nothing, MinMax}: limits on the voltage variation as multiples of basevoltage\nbase_voltage::Union{Nothing, Float64}: the base voltage in kV, validation range: (0, nothing), action if invalid: error\narea::Union{Nothing, Area}: the area containing the bus\nload_zone::Union{Nothing, LoadZone}: the load zone containing the bus\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ACBus/#InfrastructureSystems.get_name-Tuple{ACBus}","page":"ACBus","title":"InfrastructureSystems.get_name","text":"get_name(value::ACBus) -> String\n\n\nGet ACBus name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_angle-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_angle","text":"get_angle(value::ACBus) -> Union{Nothing, Float64}\n\n\nGet ACBus angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_area-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_area","text":"get_area(value::ACBus) -> Union{Nothing, Area}\n\n\nGet ACBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_base_voltage-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_base_voltage","text":"get_base_voltage(value::ACBus) -> Union{Nothing, Float64}\n\n\nGet ACBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_bustype-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_bustype","text":"get_bustype(value::ACBus) -> Union{Nothing, ACBusTypes}\n\n\nGet ACBus bustype.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_ext-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_ext","text":"get_ext(value::ACBus) -> Dict{String, Any}\n\n\nGet ACBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_load_zone-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_load_zone","text":"get_load_zone(value::ACBus) -> Union{Nothing, LoadZone}\n\n\nGet ACBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_magnitude-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_magnitude","text":"get_magnitude(value::ACBus) -> Union{Nothing, Float64}\n\n\nGet ACBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_number-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_number","text":"get_number(value::ACBus) -> Int64\n\n\nGet ACBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.get_voltage_limits-Tuple{ACBus}","page":"ACBus","title":"PowerSystems.get_voltage_limits","text":"get_voltage_limits(\n value::ACBus\n) -> Union{Nothing, @NamedTuple{min::Float64, max::Float64}}\n\n\nGet ACBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_angle!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_angle!","text":"set_angle!(value::ACBus, val) -> Any\n\n\nSet ACBus angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_area!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_area!","text":"set_area!(value::ACBus, val) -> Area\n\n\nSet ACBus area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_base_voltage!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_base_voltage!","text":"set_base_voltage!(value::ACBus, val) -> Any\n\n\nSet ACBus base_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_bustype!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_bustype!","text":"set_bustype!(value::ACBus, val) -> Any\n\n\nSet ACBus bustype.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_ext!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_ext!","text":"set_ext!(value::ACBus, val) -> Any\n\n\nSet ACBus ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_load_zone!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_load_zone!","text":"set_load_zone!(value::ACBus, val) -> LoadZone\n\n\nSet ACBus load_zone.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_magnitude!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_magnitude!","text":"set_magnitude!(value::ACBus, val) -> Any\n\n\nSet ACBus magnitude.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_number!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_number!","text":"set_number!(value::ACBus, val) -> Any\n\n\nSet ACBus number.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ACBus/#PowerSystems.set_voltage_limits!-Tuple{ACBus, Any}","page":"ACBus","title":"PowerSystems.set_voltage_limits!","text":"set_voltage_limits!(value::ACBus, val) -> Any\n\n\nSet ACBus voltage_limits.\n\n\n\n\n\n","category":"method"},{"location":"code_base_developer_guide/adding_new_types/#Adding-PowerSystems-Types","page":"Adding New Types","title":"Adding PowerSystems Types","text":"","category":"section"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"This page describes how developers should add types to PowerSystems.jl Refer to the managing components guide first.","category":"page"},{"location":"code_base_developer_guide/adding_new_types/#autogen","page":"Adding New Types","title":"Auto-generating Structs","text":"","category":"section"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"Most PowerSystems.jl structs are auto-generated from the JSON descriptor file src/descriptors/power_system_structs.json. You can add your new struct here or write it manually when contributing code to the repository","category":"page"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"If all you need is the basic struct definition and getter/setter functions then you will likely find the auto-generation helpful.","category":"page"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"If you will need to write specialized functions for the type then you will probably want to write it manually.","category":"page"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"Refer to this link for more information.","category":"page"},{"location":"code_base_developer_guide/adding_new_types/#Testing-the-addition-of-new-struct-to-the-code-base","page":"Adding New Types","title":"Testing the addition of new struct to the code base","text":"","category":"section"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"In order to merge new structs to the code base, your struct needs to pass several tests.","category":"page"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"addition to System\nretrieval from System\nserialization/de-serialization","category":"page"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"The following code block is an example of the code that the new struct needs to pass","category":"page"},{"location":"code_base_developer_guide/adding_new_types/","page":"Adding New Types","title":"Adding New Types","text":"using PowerSystems\n\nsys = System(100.0)\ndevice = NewType(data)\n\n# add your component to the system\nadd_component!(sys, device)\nretrived_device = get_component(NewType, sys, \"component_name\")\n\n# Serialize\nto_json(sys, \"sys.json\")\n\n# Re-create the system and find your component.\nsys2 = System(\"sys.json\")\nserialized_device = get_component(NewType, sys, \"component_name\")\n\n@test get_name(retrieved_device) == get_name(serialized_device)","category":"page"},{"location":"model_library/generated_MonitoredLine/#MonitoredLine","page":"MonitoredLine","title":"MonitoredLine","text":"","category":"section"},{"location":"model_library/generated_MonitoredLine/","page":"MonitoredLine","title":"MonitoredLine","text":"Modules = [PowerSystems]\nPages = [\"generated/MonitoredLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.MonitoredLine","page":"MonitoredLine","title":"PowerSystems.MonitoredLine","text":"mutable struct MonitoredLine <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n b::FromTo\n flow_limits::FromTo_ToFrom\n rate::Float64\n angle_limits::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\nreactive_power_flow::Float64\narc::Arc\nr::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn\nx::Float64: System per-unit value, validation range: (0, 4), action if invalid: warn\nb::FromTo: System per-unit value, validation range: (0, 2), action if invalid: warn\nflow_limits::FromTo_ToFrom: throw warning above max SIL\nrate::Float64: compare to SIL (warn) (theoretical limit)\nangle_limits::MinMax, validation range: (-1.571, 1.571), action if invalid: error\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_MonitoredLine/#InfrastructureSystems.get_name-Tuple{MonitoredLine}","page":"MonitoredLine","title":"InfrastructureSystems.get_name","text":"get_name(value::MonitoredLine) -> String\n\n\nGet MonitoredLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#InfrastructureSystems.get_time_series_container-Tuple{MonitoredLine}","page":"MonitoredLine","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::MonitoredLine\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet MonitoredLine time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_active_power_flow-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::MonitoredLine) -> Any\n\n\nGet MonitoredLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_angle_limits-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_angle_limits","text":"get_angle_limits(\n value::MonitoredLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet MonitoredLine angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_arc-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_arc","text":"get_arc(value::MonitoredLine) -> Arc\n\n\nGet MonitoredLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_available-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_available","text":"get_available(value::MonitoredLine) -> Bool\n\n\nGet MonitoredLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_b-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_b","text":"get_b(\n value::MonitoredLine\n) -> @NamedTuple{from::Float64, to::Float64}\n\n\nGet MonitoredLine b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_ext-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_ext","text":"get_ext(value::MonitoredLine) -> Dict{String, Any}\n\n\nGet MonitoredLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_flow_limits-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_flow_limits","text":"get_flow_limits(\n value::MonitoredLine\n) -> NamedTuple{(:from_to, :to_from), <:Tuple{Any, Any}}\n\n\nGet MonitoredLine flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_r-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_r","text":"get_r(value::MonitoredLine) -> Float64\n\n\nGet MonitoredLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_rate-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_rate","text":"get_rate(value::MonitoredLine) -> Any\n\n\nGet MonitoredLine rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_reactive_power_flow-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::MonitoredLine) -> Any\n\n\nGet MonitoredLine reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_services-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_services","text":"get_services(value::MonitoredLine) -> Vector{Service}\n\n\nGet MonitoredLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.get_x-Tuple{MonitoredLine}","page":"MonitoredLine","title":"PowerSystems.get_x","text":"get_x(value::MonitoredLine) -> Float64\n\n\nGet MonitoredLine x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_active_power_flow!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_angle_limits!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_angle_limits!","text":"set_angle_limits!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine angle_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_arc!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_available!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_available!","text":"set_available!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_b!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_b!","text":"set_b!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine b.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_ext!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_flow_limits!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_flow_limits!","text":"set_flow_limits!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_r!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_r!","text":"set_r!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_rate!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_rate!","text":"set_rate!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_reactive_power_flow!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_services!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_services!","text":"set_services!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_time_series_container!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MonitoredLine/#PowerSystems.set_x!-Tuple{MonitoredLine, Any}","page":"MonitoredLine","title":"PowerSystems.set_x!","text":"set_x!(value::MonitoredLine, val) -> Any\n\n\nSet MonitoredLine x.\n\n\n\n\n\n","category":"method"},{"location":"tutorials/serialize_data/#Serializing-PowerSystem-Data","page":"Serialize Data","title":"Serializing PowerSystem Data","text":"","category":"section"},{"location":"tutorials/serialize_data/","page":"Serialize Data","title":"Serialize Data","text":"Originally Contributed by: Clayton Barrows","category":"page"},{"location":"tutorials/serialize_data/#Introduction","page":"Serialize Data","title":"Introduction","text":"","category":"section"},{"location":"tutorials/serialize_data/","page":"Serialize Data","title":"Serialize Data","text":"PowerSystems.jl supports serializing/deserializing data with JSON. This provides an example of how to write and read a System to/from disk.","category":"page"},{"location":"tutorials/serialize_data/#Dependencies","page":"Serialize Data","title":"Dependencies","text":"","category":"section"},{"location":"tutorials/serialize_data/","page":"Serialize Data","title":"Serialize Data","text":"Let's use a dataset from the tabular data parsing tutorial:","category":"page"},{"location":"tutorials/serialize_data/","page":"Serialize Data","title":"Serialize Data","text":"using PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\"); #hide \nsys = System(joinpath(file_dir, \"case5_re.m\"))","category":"page"},{"location":"tutorials/serialize_data/#Write-data-to-a-temporary-directory","page":"Serialize Data","title":"Write data to a temporary directory","text":"","category":"section"},{"location":"tutorials/serialize_data/","page":"Serialize Data","title":"Serialize Data","text":"folder = mktempdir();\npath = joinpath(folder, \"system.json\")\nprintln(\"Serializing to $path\")\nto_json(sys, path)","category":"page"},{"location":"tutorials/serialize_data/#Read-the-JSON-file-and-create-a-new-System","page":"Serialize Data","title":"Read the JSON file and create a new System","text":"","category":"section"},{"location":"tutorials/serialize_data/","page":"Serialize Data","title":"Serialize Data","text":"sys2 = System(path)","category":"page"},{"location":"model_library/generated_RenewableFix/#RenewableFix","page":"RenewableFix","title":"RenewableFix","text":"","category":"section"},{"location":"model_library/generated_RenewableFix/","page":"RenewableFix","title":"RenewableFix","text":"Modules = [PowerSystems]\nPages = [\"generated/RenewableFix.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_RenewableFix/#PowerSystems.RenewableFix","page":"RenewableFix","title":"PowerSystems.RenewableFix","text":"mutable struct RenewableFix <: RenewableGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n power_factor::Float64\n base_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for fixed renewable generation technologies.\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\npower_factor::Float64, validation range: (0, 1), action if invalid: error\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_RenewableFix/#InfrastructureSystems.get_name-Tuple{RenewableFix}","page":"RenewableFix","title":"InfrastructureSystems.get_name","text":"get_name(value::RenewableFix) -> String\n\n\nGet RenewableFix name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#InfrastructureSystems.get_time_series_container-Tuple{RenewableFix}","page":"RenewableFix","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::RenewableFix\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet RenewableFix time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_active_power-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_active_power","text":"get_active_power(value::RenewableFix) -> Any\n\n\nGet RenewableFix active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_available-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_available","text":"get_available(value::RenewableFix) -> Bool\n\n\nGet RenewableFix available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_base_power-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_base_power","text":"get_base_power(value::RenewableFix) -> Float64\n\n\nGet RenewableFix base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_bus-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_bus","text":"get_bus(value::RenewableFix) -> ACBus\n\n\nGet RenewableFix bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_dynamic_injector-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::RenewableFix\n) -> Union{Nothing, DynamicInjection}\n\n\nGet RenewableFix dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_ext-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_ext","text":"get_ext(value::RenewableFix) -> Dict{String, Any}\n\n\nGet RenewableFix ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_power_factor-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_power_factor","text":"get_power_factor(value::RenewableFix) -> Float64\n\n\nGet RenewableFix power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_prime_mover_type-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::RenewableFix) -> PrimeMovers\n\n\nGet RenewableFix prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_rating-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_rating","text":"get_rating(value::RenewableFix) -> Any\n\n\nGet RenewableFix rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_reactive_power-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::RenewableFix) -> Any\n\n\nGet RenewableFix reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.get_services-Tuple{RenewableFix}","page":"RenewableFix","title":"PowerSystems.get_services","text":"get_services(value::RenewableFix) -> Vector{Service}\n\n\nGet RenewableFix services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_active_power!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_available!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_available!","text":"set_available!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_base_power!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_bus!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_bus!","text":"set_bus!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_ext!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_ext!","text":"set_ext!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_power_factor!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_power_factor!","text":"set_power_factor!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_prime_mover_type!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_rating!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_rating!","text":"set_rating!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_reactive_power!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_services!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_services!","text":"set_services!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableFix/#PowerSystems.set_time_series_container!-Tuple{RenewableFix, Any}","page":"RenewableFix","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::RenewableFix, val) -> Any\n\n\nSet RenewableFix time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_inverter/#DynamicInverter","page":"Dynamic Inverter","title":"DynamicInverter","text":"","category":"section"},{"location":"model_library/dynamic_inverter/","page":"Dynamic Inverter","title":"Dynamic Inverter","text":"Modules = [PowerSystems]\nPages = [\"dynamic_inverter.jl\"]\nOrder = [:type, :function]\nPublic = true","category":"page"},{"location":"model_library/dynamic_inverter/#PowerSystems.DynamicInverter","page":"Dynamic Inverter","title":"PowerSystems.DynamicInverter","text":"mutable struct DynamicInverter{\n C <: Converter,\n O <: OuterControl,\n IC <: InnerControl,\n DC <: DCSource,\n P <: FrequencyEstimator,\n F <: Filter,\n} <: DynamicInjection\n name::String\n ω_ref::Float64\n converter::C\n outer_control::O\n inner_control::IC\n dc_source::DC\n freq_estimator::P\n filter::F\n limiter::Union{nothing, InverterLimiter}\n base_power::Float64\n n_states::Int\n states::Vector{Symbol}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA dynamic inverter is composed by 6 components, namely a Converter, an Outer Control, an Inner Control, a DC Source, a Frequency Estimator and a Filter. It requires a Static Injection device that is attached to it.\n\nArguments\n\nname::String: Name of inverter.\nω_ref::Float64: Frequency reference set-point in pu.\nconverter <: Converter: Converter model for the PWM transformation.\nouter_control <: OuterControl: Outer-control controller model.\ninner_control <: InnerControl: Inner-control controller model.\ndc_source <: DCSource: DC Source model.\nfreq_estimator <: FrequencyEstimator: Frequency Estimator (typically a PLL) model.\nfilter <: Filter: Filter model.\nlimiter <: Union{nothing, InverterLimiter}: Inverter Inner Control Limiter model\nbase_power::Float64: Base power\nn_states::Int: Number of states (will depend on the components).\nstates::Vector{Symbol}: Vector of states (will depend on the components).\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AGC/#AGC","page":"AGC","title":"AGC","text":"","category":"section"},{"location":"model_library/generated_AGC/","page":"AGC","title":"AGC","text":"Modules = [PowerSystems]\nPages = [\"generated/AGC.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AGC/#PowerSystems.AGC","page":"AGC","title":"PowerSystems.AGC","text":"mutable struct AGC <: Service\n name::String\n available::Bool\n bias::Float64\n K_p::Float64\n K_i::Float64\n K_d::Float64\n delta_t::Float64\n area::Union{Nothing, Area}\n initial_ace::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbias::Float64\nK_p::Float64: PID Proportional Constant\nK_i::Float64: PID Integral Constant\nK_d::Float64: PID Derrivative Constant\ndelta_t::Float64: PID Discretization period [Seconds]\narea::Union{Nothing, Area}: the area controlled by the AGC\ninitial_ace::Float64: PID Discretization period [Seconds]\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AGC/#InfrastructureSystems.get_name-Tuple{AGC}","page":"AGC","title":"InfrastructureSystems.get_name","text":"get_name(value::AGC) -> String\n\n\nGet AGC name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_K_d-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_K_d","text":"get_K_d(value::AGC) -> Float64\n\n\nGet AGC K_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_K_i-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_K_i","text":"get_K_i(value::AGC) -> Float64\n\n\nGet AGC K_i.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_K_p-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_K_p","text":"get_K_p(value::AGC) -> Float64\n\n\nGet AGC K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_area-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_area","text":"get_area(value::AGC) -> Union{Nothing, Area}\n\n\nGet AGC area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_available-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_available","text":"get_available(value::AGC) -> Bool\n\n\nGet AGC available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_bias-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_bias","text":"get_bias(value::AGC) -> Float64\n\n\nGet AGC bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_delta_t-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_delta_t","text":"get_delta_t(value::AGC) -> Float64\n\n\nGet AGC delta_t.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_ext-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_ext","text":"get_ext(value::AGC) -> Dict{String, Any}\n\n\nGet AGC ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.get_initial_ace-Tuple{AGC}","page":"AGC","title":"PowerSystems.get_initial_ace","text":"get_initial_ace(value::AGC) -> Float64\n\n\nGet AGC initial_ace.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_K_d!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_K_d!","text":"set_K_d!(value::AGC, val) -> Any\n\n\nSet AGC K_d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_K_i!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_K_i!","text":"set_K_i!(value::AGC, val) -> Any\n\n\nSet AGC K_i.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_K_p!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_K_p!","text":"set_K_p!(value::AGC, val) -> Any\n\n\nSet AGC K_p.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_area!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_area!","text":"set_area!(value::AGC, val) -> Any\n\n\nSet AGC area.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_available!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_available!","text":"set_available!(value::AGC, val) -> Any\n\n\nSet AGC available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_bias!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_bias!","text":"set_bias!(value::AGC, val) -> Any\n\n\nSet AGC bias.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_delta_t!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_delta_t!","text":"set_delta_t!(value::AGC, val) -> Any\n\n\nSet AGC delta_t.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_ext!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_ext!","text":"set_ext!(value::AGC, val) -> Any\n\n\nSet AGC ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AGC/#PowerSystems.set_initial_ace!-Tuple{AGC, Any}","page":"AGC","title":"PowerSystems.set_initial_ace!","text":"set_initial_ace!(value::AGC, val) -> Any\n\n\nSet AGC initial_ace.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#Transformer2W","page":"Transformer2W","title":"Transformer2W","text":"","category":"section"},{"location":"model_library/generated_Transformer2W/","page":"Transformer2W","title":"Transformer2W","text":"Modules = [PowerSystems]\nPages = [\"generated/Transformer2W.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Transformer2W/#PowerSystems.Transformer2W","page":"Transformer2W","title":"PowerSystems.Transformer2W","text":"mutable struct Transformer2W <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n reactive_power_flow::Float64\n arc::Arc\n r::Float64\n x::Float64\n primary_shunt::Float64\n rate::Union{Nothing, Float64}\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nThe 2-W transformer model uses an equivalent circuit assuming the impedance is on the High Voltage Side of the transformer. The model allocates the iron losses and magnetizing susceptance to the primary side.\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\nreactive_power_flow::Float64\narc::Arc\nr::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn\nx::Float64: System per-unit value, validation range: (-2, 4), action if invalid: warn\nprimary_shunt::Float64: System per-unit value, validation range: (0, 2), action if invalid: warn\nrate::Union{Nothing, Float64}, validation range: (0, nothing), action if invalid: error\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Transformer2W/#InfrastructureSystems.get_name-Tuple{Transformer2W}","page":"Transformer2W","title":"InfrastructureSystems.get_name","text":"get_name(value::Transformer2W) -> String\n\n\nGet Transformer2W name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#InfrastructureSystems.get_time_series_container-Tuple{Transformer2W}","page":"Transformer2W","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::Transformer2W\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet Transformer2W time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_active_power_flow-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::Transformer2W) -> Any\n\n\nGet Transformer2W active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_arc-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_arc","text":"get_arc(value::Transformer2W) -> Arc\n\n\nGet Transformer2W arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_available-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_available","text":"get_available(value::Transformer2W) -> Bool\n\n\nGet Transformer2W available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_ext-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_ext","text":"get_ext(value::Transformer2W) -> Dict{String, Any}\n\n\nGet Transformer2W ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_primary_shunt-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_primary_shunt","text":"get_primary_shunt(value::Transformer2W) -> Float64\n\n\nGet Transformer2W primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_r-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_r","text":"get_r(value::Transformer2W) -> Float64\n\n\nGet Transformer2W r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_rate-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_rate","text":"get_rate(value::Transformer2W) -> Any\n\n\nGet Transformer2W rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_reactive_power_flow-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_reactive_power_flow","text":"get_reactive_power_flow(value::Transformer2W) -> Any\n\n\nGet Transformer2W reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_services-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_services","text":"get_services(value::Transformer2W) -> Vector{Service}\n\n\nGet Transformer2W services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.get_x-Tuple{Transformer2W}","page":"Transformer2W","title":"PowerSystems.get_x","text":"get_x(value::Transformer2W) -> Float64\n\n\nGet Transformer2W x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_active_power_flow!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_arc!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_arc!","text":"set_arc!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_available!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_available!","text":"set_available!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_ext!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_ext!","text":"set_ext!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_primary_shunt!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_primary_shunt!","text":"set_primary_shunt!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W primary_shunt.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_r!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_r!","text":"set_r!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_rate!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_rate!","text":"set_rate!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W rate.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_reactive_power_flow!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_reactive_power_flow!","text":"set_reactive_power_flow!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W reactive_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_services!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_services!","text":"set_services!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_time_series_container!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Transformer2W/#PowerSystems.set_x!-Tuple{Transformer2W, Any}","page":"Transformer2W","title":"PowerSystems.set_x!","text":"set_x!(value::Transformer2W, val) -> Any\n\n\nSet Transformer2W x.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#HydroEnergyReservoir","page":"HydroEnergyReservoir","title":"HydroEnergyReservoir","text":"","category":"section"},{"location":"model_library/generated_HydroEnergyReservoir/","page":"HydroEnergyReservoir","title":"HydroEnergyReservoir","text":"Modules = [PowerSystems]\nPages = [\"generated/HydroEnergyReservoir.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.HydroEnergyReservoir","page":"HydroEnergyReservoir","title":"PowerSystems.HydroEnergyReservoir","text":"mutable struct HydroEnergyReservoir <: HydroGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n time_limits::Union{Nothing, UpDown}\n base_power::Float64\n storage_capacity::Float64\n inflow::Float64\n initial_storage::Float64\n operation_cost::OperationalCost\n storage_target::Float64\n conversion_factor::Float64\n time_at_status::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\nactive_power_limits::MinMax\nreactive_power_limits::Union{Nothing, MinMax}, action if invalid: warn\nramp_limits::Union{Nothing, UpDown}: ramp up and ramp down limits in MW (in component base per unit) per minute, validation range: (0, nothing), action if invalid: error\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nstorage_capacity::Float64: Maximum storage capacity in the reservoir (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error\ninflow::Float64: Baseline inflow into the reservoir (units can be p.u. or m^3/hr), validation range: (0, nothing), action if invalid: error\ninitial_storage::Float64: Initial storage capacity in the reservoir (units can be p.u-hr or m^3)., validation range: (0, nothing), action if invalid: error\noperation_cost::OperationalCost: Operation Cost of Generation OperationalCost\nstorage_target::Float64: Storage target at the end of simulation as ratio of storage capacity.\nconversion_factor::Float64: Conversion factor from flow/volume to energy: m^3 -> p.u-hr.\ntime_at_status::Float64\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_HydroEnergyReservoir/#InfrastructureSystems.get_name-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"InfrastructureSystems.get_name","text":"get_name(value::HydroEnergyReservoir) -> String\n\n\nGet HydroEnergyReservoir name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#InfrastructureSystems.get_time_series_container-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::HydroEnergyReservoir\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet HydroEnergyReservoir time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_active_power-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_active_power","text":"get_active_power(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_active_power_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::HydroEnergyReservoir\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet HydroEnergyReservoir active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_available-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_available","text":"get_available(value::HydroEnergyReservoir) -> Bool\n\n\nGet HydroEnergyReservoir available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_base_power-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_base_power","text":"get_base_power(value::HydroEnergyReservoir) -> Float64\n\n\nGet HydroEnergyReservoir base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_bus-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_bus","text":"get_bus(value::HydroEnergyReservoir) -> ACBus\n\n\nGet HydroEnergyReservoir bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_conversion_factor-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_conversion_factor","text":"get_conversion_factor(\n value::HydroEnergyReservoir\n) -> Float64\n\n\nGet HydroEnergyReservoir conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_dynamic_injector-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::HydroEnergyReservoir\n) -> Union{Nothing, DynamicInjection}\n\n\nGet HydroEnergyReservoir dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_ext-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_ext","text":"get_ext(value::HydroEnergyReservoir) -> Dict{String, Any}\n\n\nGet HydroEnergyReservoir ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_inflow-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_inflow","text":"get_inflow(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_initial_storage-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_initial_storage","text":"get_initial_storage(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_operation_cost-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::HydroEnergyReservoir\n) -> PowerSystems.OperationalCost\n\n\nGet HydroEnergyReservoir operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_prime_mover_type-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::HydroEnergyReservoir\n) -> PrimeMovers\n\n\nGet HydroEnergyReservoir prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_ramp_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::HydroEnergyReservoir\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet HydroEnergyReservoir ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_rating-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_rating","text":"get_rating(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_reactive_power-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_reactive_power_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::HydroEnergyReservoir\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet HydroEnergyReservoir reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_services-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_services","text":"get_services(value::HydroEnergyReservoir) -> Vector{Service}\n\n\nGet HydroEnergyReservoir services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_storage_capacity-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_storage_capacity","text":"get_storage_capacity(value::HydroEnergyReservoir) -> Any\n\n\nGet HydroEnergyReservoir storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_storage_target-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_storage_target","text":"get_storage_target(value::HydroEnergyReservoir) -> Float64\n\n\nGet HydroEnergyReservoir storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_time_at_status-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::HydroEnergyReservoir) -> Float64\n\n\nGet HydroEnergyReservoir time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.get_time_limits-Tuple{HydroEnergyReservoir}","page":"HydroEnergyReservoir","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::HydroEnergyReservoir\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet HydroEnergyReservoir time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_active_power!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_active_power_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_available!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_available!","text":"set_available!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_base_power!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_bus!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_bus!","text":"set_bus!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_conversion_factor!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_conversion_factor!","text":"set_conversion_factor!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir conversion_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_ext!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_ext!","text":"set_ext!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_inflow!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_inflow!","text":"set_inflow!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir inflow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_initial_storage!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_initial_storage!","text":"set_initial_storage!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir initial_storage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_operation_cost!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_prime_mover_type!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_ramp_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_rating!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_rating!","text":"set_rating!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_reactive_power!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_reactive_power_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_services!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_services!","text":"set_services!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_storage_capacity!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_storage_capacity!","text":"set_storage_capacity!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir storage_capacity.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_storage_target!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_storage_target!","text":"set_storage_target!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir storage_target.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_time_at_status!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_time_limits!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::HydroEnergyReservoir, val) -> Any\n\n\nSet HydroEnergyReservoir time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HydroEnergyReservoir/#PowerSystems.set_time_series_container!-Tuple{HydroEnergyReservoir, Any}","page":"HydroEnergyReservoir","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::HydroEnergyReservoir,\n val\n) -> Any\n\n\nSet HydroEnergyReservoir time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/dynamic_generator/#DynamicGenerator","page":"Dynamic Generator","title":"DynamicGenerator","text":"","category":"section"},{"location":"model_library/dynamic_generator/","page":"Dynamic Generator","title":"Dynamic Generator","text":"Modules = [PowerSystems]\nPages = [\"dynamic_generator.jl\"]\nOrder = [:type, :function]\nPublic = true","category":"page"},{"location":"model_library/dynamic_generator/#PowerSystems.DynamicGenerator","page":"Dynamic Generator","title":"PowerSystems.DynamicGenerator","text":"mutable struct DynamicGenerator{\n M <: Machine,\n S <: Shaft,\n A <: AVR,\n TG <: TurbineGov,\n P <: PSS,\n} <: DynamicInjection\n name::String\n ω_ref::Float64\n machine::M\n shaft::S\n avr::A\n prime_mover::TG\n pss::P\n base_power::Float64\n n_states::Int\n states::Vector{Symbol}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nA dynamic generator is composed by 5 components, namely a Machine, a Shaft, an Automatic Voltage Regulator (AVR), a Prime Mover (o Turbine Governor) and Power System Stabilizer (PSS). It requires a Static Injection device that is attached to it.\n\nArguments\n\nname::String: Name of generator.\nω_ref::Float64: Frequency reference set-point in pu.\nmachine <: Machine: Machine model for modeling the electro-magnetic phenomena.\nshaft <: Shaft: Shaft model for modeling the electro-mechanical phenomena.\navr <: AVR: AVR model of the excitacion system.\nprime_mover <: TurbineGov: Prime Mover and Turbine Governor model for mechanical power.\npss <: PSS: Power System Stabilizer model.\nbase_power::Float64: Base power\nn_states::Int: Number of states (will depend on the components).\nstates::Vector{Symbol}: Vector of states (will depend on the components).\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_RenewableDispatch/#RenewableDispatch","page":"RenewableDispatch","title":"RenewableDispatch","text":"","category":"section"},{"location":"model_library/generated_RenewableDispatch/","page":"RenewableDispatch","title":"RenewableDispatch","text":"Modules = [PowerSystems]\nPages = [\"generated/RenewableDispatch.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.RenewableDispatch","page":"RenewableDispatch","title":"PowerSystems.RenewableDispatch","text":"mutable struct RenewableDispatch <: RenewableGen\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n reactive_power_limits::Union{Nothing, MinMax}\n power_factor::Float64\n operation_cost::TwoPartCost\n base_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\nreactive_power_limits::Union{Nothing, MinMax}\npower_factor::Float64, validation range: (0, 1), action if invalid: error\noperation_cost::TwoPartCost: Operation Cost of Generation TwoPartCost\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_RenewableDispatch/#InfrastructureSystems.get_name-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"InfrastructureSystems.get_name","text":"get_name(value::RenewableDispatch) -> String\n\n\nGet RenewableDispatch name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#InfrastructureSystems.get_time_series_container-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::RenewableDispatch\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet RenewableDispatch time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_active_power-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_active_power","text":"get_active_power(value::RenewableDispatch) -> Any\n\n\nGet RenewableDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_available-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_available","text":"get_available(value::RenewableDispatch) -> Bool\n\n\nGet RenewableDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_base_power-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_base_power","text":"get_base_power(value::RenewableDispatch) -> Float64\n\n\nGet RenewableDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_bus-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_bus","text":"get_bus(value::RenewableDispatch) -> ACBus\n\n\nGet RenewableDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_dynamic_injector-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::RenewableDispatch\n) -> Union{Nothing, DynamicInjection}\n\n\nGet RenewableDispatch dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_ext-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_ext","text":"get_ext(value::RenewableDispatch) -> Dict{String, Any}\n\n\nGet RenewableDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_operation_cost-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(value::RenewableDispatch) -> TwoPartCost\n\n\nGet RenewableDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_power_factor-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_power_factor","text":"get_power_factor(value::RenewableDispatch) -> Float64\n\n\nGet RenewableDispatch power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_prime_mover_type-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::RenewableDispatch\n) -> PrimeMovers\n\n\nGet RenewableDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_rating-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_rating","text":"get_rating(value::RenewableDispatch) -> Any\n\n\nGet RenewableDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_reactive_power-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::RenewableDispatch) -> Any\n\n\nGet RenewableDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_reactive_power_limits-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::RenewableDispatch\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet RenewableDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.get_services-Tuple{RenewableDispatch}","page":"RenewableDispatch","title":"PowerSystems.get_services","text":"get_services(value::RenewableDispatch) -> Vector{Service}\n\n\nGet RenewableDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_active_power!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_available!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_available!","text":"set_available!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_base_power!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_bus!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_bus!","text":"set_bus!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_ext!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_ext!","text":"set_ext!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_operation_cost!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_power_factor!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_power_factor!","text":"set_power_factor!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch power_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_prime_mover_type!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_rating!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_rating!","text":"set_rating!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_reactive_power!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_reactive_power_limits!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::RenewableDispatch,\n val\n) -> Any\n\n\nSet RenewableDispatch reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_services!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_services!","text":"set_services!(value::RenewableDispatch, val) -> Any\n\n\nSet RenewableDispatch services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_RenewableDispatch/#PowerSystems.set_time_series_container!-Tuple{RenewableDispatch, Any}","page":"RenewableDispatch","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::RenewableDispatch,\n val\n) -> Any\n\n\nSet RenewableDispatch time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#TwoTerminalVSCDCLine","page":"TwoTerminalVSCDCLine","title":"TwoTerminalVSCDCLine","text":"","category":"section"},{"location":"model_library/generated_TwoTerminalVSCDCLine/","page":"TwoTerminalVSCDCLine","title":"TwoTerminalVSCDCLine","text":"Modules = [PowerSystems]\nPages = [\"generated/TwoTerminalVSCDCLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.TwoTerminalVSCDCLine","page":"TwoTerminalVSCDCLine","title":"PowerSystems.TwoTerminalVSCDCLine","text":"mutable struct TwoTerminalVSCDCLine <: ACBranch\n name::String\n available::Bool\n active_power_flow::Float64\n arc::Arc\n rectifier_tap_limits::MinMax\n rectifier_xrc::Float64\n rectifier_firing_angle::MinMax\n inverter_tap_limits::MinMax\n inverter_xrc::Float64\n inverter_firing_angle::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nAs implemented in Milano's Book, Page 397.\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\narc::Arc\nrectifier_tap_limits::MinMax\nrectifier_xrc::Float64\nrectifier_firing_angle::MinMax\ninverter_tap_limits::MinMax\ninverter_xrc::Float64\ninverter_firing_angle::MinMax\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#InfrastructureSystems.get_name-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"InfrastructureSystems.get_name","text":"get_name(value::TwoTerminalVSCDCLine) -> String\n\n\nGet TwoTerminalVSCDCLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#InfrastructureSystems.get_time_series_container-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::TwoTerminalVSCDCLine\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet TwoTerminalVSCDCLine time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_active_power_flow-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TwoTerminalVSCDCLine) -> Any\n\n\nGet TwoTerminalVSCDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_arc-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_arc","text":"get_arc(value::TwoTerminalVSCDCLine) -> Arc\n\n\nGet TwoTerminalVSCDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_available-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_available","text":"get_available(value::TwoTerminalVSCDCLine) -> Bool\n\n\nGet TwoTerminalVSCDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_ext-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_ext","text":"get_ext(value::TwoTerminalVSCDCLine) -> Dict{String, Any}\n\n\nGet TwoTerminalVSCDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_inverter_firing_angle-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_inverter_firing_angle","text":"get_inverter_firing_angle(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine inverter_firing_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_inverter_tap_limits-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_inverter_tap_limits","text":"get_inverter_tap_limits(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine inverter_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_inverter_xrc-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_inverter_xrc","text":"get_inverter_xrc(value::TwoTerminalVSCDCLine) -> Float64\n\n\nGet TwoTerminalVSCDCLine inverter_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_rectifier_firing_angle-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_rectifier_firing_angle","text":"get_rectifier_firing_angle(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine rectifier_firing_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_rectifier_tap_limits-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_rectifier_tap_limits","text":"get_rectifier_tap_limits(\n value::TwoTerminalVSCDCLine\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet TwoTerminalVSCDCLine rectifier_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_rectifier_xrc-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_rectifier_xrc","text":"get_rectifier_xrc(value::TwoTerminalVSCDCLine) -> Float64\n\n\nGet TwoTerminalVSCDCLine rectifier_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.get_services-Tuple{TwoTerminalVSCDCLine}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.get_services","text":"get_services(value::TwoTerminalVSCDCLine) -> Vector{Service}\n\n\nGet TwoTerminalVSCDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_active_power_flow!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_arc!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_available!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_available!","text":"set_available!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_ext!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_inverter_firing_angle!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_inverter_firing_angle!","text":"set_inverter_firing_angle!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine inverter_firing_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_inverter_tap_limits!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_inverter_tap_limits!","text":"set_inverter_tap_limits!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine inverter_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_inverter_xrc!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_inverter_xrc!","text":"set_inverter_xrc!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine inverter_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_rectifier_firing_angle!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_rectifier_firing_angle!","text":"set_rectifier_firing_angle!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine rectifier_firing_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_rectifier_tap_limits!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_rectifier_tap_limits!","text":"set_rectifier_tap_limits!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine rectifier_tap_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_rectifier_xrc!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_rectifier_xrc!","text":"set_rectifier_xrc!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine rectifier_xrc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_services!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_services!","text":"set_services!(value::TwoTerminalVSCDCLine, val) -> Any\n\n\nSet TwoTerminalVSCDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TwoTerminalVSCDCLine/#PowerSystems.set_time_series_container!-Tuple{TwoTerminalVSCDCLine, Any}","page":"TwoTerminalVSCDCLine","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::TwoTerminalVSCDCLine,\n val\n) -> Any\n\n\nSet TwoTerminalVSCDCLine time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"modeler_guide/modeling_with_JuMP/#modeling_with_jump","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"","category":"section"},{"location":"modeler_guide/modeling_with_JuMP/","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"This page shows a minimal example of PowerSystems.jl used to develop and Economic Dispatch model. The code shows the stages to develop modeling code","category":"page"},{"location":"modeler_guide/modeling_with_JuMP/","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"Make the data set from power flow and time series data,\nSerialize the data,\nPass the data and algorithm to the model.","category":"page"},{"location":"modeler_guide/modeling_with_JuMP/","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"One of the main uses of `PowerSystems.jl is not having re-run the data generation for every model execution. The model code shows an example of populating the constraints and cost functions using accessor functions inside the model function. The example concludes by reading the data created earlier and passing the algorithm with the data.","category":"page"},{"location":"modeler_guide/modeling_with_JuMP/","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"using PowerSystems\nconst PSY = PowerSystems\nusing JuMP\nusing Ipopt\nusing PowerSystemCaseBuilder","category":"page"},{"location":"modeler_guide/modeling_with_JuMP/","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"The first step is to load the test data used throughout the rest of these tutorials (or set DATA_DIR as appropriate if it already exists).","category":"page"},{"location":"modeler_guide/modeling_with_JuMP/","page":"Modeling with JuMP","title":"Modeling with JuMP","text":"system_data = build_system(PSISystems, \"c_sys5_pjm\")\n\nfunction ed_model(system::System, optimizer)\n ed_m = Model(optimizer)\n time_periods = 1:24\n thermal_gens_names = get_name.(get_components(ThermalStandard, system))\n @variable(ed_m, pg[g in thermal_gens_names, t in time_periods] >= 0)\n\n for g in get_components(ThermalStandard, system), t in time_periods\n name = get_name(g)\n @constraint(ed_m, pg[name, t] >= get_active_power_limits(g).min)\n @constraint(ed_m, pg[name, t] <= get_active_power_limits(g).max)\n end\n\n net_load = zeros(length(time_periods))\n for g in get_components(RenewableGen, system)\n net_load -= get_time_series_values(SingleTimeSeries, g, \"max_active_power\")[time_periods]\n end\n\n for g in get_components(StaticLoad, system)\n net_load += get_time_series_values(SingleTimeSeries, g, \"max_active_power\")[time_periods]\n end\n\n for t in time_periods\n @constraint(ed_m, sum(pg[g, t] for g in thermal_gens_names) == net_load[t])\n end\n\n @objective(ed_m, Min, sum(\n pg[get_name(g), t]^2*get_cost(get_variable(get_operation_cost(g)))[1] +\n pg[get_name(g), t]*get_cost(get_variable(get_operation_cost(g)))[2]\n for g in get_components(ThermalGen, system), t in time_periods\n )\n )\n optimize!(ed_m)\n return ed_m\nend\n\nresults = ed_model(system_data, Ipopt.Optimizer)","category":"page"},{"location":"modeler_guide/system_dynamic_data/#Creating-a-System-with-Dynamic-devices","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"","category":"section"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"You can access example data in the Power Systems Test Data Repository. Most of these systems are available to use using PowerSystemCaseBuilder.jl.","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"using PowerSystems\nconst PSY = PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Although PowerSystems.jl is not constrained to only PSS/e files, commonly the data available comes in a pair of files: One for the static data power flow case and a second one with the dynamic components information. However, PowerSystems.jl is able to take any power flow case and specify dynamic components to it.","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"The following describes the system creation for the one machine infinite bus case using custom component specifications.","category":"page"},{"location":"modeler_guide/system_dynamic_data/#One-Machine-Infinite-Bus-Example","page":"Creating a System with Dynamic devices","title":"One Machine Infinite Bus Example","text":"","category":"section"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"First load data from any format (see Constructing a System from RAW data for details. In this example we will load a PTI power flow data format (.raw file) as follows:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"0, 100, 33, 0, 0, 60 / 24-Apr-2020 17:05:49 - MATPOWER 7.0.1-dev\n\n\n 101, 'BUS 1 ', 230, 3, 1, 1, 1, 1.05, 0, 1.06, 0.94, 1.06, 0.94\n 102, 'BUS 2 ', 230, 2, 1, 1, 1, 1.04, 0, 1.06, 0.94, 1.06, 0.94\n0 / END OF BUS DATA, BEGIN LOAD DATA\n0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA\n0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA\n 102, 1, 50, 0, 100, -100, 1.00, 0, 100, 0, 1, 0, 0, 1, 1, 100, 100, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n0 / END OF GENERATOR DATA, BEGIN BRANCH DATA\n 101, 102, 1, 0.00, 0.05, 0.000, 100, 100, 100, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA\n0 / END OF TRANSFORMER DATA, BEGIN AREA DATA\n0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA\n0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA\n0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA\n0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA\n0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA\n0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA\n0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA\n0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA\n0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA\n0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA\n0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA\n0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA\n0 / END OF INDUCTION MACHINE DATA\nQ","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Based on the description provided in PTI files, this is a two-bus system, on which the bus 101 (bus 1) is the reference bus at 1.05 pu, and bus 102 (bus 2) is PV bus, to be set at 1.04 pu. There is one 100 MVA generator connected at bus 2, producing 50 MW. There is an equivalent line connecting buses 1 and 2 with a reactance of 005 pu.","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"We can load this data file first","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"omib_sys = System(joinpath(file_dir, \"OMIB.raw\"), runchecks = false)","category":"page"},{"location":"modeler_guide/system_dynamic_data/#Dynamic-Generator","page":"Creating a System with Dynamic devices","title":"Dynamic Generator","text":"","category":"section"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"We are now interested in attaching to the system the dynamic component that will be modeling our dynamic generator. The data can be added by directly passing a .dyr file, but in this example we want to add custom dynamic data.","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Dynamic generator devices are composed by 5 components, namely, machine, shaft, avr, tg and pss (see DynamicGenerator). So we will be adding functions to create all of its components and the generator itself. The example code creates all the components for a DynamicGenerator based on specific models for its components. This result will be a classic machine model without AVR, Turbine Governor and PSS.","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"#Machine\nmachine_classic = BaseMachine(\n R = 0.0,\n Xd_p = 0.2995,\n eq_p = 0.7087,\n)\n\n#Shaft\nshaft_damping = SingleMass(\n H = 3.148,\n D = 2.0,\n)\n\n#AVR\navr_none = AVRFixed(Vf = 0.0)\n\n#TurbineGovernor\ntg_none = TGFixed(efficiency = 1.0)\n\n#PSS\npss_none = PSSFixed(V_pss = 0.0);","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Then we can collect all the dynamic components and create the dynamic generator and assign it to a static generator of choice. In this example we will add it to the generator \"generator-102-1\" as follows:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"#Collect the static gen in the system\nstatic_gen = get_component(Generator, omib_sys, \"generator-102-1\")\n#Creates the dynamic generator\ndyn_gen = DynamicGenerator(\n name = get_name(static_gen),\n ω_ref = 1.0,\n machine = machine_classic,\n shaft = shaft_damping,\n avr = avr_none,\n prime_mover = tg_none,\n pss = pss_none,\n )\n#Add the dynamic generator the system\nadd_component!(omib_sys, dyn_gen, static_gen)","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Once the data is created, we can export our system data such that it can be reloaded later:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"to_json(omib_sys, \"YOUR_DIR/omib_sys.json\")","category":"page"},{"location":"modeler_guide/system_dynamic_data/#Example-with-Dynamic-Inverter","page":"Creating a System with Dynamic devices","title":"Example with Dynamic Inverter","text":"","category":"section"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"We will now create a three bus system with one inverter and one generator. In order to do so, we will parse the following file ThreebusInverter.raw:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev\n\n\n 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9\n 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9\n 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9\n0 / END OF BUS DATA, BEGIN LOAD DATA\n 101, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0\n 102, 1, 1, 1, 1, 100, 30, 0, 0, 0, 0, 1, 1, 0\n 103, 1, 1, 1, 1, 30, 10, 0, 0, 0, 0, 1, 1, 0\n0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA\n0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA\n 102, 1, 70, 0, 100, -100, 1.0142, 0, 100, 0, 1, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n 103, 1, 80, 0, 100, -100, 1.0059, 0, 100, 0, 1, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1\n0 / END OF GENERATOR DATA, BEGIN BRANCH DATA\n 101, 103, 1, 0.01000, 0.12, 0.2, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n 101, 102, 1, 0.01000, 0.12, 0.2, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n 102, 103, 1, 0.02000, 0.9, 1.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1\n0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA\n0 / END OF TRANSFORMER DATA, BEGIN AREA DATA\n0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA\n0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA\n0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA\n0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA\n0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA\n0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA\n0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA\n0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA\n0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA\n0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA\n0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA\n0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA\n0 / END OF INDUCTION MACHINE DATA\nQ","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"That describes a three bus connected system, with generators connected at bus 2 and 3, and loads in three buses. We can load the system and attach an infinite source on the reference bus:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"threebus_sys = System(joinpath(file_dir, \"ThreeBusInverter.raw\"), runchecks = false)","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"We will connect a OneDOneQMachine machine at bus 102, and a Virtual Synchronous Generator Inverter at bus 103. An inverter is composed by a converter, outer control, inner control, dc source, frequency estimator and a filter (see DynamicInverter).","category":"page"},{"location":"modeler_guide/system_dynamic_data/#Dynamic-Inverter-definition","page":"Creating a System with Dynamic devices","title":"Dynamic Inverter definition","text":"","category":"section"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"We will create specific components of the inverter as follows:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"#Define converter as an AverageConverter\nconverter_high_power = AverageConverter(rated_voltage = 138.0, rated_current = 100.0)\n\n#Define Outer Control as a composition of Virtual Inertia + Reactive Power Droop\nouter_cont = OuterControl(\n active_power_control = VirtualInertia(Ta = 2.0, kd = 400.0, kω = 20.0),\n reactive_power_control = ReactivePowerDroop(kq = 0.2, ωf = 1000.0),\n)\n\n#Define an Inner Control as a Voltage+Current Controler with Virtual Impedance:\ninner_cont = VoltageModeControl(\n kpv = 0.59, #Voltage controller proportional gain\n kiv = 736.0, #Voltage controller integral gain\n kffv = 0.0, #Binary variable enabling the voltage feed-forward in output of current controllers\n rv = 0.0, #Virtual resistance in pu\n lv = 0.2, #Virtual inductance in pu\n kpc = 1.27, #Current controller proportional gain\n kic = 14.3, #Current controller integral gain\n kffi = 0.0, #Binary variable enabling the current feed-forward in output of current controllers\n ωad = 50.0, #Active damping low pass filter cut-off frequency\n kad = 0.2, #Active damping gain\n)\n\n#Define DC Source as a FixedSource:\ndc_source_lv = FixedDCSource(voltage = 600.0)\n\n#Define a Frequency Estimator as a PLL based on Vikram Kaura and Vladimir Blaskoc 1997 paper:\npll = KauraPLL(\n ω_lp = 500.0, #Cut-off frequency for LowPass filter of PLL filter.\n kp_pll = 0.084, #PLL proportional gain\n ki_pll = 4.69, #PLL integral gain\n)\n\n#Define an LCL filter:\nfilt = LCLFilter(lf = 0.08, rf = 0.003, cf = 0.074, lg = 0.2, rg = 0.01)","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Similarly we will construct a dynamic generator as follows:","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"#Create the machine\nmachine_oneDoneQ = OneDOneQMachine(\n R = 0.0,\n Xd = 1.3125,\n Xq = 1.2578,\n Xd_p = 0.1813,\n Xq_p = 0.25,\n Td0_p = 5.89,\n Tq0_p = 0.6,\n)\n\n#Shaft\nshaft_no_damping = SingleMass(\n H = 3.01,\n D = 0.0,\n)\n\n#AVR: Type I: Resembles a DC1 AVR\navr_type1 = AVRTypeI(\n Ka = 20.0,\n Ke = 0.01,\n Kf = 0.063,\n Ta = 0.2,\n Te = 0.314,\n Tf = 0.35,\n Tr = 0.001,\n Va_lim = (min = -5.0, max = 5.0),\n Ae = 0.0039, #1st ceiling coefficient\n Be = 1.555, #2nd ceiling coefficient\n)\n\n#No TG\ntg_none = TGFixed(efficiency = 1.0)\n\n#No PSS\npss_none = PSSFixed(V_pss = 0.0);","category":"page"},{"location":"modeler_guide/system_dynamic_data/#Add-the-components-to-the-System","page":"Creating a System with Dynamic devices","title":"Add the components to the System","text":"","category":"section"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"for g in get_components(Generator, threebus_sys)\n #Find the generator at bus 102\n if get_number(get_bus(g)) == 102\n #Create the dynamic generator\n case_gen = DynamicGenerator(\n name = get_name(g),\n ω_ref = 1.0,\n machine = machine_oneDoneQ,\n shaft = shaft_no_damping,\n avr = avr_type1,\n prime_mover = tg_none,\n pss = pss_none,\n )\n #Attach the dynamic generator to the system\n add_component!(threebus_sys, case_gen, g)\n #Find the generator at bus 103\n elseif get_number(get_bus(g)) == 103\n #Create the dynamic inverter\n case_inv = DynamicInverter(\n name = get_name(g),\n ω_ref = 1.0,\n converter = converter_high_power,\n outer_control = outer_cont,\n inner_control = inner_cont,\n dc_source = dc_source_lv,\n freq_estimator = pll,\n filter = filt,\n )\n #Attach the dynamic inverter to the system\n add_component!(threebus_sys, case_inv, g)\n end\nend\n\n# We can check that the system has the Dynamic Inverter and Generator\nthreebus_sys","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"Finally we can seraliaze the system data for later reloading","category":"page"},{"location":"modeler_guide/system_dynamic_data/","page":"Creating a System with Dynamic devices","title":"Creating a System with Dynamic devices","text":"to_json(threebus_sys, \"YOUR_DIR/threebus_sys.json\")","category":"page"},{"location":"tutorials/add_forecasts/#Add-time-series-to-System","page":"Add Forecasts","title":"Add time series to System","text":"","category":"section"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"Originally Contributed by: Clayton Barrows","category":"page"},{"location":"tutorials/add_forecasts/#Introduction","page":"Add Forecasts","title":"Introduction","text":"","category":"section"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"An example of how to parse add time series data to a System using PowerSystems.jl","category":"page"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"For example, a System created by parsing a MATPOWER file doesn't contain any time series data. So a user may want to add time series to the System.","category":"page"},{"location":"tutorials/add_forecasts/#Dependencies","page":"Add Forecasts","title":"Dependencies","text":"","category":"section"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"Let's use the 5-bus dataset we parsed in the MATPOWER example","category":"page"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"using PowerSystems\nusing JSON3\n\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\"); #hide\nsys = System(joinpath(file_dir, \"case5_re.m\"))","category":"page"},{"location":"tutorials/add_forecasts/#Define-pointers-to-time-series-files","page":"Add Forecasts","title":"Define pointers to time series files","text":"","category":"section"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"For example, if we want to add a bunch of time series files, say one for each load and one for each renewable generator, we need to define pointers to each .csv file containing the time series in the following format (PowerSystems.jl also supports a CSV format for this file). We will use Artifacts for the following data.","category":"page"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"using PowerSystemCaseBuilder #hide\nDATA_DIR = PowerSystemCaseBuilder.DATA_DIR #hide\nFORECASTS_DIR = joinpath(DATA_DIR, \"5-Bus\", \"5bus_ts\"); #hide\nfname = joinpath(FORECASTS_DIR, \"timeseries_pointers_da.json\")\nopen(fname, \"r\") do f\n JSON3.@pretty JSON3.read(f)\nend","category":"page"},{"location":"tutorials/add_forecasts/#Read-and-assign-time-series-to-System-using-these-parameters.","page":"Add Forecasts","title":"Read and assign time series to System using these parameters.","text":"","category":"section"},{"location":"tutorials/add_forecasts/","page":"Add Forecasts","title":"Add Forecasts","text":"add_time_series!(sys, fname)\nsys","category":"page"},{"location":"model_library/generated_Source/#Source","page":"Source","title":"Source","text":"","category":"section"},{"location":"model_library/generated_Source/","page":"Source","title":"Source","text":"Modules = [PowerSystems]\nPages = [\"generated/Source.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Source/#PowerSystems.Source","page":"Source","title":"PowerSystems.Source","text":"mutable struct Source <: StaticInjection\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n R_th::Float64\n X_th::Float64\n internal_voltage::Float64\n internal_angle::Float64\n dynamic_injector::Union{Nothing, DynamicInjection}\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nThis struct acts as an infinity bus.\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nR_th::Float64: Source Thevenin resistance, validation range: (0, nothing)\nX_th::Float64: Source Thevenin reactance, validation range: (0, nothing)\ninternal_voltage::Float64: Internal Voltage, validation range: (0, nothing)\ninternal_angle::Float64: Internal Angle\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Source/#InfrastructureSystems.get_name-Tuple{Source}","page":"Source","title":"InfrastructureSystems.get_name","text":"get_name(value::Source) -> String\n\n\nGet Source name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_R_th-Tuple{Source}","page":"Source","title":"PowerSystems.get_R_th","text":"get_R_th(value::Source) -> Float64\n\n\nGet Source R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_X_th-Tuple{Source}","page":"Source","title":"PowerSystems.get_X_th","text":"get_X_th(value::Source) -> Float64\n\n\nGet Source X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_active_power-Tuple{Source}","page":"Source","title":"PowerSystems.get_active_power","text":"get_active_power(value::Source) -> Float64\n\n\nGet Source active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_available-Tuple{Source}","page":"Source","title":"PowerSystems.get_available","text":"get_available(value::Source) -> Bool\n\n\nGet Source available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_bus-Tuple{Source}","page":"Source","title":"PowerSystems.get_bus","text":"get_bus(value::Source) -> ACBus\n\n\nGet Source bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_dynamic_injector-Tuple{Source}","page":"Source","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::Source\n) -> Union{Nothing, DynamicInjection}\n\n\nGet Source dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_ext-Tuple{Source}","page":"Source","title":"PowerSystems.get_ext","text":"get_ext(value::Source) -> Dict{String, Any}\n\n\nGet Source ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_internal_angle-Tuple{Source}","page":"Source","title":"PowerSystems.get_internal_angle","text":"get_internal_angle(value::Source) -> Float64\n\n\nGet Source internal_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_internal_voltage-Tuple{Source}","page":"Source","title":"PowerSystems.get_internal_voltage","text":"get_internal_voltage(value::Source) -> Float64\n\n\nGet Source internal_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_reactive_power-Tuple{Source}","page":"Source","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::Source) -> Float64\n\n\nGet Source reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.get_services-Tuple{Source}","page":"Source","title":"PowerSystems.get_services","text":"get_services(value::Source) -> Vector{Service}\n\n\nGet Source services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_R_th!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_R_th!","text":"set_R_th!(value::Source, val) -> Any\n\n\nSet Source R_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_X_th!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_X_th!","text":"set_X_th!(value::Source, val) -> Any\n\n\nSet Source X_th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_active_power!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::Source, val) -> Any\n\n\nSet Source active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_available!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_available!","text":"set_available!(value::Source, val) -> Any\n\n\nSet Source available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_bus!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_bus!","text":"set_bus!(value::Source, val) -> Any\n\n\nSet Source bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_ext!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_ext!","text":"set_ext!(value::Source, val) -> Any\n\n\nSet Source ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_internal_angle!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_internal_angle!","text":"set_internal_angle!(value::Source, val) -> Any\n\n\nSet Source internal_angle.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_internal_voltage!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_internal_voltage!","text":"set_internal_voltage!(value::Source, val) -> Any\n\n\nSet Source internal_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_reactive_power!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::Source, val) -> Any\n\n\nSet Source reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Source/#PowerSystems.set_services!-Tuple{Source, Any}","page":"Source","title":"PowerSystems.set_services!","text":"set_services!(value::Source, val) -> Any\n\n\nSet Source services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#FixedAdmittance","page":"FixedAdmittance","title":"FixedAdmittance","text":"","category":"section"},{"location":"model_library/generated_FixedAdmittance/","page":"FixedAdmittance","title":"FixedAdmittance","text":"Modules = [PowerSystems]\nPages = [\"generated/FixedAdmittance.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.FixedAdmittance","page":"FixedAdmittance","title":"PowerSystems.FixedAdmittance","text":"mutable struct FixedAdmittance <: ElectricLoad\n name::String\n available::Bool\n bus::ACBus\n Y::Complex{Float64}\n dynamic_injector::Union{Nothing, DynamicInjection}\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nY::Complex{Float64}: System per-unit value\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection model for admittance\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FixedAdmittance/#InfrastructureSystems.get_name-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"InfrastructureSystems.get_name","text":"get_name(value::FixedAdmittance) -> String\n\n\nGet FixedAdmittance name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#InfrastructureSystems.get_time_series_container-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::FixedAdmittance\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet FixedAdmittance time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_Y-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_Y","text":"get_Y(value::FixedAdmittance) -> ComplexF64\n\n\nGet FixedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_available-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_available","text":"get_available(value::FixedAdmittance) -> Bool\n\n\nGet FixedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_bus-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_bus","text":"get_bus(value::FixedAdmittance) -> ACBus\n\n\nGet FixedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_dynamic_injector-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::FixedAdmittance\n) -> Union{Nothing, DynamicInjection}\n\n\nGet FixedAdmittance dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_ext-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_ext","text":"get_ext(value::FixedAdmittance) -> Dict{String, Any}\n\n\nGet FixedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.get_services-Tuple{FixedAdmittance}","page":"FixedAdmittance","title":"PowerSystems.get_services","text":"get_services(value::FixedAdmittance) -> Vector{Service}\n\n\nGet FixedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_Y!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_Y!","text":"set_Y!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance Y.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_available!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_available!","text":"set_available!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_bus!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_bus!","text":"set_bus!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_ext!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_ext!","text":"set_ext!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_services!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_services!","text":"set_services!(value::FixedAdmittance, val) -> Any\n\n\nSet FixedAdmittance services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FixedAdmittance/#PowerSystems.set_time_series_container!-Tuple{FixedAdmittance, Any}","page":"FixedAdmittance","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::FixedAdmittance,\n val\n) -> Any\n\n\nSet FixedAdmittance time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#InterconnectingConverter","page":"InterconnectingConverter","title":"InterconnectingConverter","text":"","category":"section"},{"location":"model_library/generated_InterconnectingConverter/","page":"InterconnectingConverter","title":"InterconnectingConverter","text":"Modules = [PowerSystems]\nPages = [\"generated/InterconnectingConverter.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.InterconnectingConverter","page":"InterconnectingConverter","title":"PowerSystems.InterconnectingConverter","text":"mutable struct InterconnectingConverter <: StaticInjection\n name::String\n available::Bool\n bus::ACBus\n dc_bus::DCBus\n active_power::Float64\n rating::Float64\n active_power_limits::MinMax\n base_power::Float64\n operation_cost::OperationalCost\n efficiency::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nInterconnecting Power Converter (IPC) for transforming power from an ACBus to a DCBus\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\ndc_bus::DCBus\nactive_power::Float64: Active Power on the DCSide, validation range: active_power_limits, action if invalid: warn\nrating::Float64: Thermal limited MVA Power Output of the converter. <= Capacity, validation range: (0, nothing), action if invalid: error\nactive_power_limits::MinMax\nbase_power::Float64: Base power of the converter in MVA, validation range: (0, nothing), action if invalid: warn\noperation_cost::OperationalCost: Operation Cost of Generation OperationalCost\nefficiency::Float64: Conversion efficiency from AC Power to DC Power\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InterconnectingConverter/#InfrastructureSystems.get_name-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"InfrastructureSystems.get_name","text":"get_name(value::InterconnectingConverter) -> String\n\n\nGet InterconnectingConverter name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#InfrastructureSystems.get_time_series_container-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::InterconnectingConverter\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet InterconnectingConverter time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_active_power-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_active_power","text":"get_active_power(value::InterconnectingConverter) -> Any\n\n\nGet InterconnectingConverter active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_active_power_limits-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::InterconnectingConverter\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet InterconnectingConverter active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_available-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_available","text":"get_available(value::InterconnectingConverter) -> Bool\n\n\nGet InterconnectingConverter available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_base_power-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_base_power","text":"get_base_power(value::InterconnectingConverter) -> Float64\n\n\nGet InterconnectingConverter base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_bus-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_bus","text":"get_bus(value::InterconnectingConverter) -> ACBus\n\n\nGet InterconnectingConverter bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_dc_bus-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_dc_bus","text":"get_dc_bus(value::InterconnectingConverter) -> DCBus\n\n\nGet InterconnectingConverter dc_bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_dynamic_injector-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::InterconnectingConverter\n) -> Union{Nothing, DynamicInjection}\n\n\nGet InterconnectingConverter dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_efficiency-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_efficiency","text":"get_efficiency(value::InterconnectingConverter) -> Float64\n\n\nGet InterconnectingConverter efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_ext-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_ext","text":"get_ext(\n value::InterconnectingConverter\n) -> Dict{String, Any}\n\n\nGet InterconnectingConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_operation_cost-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::InterconnectingConverter\n) -> PowerSystems.OperationalCost\n\n\nGet InterconnectingConverter operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_rating-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_rating","text":"get_rating(value::InterconnectingConverter) -> Any\n\n\nGet InterconnectingConverter rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.get_services-Tuple{InterconnectingConverter}","page":"InterconnectingConverter","title":"PowerSystems.get_services","text":"get_services(\n value::InterconnectingConverter\n) -> Vector{Service}\n\n\nGet InterconnectingConverter services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_active_power!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_active_power!","text":"set_active_power!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_active_power_limits!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_available!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_available!","text":"set_available!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_base_power!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_bus!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_bus!","text":"set_bus!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_dc_bus!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_dc_bus!","text":"set_dc_bus!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter dc_bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_efficiency!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_efficiency!","text":"set_efficiency!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_ext!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_ext!","text":"set_ext!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_operation_cost!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_rating!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_rating!","text":"set_rating!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_services!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_services!","text":"set_services!(value::InterconnectingConverter, val) -> Any\n\n\nSet InterconnectingConverter services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InterconnectingConverter/#PowerSystems.set_time_series_container!-Tuple{InterconnectingConverter, Any}","page":"InterconnectingConverter","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::InterconnectingConverter,\n val\n) -> Any\n\n\nSet InterconnectingConverter time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#TModelHVDCLine","page":"TModelHVDCLine","title":"TModelHVDCLine","text":"","category":"section"},{"location":"model_library/generated_TModelHVDCLine/","page":"TModelHVDCLine","title":"TModelHVDCLine","text":"Modules = [PowerSystems]\nPages = [\"generated/TModelHVDCLine.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.TModelHVDCLine","page":"TModelHVDCLine","title":"PowerSystems.TModelHVDCLine","text":"mutable struct TModelHVDCLine <: DCBranch\n name::String\n available::Bool\n active_power_flow::Float64\n arc::Arc\n r::Float64\n l::Float64\n c::Float64\n active_power_limits_from::MinMax\n active_power_limits_to::MinMax\n services::Vector{Service}\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\na HVDC T-Model DC line.\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow::Float64\narc::Arc\nr::Float64: Series Resistance system per-unit value\nl::Float64: Series Inductance system per-unit value\nc::Float64: Shunt capacitance system per-unit value\nactive_power_limits_from::MinMax\nactive_power_limits_to::MinMax\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TModelHVDCLine/#InfrastructureSystems.get_name-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"InfrastructureSystems.get_name","text":"get_name(value::TModelHVDCLine) -> String\n\n\nGet TModelHVDCLine name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_active_power_flow-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_active_power_flow","text":"get_active_power_flow(value::TModelHVDCLine) -> Any\n\n\nGet TModelHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_active_power_limits_from-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_active_power_limits_from","text":"get_active_power_limits_from(\n value::TModelHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TModelHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_active_power_limits_to-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_active_power_limits_to","text":"get_active_power_limits_to(\n value::TModelHVDCLine\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TModelHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_arc-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_arc","text":"get_arc(value::TModelHVDCLine) -> Arc\n\n\nGet TModelHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_available-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_available","text":"get_available(value::TModelHVDCLine) -> Bool\n\n\nGet TModelHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_c-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_c","text":"get_c(value::TModelHVDCLine) -> Float64\n\n\nGet TModelHVDCLine c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_ext-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_ext","text":"get_ext(value::TModelHVDCLine) -> Dict{String, Any}\n\n\nGet TModelHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_l-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_l","text":"get_l(value::TModelHVDCLine) -> Float64\n\n\nGet TModelHVDCLine l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_r-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_r","text":"get_r(value::TModelHVDCLine) -> Float64\n\n\nGet TModelHVDCLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.get_services-Tuple{TModelHVDCLine}","page":"TModelHVDCLine","title":"PowerSystems.get_services","text":"get_services(value::TModelHVDCLine) -> Vector{Service}\n\n\nGet TModelHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_active_power_flow!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_active_power_flow!","text":"set_active_power_flow!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine active_power_flow.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_active_power_limits_from!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_active_power_limits_from!","text":"set_active_power_limits_from!(\n value::TModelHVDCLine,\n val\n) -> Any\n\n\nSet TModelHVDCLine active_power_limits_from.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_active_power_limits_to!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_active_power_limits_to!","text":"set_active_power_limits_to!(\n value::TModelHVDCLine,\n val\n) -> Any\n\n\nSet TModelHVDCLine active_power_limits_to.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_arc!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_arc!","text":"set_arc!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine arc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_available!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_available!","text":"set_available!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_c!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_c!","text":"set_c!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine c.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_ext!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_ext!","text":"set_ext!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_l!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_l!","text":"set_l!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine l.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_r!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_r!","text":"set_r!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine r.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TModelHVDCLine/#PowerSystems.set_services!-Tuple{TModelHVDCLine, Any}","page":"TModelHVDCLine","title":"PowerSystems.set_services!","text":"set_services!(value::TModelHVDCLine, val) -> Any\n\n\nSet TModelHVDCLine services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#GenericBattery","page":"GenericBattery","title":"GenericBattery","text":"","category":"section"},{"location":"model_library/generated_GenericBattery/","page":"GenericBattery","title":"GenericBattery","text":"Modules = [PowerSystems]\nPages = [\"generated/GenericBattery.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_GenericBattery/#PowerSystems.GenericBattery","page":"GenericBattery","title":"PowerSystems.GenericBattery","text":"mutable struct GenericBattery <: Storage\n name::String\n available::Bool\n bus::ACBus\n prime_mover_type::PrimeMovers\n initial_energy::Float64\n state_of_charge_limits::MinMax\n rating::Float64\n active_power::Float64\n input_active_power_limits::MinMax\n output_active_power_limits::MinMax\n efficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}\n reactive_power::Float64\n reactive_power_limits::Union{Nothing, MinMax}\n base_power::Float64\n operation_cost::Union{StorageManagementCost, MarketBidCost}\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData structure for a generic battery\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\ninitial_energy::Float64: State of Charge of the Battery p.u.-hr, validation range: (0, nothing), action if invalid: error\nstate_of_charge_limits::MinMax: Maximum and Minimum storage capacity in p.u.-hr, validation range: (0, nothing), action if invalid: error\nrating::Float64\nactive_power::Float64\ninput_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error\noutput_active_power_limits::MinMax, validation range: (0, nothing), action if invalid: error\nefficiency::NamedTuple{(:in, :out), Tuple{Float64, Float64}}, validation range: (0, 1), action if invalid: warn\nreactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn\nreactive_power_limits::Union{Nothing, MinMax}\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\noperation_cost::Union{StorageManagementCost, MarketBidCost}\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_GenericBattery/#InfrastructureSystems.get_name-Tuple{GenericBattery}","page":"GenericBattery","title":"InfrastructureSystems.get_name","text":"get_name(value::GenericBattery) -> String\n\n\nGet GenericBattery name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#InfrastructureSystems.get_time_series_container-Tuple{GenericBattery}","page":"GenericBattery","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::GenericBattery\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet GenericBattery time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_active_power-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_active_power","text":"get_active_power(value::GenericBattery) -> Any\n\n\nGet GenericBattery active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_available-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_available","text":"get_available(value::GenericBattery) -> Bool\n\n\nGet GenericBattery available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_base_power-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_base_power","text":"get_base_power(value::GenericBattery) -> Float64\n\n\nGet GenericBattery base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_bus-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_bus","text":"get_bus(value::GenericBattery) -> ACBus\n\n\nGet GenericBattery bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_dynamic_injector-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::GenericBattery\n) -> Union{Nothing, DynamicInjection}\n\n\nGet GenericBattery dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_efficiency-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_efficiency","text":"get_efficiency(\n value::GenericBattery\n) -> @NamedTuple{in::Float64, out::Float64}\n\n\nGet GenericBattery efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_ext-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_ext","text":"get_ext(value::GenericBattery) -> Dict{String, Any}\n\n\nGet GenericBattery ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_initial_energy-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_initial_energy","text":"get_initial_energy(value::GenericBattery) -> Any\n\n\nGet GenericBattery initial_energy.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_input_active_power_limits-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_input_active_power_limits","text":"get_input_active_power_limits(\n value::GenericBattery\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet GenericBattery input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_operation_cost-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::GenericBattery\n) -> Union{MarketBidCost, StorageManagementCost}\n\n\nGet GenericBattery operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_output_active_power_limits-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_output_active_power_limits","text":"get_output_active_power_limits(\n value::GenericBattery\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet GenericBattery output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_prime_mover_type-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(value::GenericBattery) -> PrimeMovers\n\n\nGet GenericBattery prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_rating-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_rating","text":"get_rating(value::GenericBattery) -> Any\n\n\nGet GenericBattery rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_reactive_power-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::GenericBattery) -> Any\n\n\nGet GenericBattery reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_reactive_power_limits-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::GenericBattery\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet GenericBattery reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_services-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_services","text":"get_services(value::GenericBattery) -> Vector{Service}\n\n\nGet GenericBattery services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.get_state_of_charge_limits-Tuple{GenericBattery}","page":"GenericBattery","title":"PowerSystems.get_state_of_charge_limits","text":"get_state_of_charge_limits(\n value::GenericBattery\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet GenericBattery state_of_charge_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_active_power!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_available!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_available!","text":"set_available!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_base_power!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_bus!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_bus!","text":"set_bus!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_efficiency!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_efficiency!","text":"set_efficiency!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery efficiency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_ext!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_ext!","text":"set_ext!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_initial_energy!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_initial_energy!","text":"set_initial_energy!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery initial_energy.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_input_active_power_limits!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_input_active_power_limits!","text":"set_input_active_power_limits!(\n value::GenericBattery,\n val\n) -> Any\n\n\nSet GenericBattery input_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_operation_cost!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_output_active_power_limits!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_output_active_power_limits!","text":"set_output_active_power_limits!(\n value::GenericBattery,\n val\n) -> Any\n\n\nSet GenericBattery output_active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_prime_mover_type!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_rating!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_rating!","text":"set_rating!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_reactive_power!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_reactive_power_limits!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::GenericBattery,\n val\n) -> Any\n\n\nSet GenericBattery reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_services!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_services!","text":"set_services!(value::GenericBattery, val) -> Any\n\n\nSet GenericBattery services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_state_of_charge_limits!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_state_of_charge_limits!","text":"set_state_of_charge_limits!(\n value::GenericBattery,\n val\n) -> Any\n\n\nSet GenericBattery state_of_charge_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_GenericBattery/#PowerSystems.set_time_series_container!-Tuple{GenericBattery, Any}","page":"GenericBattery","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::GenericBattery,\n val\n) -> Any\n\n\nSet GenericBattery time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"modeler_guide/example_dynamic_data/#Dynamic-Devices","page":"Dynamic Devices","title":"Dynamic Devices","text":"","category":"section"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Each sub-type is composed of the corresponding dynamic components that define the model. As a result, it is possible to flexibly define dynamic data models and methods according to the analysis requirements. DynamicInjection components use parametric a parametric type pattern to materialize the full specification of the dynamic injection model with parameters. This design enable the use of parametric methods to specify the mathematical model of the dynamic components separately.","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"DynamicInjection components also implement some additional information useful for the modeling like the usual states assumed by the model and the number. These values are derived from the documentation associated with the model, for instance PSS/e models provide parameters, states and variables. Although PowerSystems.jl doesn't assume a specific mathematical model for the components, the default values for these parameters are derived directly from the data model source.","category":"page"},{"location":"modeler_guide/example_dynamic_data/#Dynamic-Generator","page":"Dynamic Devices","title":"Dynamic Generator","text":"","category":"section"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Each generator is a data structure that is defined by the following components:","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Machine: That defines the stator electro-magnetic dynamics.\nShaft: That describes the rotor electro-mechanical dynamics.\nAutomatic Voltage Regulator: Electromotive dynamics to model an AVR controller.\nPower System Stabilizer: Control dynamics to define an stabilization signal for the AVR.\nPrime Mover and Turbine Governor: Thermo-mechanical dynamics and associated controllers.","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"Each inverter is a data structure that is defined by the following components:","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"DC Source: Defines the dynamics of the DC side of the converter.\nFrequency Estimator: That describes how the frequency of the grid can be estimated using the grid voltages. Typically a phase-locked loop (PLL).\nOuter Loop Control: That describes the active and reactive power control dynamics.\nInner Loop Control: That can describe virtual impedance, voltage control and current control dynamics.\nConverter: That describes the dynamics of the pulse width modulation (PWM) or space vector modulation (SVM).\nFilter: Used to connect the converter output to the grid.","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"","category":"page"},{"location":"modeler_guide/example_dynamic_data/","page":"Dynamic Devices","title":"Dynamic Devices","text":"⠀","category":"page"},{"location":"tutorials/parse_tabular_data/#Parsing-Tabular-Data","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"","category":"section"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"Originally Contributed by: Clayton Barrows","category":"page"},{"location":"tutorials/parse_tabular_data/#Introduction","page":"Parsing Tabular Data","title":"Introduction","text":"","category":"section"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"An example of how to parse tabular files (CSV) files similar to the format established in the RTS-GMLC and create a System using PowerSystems.jl","category":"page"},{"location":"tutorials/parse_tabular_data/#Dependencies","page":"Parsing Tabular Data","title":"Dependencies","text":"","category":"section"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"using PowerSystems\nusing TimeSeries\nusing Dates","category":"page"},{"location":"tutorials/parse_tabular_data/#Fetch-Data","page":"Parsing Tabular Data","title":"Fetch Data","text":"","category":"section"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"PowerSystems.jl links to some test data that is suitable for this example. Let's get the test data using Artifacts. You can find the repository of the data of the GMLC system here:","category":"page"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"using PowerSystemCaseBuilder #hide\nDATA_DIR = PowerSystemCaseBuilder.DATA_DIR #hide\n# include download methods\nRTS_GMLC_DIR = joinpath(DATA_DIR, \"RTS_GMLC\")","category":"page"},{"location":"tutorials/parse_tabular_data/#The-tabular-data-format-relies-on-a-folder-containing-*.csv-files-and-a-user_descriptors.yaml-file","page":"Parsing Tabular Data","title":"The tabular data format relies on a folder containing *.csv files and a user_descriptors.yaml file","text":"","category":"section"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"First, we'll read the tabular data","category":"page"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"rawsys = PowerSystems.PowerSystemTableData(\n RTS_GMLC_DIR,\n 100.0,\n joinpath(RTS_GMLC_DIR, \"user_descriptors.yaml\"),\n timeseries_metadata_file = joinpath(RTS_GMLC_DIR, \"timeseries_pointers.json\"),\n generator_mapping_file = joinpath(RTS_GMLC_DIR, \"generator_mapping_multi_start.yaml\"),\n)","category":"page"},{"location":"tutorials/parse_tabular_data/#Create-a-System","page":"Parsing Tabular Data","title":"Create a System","text":"","category":"section"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"Next, we'll create a System from the rawsys data. Since a System is predicated on a time series resolution and the rawsys data includes both 5-minute and 1-hour resolution time series, we also need to specify which time series we want to include in the System. The time_series_resolution kwarg filters to only include time series with a matching resolution.","category":"page"},{"location":"tutorials/parse_tabular_data/","page":"Parsing Tabular Data","title":"Parsing Tabular Data","text":"sys = System(rawsys; time_series_resolution = Dates.Hour(1));\nhorizon = 24;\ninterval = Dates.Hour(24);\ntransform_single_time_series!(sys, horizon, interval);\nsys","category":"page"},{"location":"modeler_guide/type_structure/#type_structure","page":"Type Structure","title":"Type Structure","text":"","category":"section"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"The abstract hierarchy enables categorization of the devices by their operational characteristics and modeling requirements.","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"For instance, generation is classified by the distinctive data requirements for modeling in three categories: ThermalGen, RenewableGen, and HydroGen.","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"As a result of this design, developers can define model logic entirely based on abstract types and create generic code to support modeling technologies that are not yet implemented in the package.","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"PowerSystems.jl has a category Topology of topological components (e.g., ACBus, Arc), separate from the physical components.","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"The hierarchy also includes components absent in standard data models, such as services. The services category includes reserves, transfers and AGC. The power of PowerSystems.jl lies in providing the abstraction without an implicit mathematical representation of the component.","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"In this tutorial you can find a more detailed introduction to the type system and how to manipulate data.","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"","category":"page"},{"location":"modeler_guide/type_structure/","page":"Type Structure","title":"Type Structure","text":"⠀","category":"page"},{"location":"model_library/generated_AVR/#AVR","page":"AVR","title":"AVR","text":"","category":"section"},{"location":"model_library/generated_AVR/#AVRFixed","page":"AVR","title":"AVRFixed","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRFixed.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRFixed","page":"AVR","title":"PowerSystems.AVRFixed","text":"mutable struct AVRFixed <: AVR\n Vf::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a AVR that returns a fixed voltage to the rotor winding\n\nArguments\n\nVf::Float64: Fixed voltage field applied to the rotor winding, validation range: (0, nothing)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: Fixed AVR has no states\nn_states::Int: Fixed AVR has no states\nstates_types::Vector{StateTypes}: Fixed AVR has no states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRFixed) -> Float64\n\n\nGet AVRFixed V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vf-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_Vf","text":"get_Vf(value::AVRFixed) -> Float64\n\n\nGet AVRFixed Vf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRFixed) -> Dict{String, Any}\n\n\nGet AVRFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRFixed) -> Int64\n\n\nGet AVRFixed n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRFixed) -> Vector{Symbol}\n\n\nGet AVRFixed states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRFixed}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRFixed) -> Vector{StateTypes}\n\n\nGet AVRFixed states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vf!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_Vf!","text":"set_Vf!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed Vf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRFixed, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRFixed, val) -> Any\n\n\nSet AVRFixed states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVRSimple","page":"AVR","title":"AVRSimple","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRSimple.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRSimple","page":"AVR","title":"PowerSystems.AVRSimple","text":"mutable struct AVRSimple <: AVR\n Kv::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a simple proportional AVR in the derivative of EMF i.e. an integrator controller on EMF\n\nArguments\n\nKv::Float64: Proportional Gain, validation range: (0, nothing)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVf: field voltage\n\nn_states::Int: Fixed AVR has 1 states\nstates_types::Vector{StateTypes}: Simple AVR has 1 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kv-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_Kv","text":"get_Kv(value::AVRSimple) -> Float64\n\n\nGet AVRSimple Kv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRSimple) -> Float64\n\n\nGet AVRSimple V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRSimple) -> Dict{String, Any}\n\n\nGet AVRSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRSimple) -> Int64\n\n\nGet AVRSimple n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRSimple) -> Vector{Symbol}\n\n\nGet AVRSimple states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRSimple}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRSimple) -> Vector{StateTypes}\n\n\nGet AVRSimple states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kv!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_Kv!","text":"set_Kv!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple Kv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRSimple, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRSimple, val) -> Any\n\n\nSet AVRSimple states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVRTypeI","page":"AVR","title":"AVRTypeI","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRTypeI.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRTypeI","page":"AVR","title":"PowerSystems.AVRTypeI","text":"mutable struct AVRTypeI <: AVR\n Ka::Float64\n Ke::Float64\n Kf::Float64\n Ta::Float64\n Te::Float64\n Tf::Float64\n Tr::Float64\n Va_lim::MinMax\n Ae::Float64\n Be::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of an Automatic Voltage Regulator Type I - Resembles IEEE Type DC1\n\nArguments\n\nKa::Float64: Amplifier Gain, validation range: (0, nothing)\nKe::Float64: Field circuit integral deviation, validation range: (0, nothing)\nKf::Float64: Stabilizer Gain in s * pu/pu, validation range: (0, nothing)\nTa::Float64: Amplifier Time Constant in s, validation range: (0, nothing)\nTe::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)\nTf::Float64: Stabilizer Time Constant in s, validation range: (0, nothing)\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)\nVa_lim::MinMax: Limits for pi controler (Va_min, Va_max)\nAe::Float64: 1st ceiling coefficient, validation range: (0, nothing)\nBe::Float64: 2nd ceiling coefficient, validation range: (0, nothing)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVf: Voltage field,\nVr1: Amplifier State,\nVr2: Stabilizing Feedback State,\nVm: Measured voltage\n\nn_states::Int: The AVR Type I has 4 states\nstates_types::Vector{StateTypes}: AVR Type I has 4 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ae-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ae","text":"get_Ae(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Be-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Be","text":"get_Be(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRTypeI) -> Float64\n\n\nGet AVRTypeI V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::AVRTypeI\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AVRTypeI Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRTypeI) -> Dict{String, Any}\n\n\nGet AVRTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRTypeI) -> Int64\n\n\nGet AVRTypeI n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRTypeI) -> Vector{Symbol}\n\n\nGet AVRTypeI states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRTypeI}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRTypeI) -> Vector{StateTypes}\n\n\nGet AVRTypeI states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ae!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ae!","text":"set_Ae!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Be!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Be!","text":"set_Be!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRTypeI, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRTypeI, val) -> Any\n\n\nSet AVRTypeI states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#AVRTypeII","page":"AVR","title":"AVRTypeII","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/AVRTypeII.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.AVRTypeII","page":"AVR","title":"PowerSystems.AVRTypeII","text":"mutable struct AVRTypeII <: AVR\n K0::Float64\n T1::Float64\n T2::Float64\n T3::Float64\n T4::Float64\n Te::Float64\n Tr::Float64\n Va_lim::MinMax\n Ae::Float64\n Be::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of an Automatic Voltage Regulator Type II - Typical static exciter model\n\nArguments\n\nK0::Float64: Regulator Gain, validation range: (0, nothing)\nT1::Float64: First Pole in s, validation range: (0, nothing)\nT2::Float64: First zero in s, validation range: (0, nothing)\nT3::Float64: First Pole in s, validation range: (0, nothing)\nT4::Float64: First zero in s, validation range: (0, nothing)\nTe::Float64: Field Circuit Time Constant in s, validation range: (0, nothing)\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing)\nVa_lim::MinMax: Limits for pi controler (Va_min, Va_max)\nAe::Float64: 1st ceiling coefficient, validation range: (0, nothing)\nBe::Float64: 2nd ceiling coefficient, validation range: (0, nothing)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVf: Voltage field,\nVr1: First Lead-Lag state,\nVr2: Second lead-lag state,\nVm: Measured voltage\n\nn_states::Int: AVR Type II has 4 states\nstates_types::Vector{StateTypes}: AVR Type II has 4 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ae-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Ae","text":"get_Ae(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Be-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Be","text":"get_Be(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K0-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_K0","text":"get_K0(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII K0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T1-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T1","text":"get_T1(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T2-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T2","text":"get_T2(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T3-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T3","text":"get_T3(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_T4-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_T4","text":"get_T4(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::AVRTypeII) -> Float64\n\n\nGet AVRTypeII V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::AVRTypeII\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet AVRTypeII Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::AVRTypeII) -> Dict{String, Any}\n\n\nGet AVRTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::AVRTypeII) -> Int64\n\n\nGet AVRTypeII n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::AVRTypeII) -> Vector{Symbol}\n\n\nGet AVRTypeII states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{AVRTypeII}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::AVRTypeII) -> Vector{StateTypes}\n\n\nGet AVRTypeII states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ae!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Ae!","text":"set_Ae!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Ae.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Be!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Be!","text":"set_Be!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Be.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K0!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_K0!","text":"set_K0!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII K0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T1!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T1!","text":"set_T1!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T2!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T2!","text":"set_T2!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T3!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T3!","text":"set_T3!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_T4!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_T4!","text":"set_T4!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII T4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{AVRTypeII, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::AVRTypeII, val) -> Any\n\n\nSet AVRTypeII states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESAC1A","page":"AVR","title":"ESAC1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESAC1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESAC1A","page":"AVR","title":"PowerSystems.ESAC1A","text":"mutable struct ESAC1A <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Te::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n Vr_lim::MinMax\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nThis excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. This model corresponds to ESAC1A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn\nKa::Float64: Regulator output gain, validation range: (0, 1000), action if invalid: warn\nTa::Float64: Regulator output time constant in s, validation range: (0, 10)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nTe::Float64: Exciter field time constant in s, validation range: (eps(), 2), action if invalid: error\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn\nTf::Float64: Rate feedback time constant, validation range: (eps(), 1.5), action if invalid: error\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn\nKe::Float64: Exciter field proportional constant, validation range: (0, 1), action if invalid: warn\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nVr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: ESAC1A has 5 states\nstates_types::Vector{StateTypes}: ESAC1A has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESAC1A) -> Tuple{Float64, Float64}\n\n\nGet ESAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESAC1A) -> Tuple{Float64, Float64}\n\n\nGet ESAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESAC1A) -> Float64\n\n\nGet ESAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESAC1A) -> Float64\n\n\nGet ESAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ESAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESAC1A) -> Dict{String, Any}\n\n\nGet ESAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESAC1A) -> Int64\n\n\nGet ESAC1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESAC1A\n) -> Tuple{Float64, Float64}\n\n\nGet ESAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESAC1A) -> Vector{Symbol}\n\n\nGet ESAC1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESAC1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESAC1A) -> Vector{StateTypes}\n\n\nGet ESAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESAC1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESAC1A, val) -> Any\n\n\nSet ESAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESAC6A","page":"AVR","title":"ESAC6A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESAC6A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESAC6A","page":"AVR","title":"PowerSystems.ESAC6A","text":"mutable struct ESAC6A <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Tk::Float64\n Tb::Float64\n Tc::Float64\n Va_lim::MinMax\n Vr_lim::MinMax\n Te::Float64\n VFE_lim::Float64\n Kh::Float64\n VH_max::Float64\n Th::Float64\n Tj::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified AC6A. Used to represent field-controlled alternator-rectifier excitation systems with system-supplied electronic voltage regulators. Parameters of IEEE Std 421.5 Type AC6A Excitacion System. ESAC6A in PSSE and PSLF.\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nKa::Float64: Regulator output gain, validation range: (0, 1000), action if invalid: warn\nTa::Float64: Regulator output lag time constant in s, validation range: (0, 10), action if invalid: warn\nTk::Float64: Voltage Regulator lead time constant, validation range: (0, 10), action if invalid: warn\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nVr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant, validation range: (eps(), 2), action if invalid: error\nVFE_lim::Float64: Exciter field current limiter reference, validation range: (-5, 20), action if invalid: warn\nKh::Float64: Exciter field current regulator feedback gain, validation range: (0, 100), action if invalid: warn\nVH_max::Float64: Exciter field current limiter maximum output, validation range: (0, 100), action if invalid: warn\nTh::Float64: Exciter field current limiter denominator (lag) time constant, validation range: (0, 1)\nTj::Float64: Exciter field current limiter numerator (lead) time constant, validation range: (0, 1), action if invalid: warn\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 2), action if invalid: warn\nKe::Float64: Exciter field proportional constant, validation range: (0, 2), action if invalid: warn\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: ESAC6A has 5 states\nstates_types::Vector{StateTypes}: ESAC6A has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESAC6A) -> Tuple{Float64, Float64}\n\n\nGet ESAC6A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kh-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Kh","text":"get_Kh(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESAC6A) -> Tuple{Float64, Float64}\n\n\nGet ESAC6A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Th-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Th","text":"get_Th(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tj-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tj","text":"get_Tj(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tj.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tk-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tk","text":"get_Tk(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tk.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESAC6A) -> Float64\n\n\nGet ESAC6A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VFE_lim-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_VFE_lim","text":"get_VFE_lim(value::ESAC6A) -> Float64\n\n\nGet ESAC6A VFE_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VH_max-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_VH_max","text":"get_VH_max(value::ESAC6A) -> Float64\n\n\nGet ESAC6A VH_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESAC6A) -> Float64\n\n\nGet ESAC6A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ESAC6A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC6A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESAC6A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESAC6A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESAC6A) -> Dict{String, Any}\n\n\nGet ESAC6A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESAC6A) -> Int64\n\n\nGet ESAC6A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESAC6A\n) -> Tuple{Float64, Float64}\n\n\nGet ESAC6A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESAC6A) -> Vector{Symbol}\n\n\nGet ESAC6A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESAC6A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESAC6A) -> Vector{StateTypes}\n\n\nGet ESAC6A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kh!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Kh!","text":"set_Kh!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Th!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Th!","text":"set_Th!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Th.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tj!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tj!","text":"set_Tj!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tj.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tk!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tk!","text":"set_Tk!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tk.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VFE_lim!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_VFE_lim!","text":"set_VFE_lim!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A VFE_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VH_max!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_VH_max!","text":"set_VH_max!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A VH_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESAC6A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESAC6A, val) -> Any\n\n\nSet ESAC6A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESDC1A","page":"AVR","title":"ESDC1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESDC1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESDC1A","page":"AVR","title":"PowerSystems.ESDC1A","text":"mutable struct ESDC1A <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Tb::Float64\n Tc::Float64\n Vr_lim::MinMax\n Ke::Float64\n Te::Float64\n Kf::Float64\n Tf::Float64\n switch::Int\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nSelf-excited shunt fields with the voltage regulator operating in a mode commonly termed buck-boost. Parameters of IEEE Std 421.5 Type DC1A Excitacion System. This model corresponds to ESDC1A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5), action if invalid: warn\nKa::Float64: Amplifier Gain, validation range: (10, 500), action if invalid: warn\nTa::Float64: Amplifier Time Constant in s, validation range: (0, 1), action if invalid: warn\nTb::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn\nTc::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKe::Float64: Exciter constant related to self-excited field, validation range: (0, nothing)\nTe::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1), action if invalid: error\nKf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3), action if invalid: error\nTf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing), action if invalid: error\nswitch::Int: Switch, validation range: (0, 1), action if invalid: error\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVt: Terminal Voltage,\nVr1: input lead lag,\nVr2: Regulator Output,\nVf: Exciter Output, \nVr3: Rate feedback integrator\n\nn_states::Int: The ESDC1A has 5 states\nstates_types::Vector{StateTypes}: ESDC1A has 5 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESDC1A) -> Tuple{Float64, Float64}\n\n\nGet ESDC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESDC1A) -> Tuple{Float64, Float64}\n\n\nGet ESDC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESDC1A) -> Float64\n\n\nGet ESDC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESDC1A) -> Float64\n\n\nGet ESDC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESDC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESDC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESDC1A) -> Dict{String, Any}\n\n\nGet ESDC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESDC1A) -> Int64\n\n\nGet ESDC1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESDC1A\n) -> Tuple{Float64, Float64}\n\n\nGet ESDC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESDC1A) -> Vector{Symbol}\n\n\nGet ESDC1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESDC1A) -> Vector{StateTypes}\n\n\nGet ESDC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{ESDC1A}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::ESDC1A) -> Int64\n\n\nGet ESDC1A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{ESDC1A, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::ESDC1A, val) -> Any\n\n\nSet ESDC1A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESDC2A","page":"AVR","title":"ESDC2A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESDC2A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESDC2A","page":"AVR","title":"PowerSystems.ESDC2A","text":"mutable struct ESDC2A <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Tb::Float64\n Tc::Float64\n Vr_lim::MinMax\n Ke::Float64\n Te::Float64\n Kf::Float64\n Tf::Float64\n switch::Int\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIs used to represent field-controlled dc commutator exciters with continuously acting voltage regulators having power supplies derived from the generator or auxiliaries bus. Parameters of IEEE Std 421.5 Type DC2A Excitacion System. This model corresponds to ESDC2A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5), action if invalid: warn\nKa::Float64: Amplifier Gain, validation range: (10, 500), action if invalid: warn\nTa::Float64: Amplifier Time Constant in s, validation range: (0, 1), action if invalid: warn\nTb::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn\nTc::Float64: Regulator input Time Constant in s, validation range: (0, nothing), action if invalid: warn\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKe::Float64: Exciter constant related to self-excited field, validation range: (-1, 1), action if invalid: warn\nTe::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 2), action if invalid: error\nKf::Float64: Excitation control system stabilizer gain, validation range: (0, 0.3), action if invalid: warn\nTf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5.0 <= Tf/Kf <= 15.0, validation range: (eps(), 1.5), action if invalid: error\nswitch::Int: Switch, validation range: (0, 1), action if invalid: error\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVt: Terminal Voltage,\nVr1: input lead lag,\nVr2: Regulator Output,\nVf: Exciter Output, \nVr3: Rate feedback integrator\n\nn_states::Int: The ESDC2A has 5 states\nstates_types::Vector{StateTypes}: ESDC2A has 5 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::ESDC2A) -> Tuple{Float64, Float64}\n\n\nGet ESDC2A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::ESDC2A) -> Tuple{Float64, Float64}\n\n\nGet ESDC2A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESDC2A) -> Float64\n\n\nGet ESDC2A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESDC2A) -> Float64\n\n\nGet ESDC2A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESDC2A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESDC2A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESDC2A) -> Dict{String, Any}\n\n\nGet ESDC2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESDC2A) -> Int64\n\n\nGet ESDC2A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::ESDC2A\n) -> Tuple{Float64, Float64}\n\n\nGet ESDC2A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESDC2A) -> Vector{Symbol}\n\n\nGet ESDC2A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESDC2A) -> Vector{StateTypes}\n\n\nGet ESDC2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{ESDC2A}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::ESDC2A) -> Int64\n\n\nGet ESDC2A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{ESDC2A, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::ESDC2A, val) -> Any\n\n\nSet ESDC2A switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESST1A","page":"AVR","title":"ESST1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESST1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESST1A","page":"AVR","title":"PowerSystems.ESST1A","text":"mutable struct ESST1A <: AVR\n UEL_flags::Int\n PSS_flags::Int\n Tr::Float64\n Vi_lim::Tuple{Float64, Float64}\n Tc::Float64\n Tb::Float64\n Tc1::Float64\n Tb1::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Vr_lim::MinMax\n Kc::Float64\n Kf::Float64\n Tf::Float64\n K_lr::Float64\n I_lr::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nThis excitation system supplies power through a transformer from the generator terminals and its regulated by a controlled rectifier (via thyristors). Parameters of IEEE Std 421.5 Type ST1A Excitacion System. ESST1A in PSSE and PSLF\n\nArguments\n\nUEL_flags::Int: Code input for Underexcitization limiter (UEL) entry. Not supported., validation range: (1, 3), action if invalid: warn\nPSS_flags::Int: Code input for Power System Stabilizer (PSS) or (VOS) entry., validation range: (1, 2)\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.1), action if invalid: warn\nVi_lim::Tuple{Float64, Float64}: Voltage error limits (regulator input) (Vimin, Vimax)\nTc::Float64: First regulator denominator (lead) time constant in s, validation range: (0, 10), action if invalid: warn\nTb::Float64: First regulator denominator (lag) time constant in s, validation range: (0, 20)\nTc1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 10), action if invalid: warn\nTb1::Float64: Second regulator denominator (lead) time constant in s, validation range: (0, 20), action if invalid: warn\nKa::Float64: Voltage regulator gain, validation range: (50, 1000), action if invalid: warn\nTa::Float64: Voltage regulator time constant in s, validation range: (0, 0.5), action if invalid: warn\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nVr_lim::MinMax: Limits for exciter output (Vr_min, Vr_max)\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 0.3), action if invalid: warn\nKf::Float64: Rate feedback gain, validation range: (0, 0.3), action if invalid: warn\nTf::Float64: Rate feedback time constant in s, validation range: (eps(), 1.5), action if invalid: error\nK_lr::Float64: Exciter output current limiter gain, validation range: (0, 5), action if invalid: warn\nI_lr::Float64: Exciter output current limit reference, validation range: (0, 5), action if invalid: warn\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: First Lead-lag state,\nVr2: Second lead-lag state,\nVa: Regulator output state,\nVr3: Feedback output state\n\nn_states::Int: ST1A has 5 states\nstates_types::Vector{StateTypes}: ST1A has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_I_lr-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_I_lr","text":"get_I_lr(value::ESST1A) -> Float64\n\n\nGet ESST1A I_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_lr-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_K_lr","text":"get_K_lr(value::ESST1A) -> Float64\n\n\nGet ESST1A K_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::ESST1A) -> Float64\n\n\nGet ESST1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESST1A) -> Float64\n\n\nGet ESST1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::ESST1A) -> Float64\n\n\nGet ESST1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_PSS_flags-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_PSS_flags","text":"get_PSS_flags(value::ESST1A) -> Int64\n\n\nGet ESST1A PSS_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESST1A) -> Float64\n\n\nGet ESST1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::ESST1A) -> Float64\n\n\nGet ESST1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb1-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tb1","text":"get_Tb1(value::ESST1A) -> Float64\n\n\nGet ESST1A Tb1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::ESST1A) -> Float64\n\n\nGet ESST1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc1-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tc1","text":"get_Tc1(value::ESST1A) -> Float64\n\n\nGet ESST1A Tc1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::ESST1A) -> Float64\n\n\nGet ESST1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESST1A) -> Float64\n\n\nGet ESST1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_UEL_flags-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_UEL_flags","text":"get_UEL_flags(value::ESST1A) -> Int64\n\n\nGet ESST1A UEL_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESST1A) -> Float64\n\n\nGet ESST1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::ESST1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vi_lim-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Vi_lim","text":"get_Vi_lim(value::ESST1A) -> Tuple{Float64, Float64}\n\n\nGet ESST1A Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESST1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESST1A) -> Dict{String, Any}\n\n\nGet ESST1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESST1A) -> Int64\n\n\nGet ESST1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESST1A) -> Vector{Symbol}\n\n\nGet ESST1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESST1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESST1A) -> Vector{StateTypes}\n\n\nGet ESST1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_I_lr!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_I_lr!","text":"set_I_lr!(value::ESST1A, val) -> Any\n\n\nSet ESST1A I_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_lr!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_K_lr!","text":"set_K_lr!(value::ESST1A, val) -> Any\n\n\nSet ESST1A K_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_PSS_flags!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_PSS_flags!","text":"set_PSS_flags!(value::ESST1A, val) -> Any\n\n\nSet ESST1A PSS_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb1!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tb1!","text":"set_Tb1!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tb1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc1!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tc1!","text":"set_Tc1!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tc1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_UEL_flags!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_UEL_flags!","text":"set_UEL_flags!(value::ESST1A, val) -> Any\n\n\nSet ESST1A UEL_flags.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESST1A, val) -> Any\n\n\nSet ESST1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vi_lim!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Vi_lim!","text":"set_Vi_lim!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESST1A, val) -> Any\n\n\nSet ESST1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESST1A, val) -> Any\n\n\nSet ESST1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESST1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESST1A, val) -> Any\n\n\nSet ESST1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#ESST4B","page":"AVR","title":"ESST4B","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/ESST4B.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.ESST4B","page":"AVR","title":"PowerSystems.ESST4B","text":"mutable struct ESST4B <: AVR\n Tr::Float64\n K_pr::Float64\n K_ir::Float64\n Vr_lim::MinMax\n Ta::Float64\n K_pm::Float64\n K_im::Float64\n Vm_lim::MinMax\n Kg::Float64\n Kp::Float64\n Ki::Float64\n VB_max::Float64\n Kc::Float64\n Xl::Float64\n θp::Float64\n V_ref::Float64\n θp_rad::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nIn these excitation systems, voltage (and also current in compounded systems) is transformed to an appropriate level. Rectifiers, either controlled or non-controlled, provide the necessary direct current for the generator field. Parameters of IEEE Std 421.5 Type ST4B Excitacion System. ESST4B in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nK_pr::Float64: Regulator propotional gain, validation range: (0, 75), action if invalid: warn\nK_ir::Float64: Regulator integral gain, validation range: (0, 75), action if invalid: warn\nVr_lim::MinMax: Voltage regulator limits (Vimin, Vimax)\nTa::Float64: Voltage regulator time constant in s, validation range: (0, 1), action if invalid: warn\nK_pm::Float64: Voltage regulator proportional gain output, validation range: (0, 1.2), action if invalid: warn\nK_im::Float64: Voltage regulator integral gain output, validation range: (0, 18), action if invalid: warn\nVm_lim::MinMax: Limits for inner loop output (Vm_min, Vm_max)\nKg::Float64: Feedback gain constant of the inner loop field regulator, validation range: (0, 1.1), action if invalid: warn\nKp::Float64: Potential circuit (voltage) gain coefficient, validation range: (0, 10), action if invalid: warn\nKi::Float64: Compound circuit (current) gain coefficient, validation range: (0, 1.1), action if invalid: warn\nVB_max::Float64: Maximum available exciter voltage, validation range: (1, 20), action if invalid: warn\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn\nXl::Float64: Reactance associated with potential source, validation range: (0, 0.5), action if invalid: warn\nθp::Float64: Potential circuit phase angle (degrees), validation range: (-90, 90), action if invalid: error\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nθp_rad::Float64: Potential circuit phase angle (radians)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVt: Sensed Terminal Voltage,\nVr1: Regulator Integrator,\nVr2: Regulator Output,\nVm: Output integrator\n\nn_states::Int: ST4B has 4 states\nstates_types::Vector{StateTypes}: ST4B has 4 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_im-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_im","text":"get_K_im(value::ESST4B) -> Float64\n\n\nGet ESST4B K_im.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_ir-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_ir","text":"get_K_ir(value::ESST4B) -> Float64\n\n\nGet ESST4B K_ir.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pm-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_pm","text":"get_K_pm(value::ESST4B) -> Float64\n\n\nGet ESST4B K_pm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K_pr-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_K_pr","text":"get_K_pr(value::ESST4B) -> Float64\n\n\nGet ESST4B K_pr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::ESST4B) -> Float64\n\n\nGet ESST4B Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kg-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Kg","text":"get_Kg(value::ESST4B) -> Float64\n\n\nGet ESST4B Kg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ki-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Ki","text":"get_Ki(value::ESST4B) -> Float64\n\n\nGet ESST4B Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kp-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Kp","text":"get_Kp(value::ESST4B) -> Float64\n\n\nGet ESST4B Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::ESST4B) -> Float64\n\n\nGet ESST4B Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::ESST4B) -> Float64\n\n\nGet ESST4B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_VB_max-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_VB_max","text":"get_VB_max(value::ESST4B) -> Float64\n\n\nGet ESST4B VB_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ESST4B) -> Float64\n\n\nGet ESST4B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vm_lim-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Vm_lim","text":"get_Vm_lim(\n value::ESST4B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST4B Vm_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::ESST4B\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet ESST4B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Xl-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_Xl","text":"get_Xl(value::ESST4B) -> Float64\n\n\nGet ESST4B Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::ESST4B) -> Dict{String, Any}\n\n\nGet ESST4B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::ESST4B) -> Int64\n\n\nGet ESST4B n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::ESST4B) -> Vector{Symbol}\n\n\nGet ESST4B states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::ESST4B) -> Vector{StateTypes}\n\n\nGet ESST4B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_θp-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_θp","text":"get_θp(value::ESST4B) -> Float64\n\n\nGet ESST4B θp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_θp_rad-Tuple{ESST4B}","page":"AVR","title":"PowerSystems.get_θp_rad","text":"get_θp_rad(value::ESST4B) -> Float64\n\n\nGet ESST4B θp_rad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_im!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_im!","text":"set_K_im!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_im.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_ir!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_ir!","text":"set_K_ir!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_ir.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pm!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_pm!","text":"set_K_pm!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_pm.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K_pr!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_K_pr!","text":"set_K_pr!(value::ESST4B, val) -> Any\n\n\nSet ESST4B K_pr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kg!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Kg!","text":"set_Kg!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Kg.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ki!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kp!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_VB_max!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_VB_max!","text":"set_VB_max!(value::ESST4B, val) -> Any\n\n\nSet ESST4B VB_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ESST4B, val) -> Any\n\n\nSet ESST4B V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vm_lim!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Vm_lim!","text":"set_Vm_lim!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Vm_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Xl!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_Xl!","text":"set_Xl!(value::ESST4B, val) -> Any\n\n\nSet ESST4B Xl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::ESST4B, val) -> Any\n\n\nSet ESST4B ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::ESST4B, val) -> Any\n\n\nSet ESST4B states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_θp!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_θp!","text":"set_θp!(value::ESST4B, val) -> Any\n\n\nSet ESST4B θp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_θp_rad!-Tuple{ESST4B, Any}","page":"AVR","title":"PowerSystems.set_θp_rad!","text":"set_θp_rad!(value::ESST4B, val) -> Any\n\n\nSet ESST4B θp_rad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXAC1","page":"AVR","title":"EXAC1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXAC1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXAC1","page":"AVR","title":"PowerSystems.EXAC1","text":"mutable struct EXAC1 <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Te::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A. EXAC1 in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output time constant in s, validation range: (0, 10), action if invalid: warn\nVr_lim::MinMax: Limits for regulator output (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant in s, validation range: (eps(), 2), action if invalid: error\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn\nTf::Float64: Rate feedback time constant, validation range: (eps(), 1.5), action if invalid: error\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1)\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn\nKe::Float64: Exciter field proportional constant, validation range: (0, 1), action if invalid: warn\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: EXAC1 has 5 states\nstates_types::Vector{StateTypes}: EXAC1 has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXAC1) -> Tuple{Float64, Float64}\n\n\nGet EXAC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXAC1) -> Float64\n\n\nGet EXAC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXAC1) -> Float64\n\n\nGet EXAC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::EXAC1) -> Float64\n\n\nGet EXAC1 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXAC1) -> Float64\n\n\nGet EXAC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXAC1) -> Float64\n\n\nGet EXAC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXAC1) -> Tuple{Float64, Float64}\n\n\nGet EXAC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXAC1) -> Float64\n\n\nGet EXAC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXAC1) -> Float64\n\n\nGet EXAC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXAC1) -> Float64\n\n\nGet EXAC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXAC1) -> Float64\n\n\nGet EXAC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXAC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXAC1) -> Dict{String, Any}\n\n\nGet EXAC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXAC1) -> Int64\n\n\nGet EXAC1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXAC1\n) -> Tuple{Float64, Float64}\n\n\nGet EXAC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXAC1) -> Vector{Symbol}\n\n\nGet EXAC1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXAC1}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXAC1) -> Vector{StateTypes}\n\n\nGet EXAC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXAC1, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXAC1, val) -> Any\n\n\nSet EXAC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXAC1A","page":"AVR","title":"EXAC1A","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXAC1A.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXAC1A","page":"AVR","title":"PowerSystems.EXAC1A","text":"mutable struct EXAC1A <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Te::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n Vr_lim::MinMax\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified ESAC1A. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC1A Excitacion System. EXAC1A in PSSE and PSLF\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn\nKa::Float64: Regulator output gain, validation range: (0, 1000), action if invalid: warn\nTa::Float64: Regulator output time constant in s, validation range: (0, 10)\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nTe::Float64: Exciter field time constant in s, validation range: (eps(), 2), action if invalid: error\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn\nTf::Float64: Rate feedback time constant, validation range: (eps(), 1.5), action if invalid: error\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn\nKe::Float64: Exciter field proportional constant, validation range: (0, 1)\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nVr_lim::MinMax: Limits for exciter field voltage: (Vr_min, Vr_max)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(x) = B(x - A)^2/x\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: EXAC1A has 5 states\nstates_types::Vector{StateTypes}: EXAC1A has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXAC1A) -> Tuple{Float64, Float64}\n\n\nGet EXAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXAC1A) -> Tuple{Float64, Float64}\n\n\nGet EXAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXAC1A) -> Float64\n\n\nGet EXAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXAC1A) -> Float64\n\n\nGet EXAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::EXAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXAC1A\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXAC1A) -> Dict{String, Any}\n\n\nGet EXAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXAC1A) -> Int64\n\n\nGet EXAC1A n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXAC1A\n) -> Tuple{Float64, Float64}\n\n\nGet EXAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXAC1A) -> Vector{Symbol}\n\n\nGet EXAC1A states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXAC1A}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXAC1A) -> Vector{StateTypes}\n\n\nGet EXAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXAC1A, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXAC1A, val) -> Any\n\n\nSet EXAC1A states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXAC2","page":"AVR","title":"EXAC2","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXAC2.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXAC2","page":"AVR","title":"PowerSystems.EXAC2","text":"mutable struct EXAC2 <: AVR\n Tr::Float64\n Tb::Float64\n Tc::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Kb::Float64\n Vr_lim::MinMax\n Te::Float64\n Kl::Float64\n Kh::Float64\n Kf::Float64\n Tf::Float64\n Kc::Float64\n Kd::Float64\n Ke::Float64\n V_lr::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nModified AC2. This excitation systems consists of an alternator main exciter feeding its output via non-controlled rectifiers. The exciter does not employ self-excitation, and the voltage regulator power is taken from a source that is not affected by external transients. Parameters of IEEE Std 421.5 Type AC2A Excitacion System. The alternator main exciter is used, feeding its output via non-controlled rectifiers. The Type AC2C model is similar to that of Type AC1C except for the inclusion of exciter time constant compensation and exciter field current limiting elements. EXAC2 in PSSE and PSLF.\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nTb::Float64: Regulator denominator (lag) time constant in s, validation range: (0, 20), action if invalid: warn\nTc::Float64: Regulator numerator (lead) time constant in s, validation range: (0, 20), action if invalid: warn\nKa::Float64: Regulator output gain, validation range: (0, 1000)\nTa::Float64: Regulator output time constant in s, validation range: (0, 10), action if invalid: warn\nVa_lim::MinMax: Limits for regulator output (Va_min, Va_max)\nKb::Float64: Second Stage regulator gain, validation range: (eps(), 500), action if invalid: error\nVr_lim::MinMax: Limits for exciter field voltage (Vr_min, Vr_max)\nTe::Float64: Exciter field time constant, validation range: (eps(), 2), action if invalid: error\nKl::Float64: Exciter field current limiter gain, validation range: (0, 1.1), action if invalid: warn\nKh::Float64: Exciter field current regulator feedback gain, validation range: (0, 1.1), action if invalid: warn\nKf::Float64: Rate feedback excitation system stabilizer gain, validation range: (0, 0.3), action if invalid: warn\nTf::Float64: Rate feedback time constant, validation range: (eps(), nothing), action if invalid: error\nKc::Float64: Rectifier loading factor proportional to commutating reactance, validation range: (0, 1), action if invalid: warn\nKd::Float64: Demagnetizing factor, function of exciter alternator reactances, validation range: (0, 1), action if invalid: warn\nKe::Float64: Exciter field proportional constant, validation range: (0, 1), action if invalid: warn\nV_lr::Float64: Maximum exciter field current, validation range: (0, nothing), action if invalid: warn\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: Lead-lag state,\nVr2: Regulator output state,\nVe: Integrator output state,\nVr3: Feedback output state\n\nn_states::Int: EXAC2 has 5 states\nstates_types::Vector{StateTypes}: EXAC2 has 5 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXAC2) -> Tuple{Float64, Float64}\n\n\nGet EXAC2 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXAC2) -> Float64\n\n\nGet EXAC2 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kb-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kb","text":"get_Kb(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kd-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kd","text":"get_Kd(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXAC2) -> Float64\n\n\nGet EXAC2 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kh-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kh","text":"get_Kh(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kl-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Kl","text":"get_Kl(value::EXAC2) -> Float64\n\n\nGet EXAC2 Kl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXAC2) -> Tuple{Float64, Float64}\n\n\nGet EXAC2 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXAC2) -> Float64\n\n\nGet EXAC2 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXAC2) -> Float64\n\n\nGet EXAC2 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXAC2) -> Float64\n\n\nGet EXAC2 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_lr-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_V_lr","text":"get_V_lr(value::EXAC2) -> Float64\n\n\nGet EXAC2 V_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXAC2) -> Float64\n\n\nGet EXAC2 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::EXAC2\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC2 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXAC2\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXAC2 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXAC2) -> Dict{String, Any}\n\n\nGet EXAC2 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXAC2) -> Int64\n\n\nGet EXAC2 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXAC2\n) -> Tuple{Float64, Float64}\n\n\nGet EXAC2 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXAC2) -> Vector{Symbol}\n\n\nGet EXAC2 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXAC2}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXAC2) -> Vector{StateTypes}\n\n\nGet EXAC2 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kb!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kb!","text":"set_Kb!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kd!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kd!","text":"set_Kd!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kh!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kh!","text":"set_Kh!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kh.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kl!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Kl!","text":"set_Kl!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Kl.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_lr!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_V_lr!","text":"set_V_lr!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 V_lr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXAC2, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXAC2, val) -> Any\n\n\nSet EXAC2 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXPIC1","page":"AVR","title":"EXPIC1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXPIC1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.EXPIC1","page":"AVR","title":"PowerSystems.EXPIC1","text":"mutable struct EXPIC1 <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Va_lim::MinMax\n Ta_2::Float64\n Ta_3::Float64\n Ta_4::Float64\n Vr_lim::MinMax\n Kf::Float64\n Tf_1::Float64\n Tf_2::Float64\n Efd_lim::MinMax\n Ke::Float64\n Te::Float64\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n Kp::Float64\n Ki::Float64\n Kc::Float64\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nGeneric Proportional/Integral Excitation System\n\nArguments\n\nTr::Float64: Regulator input filter time constant in s, validation range: (0, 0.5), action if invalid: warn\nKa::Float64: Voltage regulator gain, validation range: (1, 500), action if invalid: warn\nTa::Float64: Voltage regulator time constant in s, validation range: (0, 10), action if invalid: warn\nVa_lim::MinMax: Limits for pi controler (Vr_min, Vr_max)\nTa_2::Float64: Voltage regulator time constant in s, validation range: (0, nothing)\nTa_3::Float64: Voltage regulator time constant in s, validation range: (0, nothing), action if invalid: warn\nTa_4::Float64: Voltage regulator time constant in s, validation range: (0, nothing), action if invalid: warn\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKf::Float64: Rate feedback gain, validation range: (0, 0.3), action if invalid: warn\nTf_1::Float64: Rate Feedback time constant in s, validation range: (eps(), 15)\nTf_2::Float64: Rate Feedback time constant in s, validation range: (0, 5), action if invalid: warn\nEfd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)\nKe::Float64: Exciter constant, validation range: (0, 1), action if invalid: warn\nTe::Float64: Exciter time constant, validation range: (0, 2), action if invalid: warn\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nKp::Float64: Potential source gain, validation range: (0, 5), action if invalid: warn\nKi::Float64: current source gain, validation range: (0, 1.1)\nKc::Float64: Exciter regulation factor, validation range: (0, 2), action if invalid: warn\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed terminal voltage,\nVr1: First Lead-lag state,\nVr2: Second regulator lead-lag state,\nVr2: Third regulator lead-lag state \nVf: Exciter output \nVr3: First feedback integrator,\nVr4: second feedback integrator\n\nn_states::Int: EXPIC1 has 6 states\nstates_types::Vector{StateTypes}: EXPIC has 6 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::EXPIC1) -> Tuple{Float64, Float64}\n\n\nGet EXPIC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Efd_lim-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Efd_lim","text":"get_Efd_lim(\n value::EXPIC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXPIC1 Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ki-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ki","text":"get_Ki(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kp-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Kp","text":"get_Kp(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::EXPIC1) -> Tuple{Float64, Float64}\n\n\nGet EXPIC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_2-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta_2","text":"get_Ta_2(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_3-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta_3","text":"get_Ta_3(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta_3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_4-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Ta_4","text":"get_Ta_4(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Ta_4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf_1-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Tf_1","text":"get_Tf_1(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Tf_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf_2-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Tf_2","text":"get_Tf_2(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Tf_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::EXPIC1) -> Float64\n\n\nGet EXPIC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Va_lim-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Va_lim","text":"get_Va_lim(\n value::EXPIC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXPIC1 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::EXPIC1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXPIC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::EXPIC1) -> Dict{String, Any}\n\n\nGet EXPIC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::EXPIC1) -> Int64\n\n\nGet EXPIC1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::EXPIC1\n) -> Tuple{Float64, Float64}\n\n\nGet EXPIC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::EXPIC1) -> Vector{Symbol}\n\n\nGet EXPIC1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{EXPIC1}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::EXPIC1) -> Vector{StateTypes}\n\n\nGet EXPIC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Efd_lim!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Efd_lim!","text":"set_Efd_lim!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ki!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ki!","text":"set_Ki!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ki.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kp!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Kp!","text":"set_Kp!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Kp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_2!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta_2!","text":"set_Ta_2!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_3!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta_3!","text":"set_Ta_3!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta_3.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_4!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Ta_4!","text":"set_Ta_4!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Ta_4.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf_1!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Tf_1!","text":"set_Tf_1!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Tf_1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf_2!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Tf_2!","text":"set_Tf_2!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Tf_2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Va_lim!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Va_lim!","text":"set_Va_lim!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Va_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{EXPIC1, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::EXPIC1, val) -> Any\n\n\nSet EXPIC1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#IEEET1","page":"AVR","title":"IEEET1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/IEEET1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.IEEET1","page":"AVR","title":"PowerSystems.IEEET1","text":"mutable struct IEEET1 <: AVR\n Tr::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Ke::Float64\n Te::Float64\n Kf::Float64\n Tf::Float64\n switch::Int\n E_sat::Tuple{Float64, Float64}\n Se::Tuple{Float64, Float64}\n V_ref::Float64\n saturation_coeffs::Tuple{Float64, Float64}\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\n1968 IEEE type 1 excitation system model\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, 0.5), action if invalid: warn\nKa::Float64: Amplifier Gain, validation range: (10, 500), action if invalid: warn\nTa::Float64: Amplifier Time Constant in s, validation range: (0, 1), action if invalid: warn\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vimin, Vimax)\nKe::Float64: Exciter constant related to self-excited field, validation range: (-1, 1)\nTe::Float64: Exciter time constant, integration rate associated with exciter control, validation range: (eps(), 1), action if invalid: error\nKf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3), action if invalid: warn\nTf::Float64: Excitation control system stabilizer time constant. Appropiate Data: 5 <= Tf/Kf <= 15, validation range: (eps(), nothing), action if invalid: error\nswitch::Int: Switch, validation range: (0, 1), action if invalid: error\nE_sat::Tuple{Float64, Float64}: Exciter output voltage for saturation factor: (E1, E2)\nSe::Tuple{Float64, Float64}: Exciter saturation factor at exciter output voltage: (Se(E1), Se(E2))\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\nsaturation_coeffs::Tuple{Float64, Float64}: Coefficients (A,B) of the function: Se(V) = B(V - A)^2/V\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVt: Terminal Voltage,\nVr: Regulator Output,\nVf: Exciter Output, \nVr3: Rate feedback integrator\n\nn_states::Int: The IEEET1 has 4 states\nstates_types::Vector{StateTypes}: IEEET1 I has 4 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_sat-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_E_sat","text":"get_E_sat(value::IEEET1) -> Tuple{Float64, Float64}\n\n\nGet IEEET1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::IEEET1) -> Float64\n\n\nGet IEEET1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ke-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Ke","text":"get_Ke(value::IEEET1) -> Float64\n\n\nGet IEEET1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::IEEET1) -> Float64\n\n\nGet IEEET1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Se-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Se","text":"get_Se(value::IEEET1) -> Tuple{Float64, Float64}\n\n\nGet IEEET1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::IEEET1) -> Float64\n\n\nGet IEEET1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::IEEET1) -> Float64\n\n\nGet IEEET1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::IEEET1) -> Float64\n\n\nGet IEEET1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::IEEET1) -> Float64\n\n\nGet IEEET1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::IEEET1) -> Float64\n\n\nGet IEEET1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::IEEET1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet IEEET1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::IEEET1) -> Dict{String, Any}\n\n\nGet IEEET1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::IEEET1) -> Int64\n\n\nGet IEEET1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_saturation_coeffs-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_saturation_coeffs","text":"get_saturation_coeffs(\n value::IEEET1\n) -> Tuple{Float64, Float64}\n\n\nGet IEEET1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::IEEET1) -> Vector{Symbol}\n\n\nGet IEEET1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::IEEET1) -> Vector{StateTypes}\n\n\nGet IEEET1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{IEEET1}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::IEEET1) -> Int64\n\n\nGet IEEET1 switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_sat!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_E_sat!","text":"set_E_sat!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 E_sat.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ke!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Ke!","text":"set_Ke!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Ke.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Se!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Se!","text":"set_Se!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Se.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_saturation_coeffs!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_saturation_coeffs!","text":"set_saturation_coeffs!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 saturation_coeffs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{IEEET1, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::IEEET1, val) -> Any\n\n\nSet IEEET1 switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EX4VSA","page":"AVR","title":"EX4VSA","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EX4VSA.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.get_E_lim-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_E_lim","text":"get_E_lim(\n value::PowerSystems.EX4VSA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EX4VSA E_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_G-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_G","text":"get_G(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA G.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Iflim-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Iflim","text":"get_Iflim(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Iflim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K1-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_K1","text":"get_K1(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K2-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_K2","text":"get_K2(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Oel_lim-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Oel_lim","text":"get_Oel_lim(\n value::PowerSystems.EX4VSA\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EX4VSA Oel_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Spar-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Spar","text":"get_Spar(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Spar.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_d-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_d","text":"get_d(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::PowerSystems.EX4VSA) -> Dict{String, Any}\n\n\nGet EX4VSA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_f-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_f","text":"get_f(value::PowerSystems.EX4VSA) -> Float64\n\n\nGet EX4VSA f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::PowerSystems.EX4VSA) -> Int64\n\n\nGet EX4VSA n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{PowerSystems.EX4VSA}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::PowerSystems.EX4VSA) -> Vector{Symbol}\n\n\nGet EX4VSA states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_E_lim!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_E_lim!","text":"set_E_lim!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA E_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_G!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_G!","text":"set_G!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA G.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Iflim!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Iflim!","text":"set_Iflim!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Iflim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K1!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_K1!","text":"set_K1!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA K1.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K2!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_K2!","text":"set_K2!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA K2.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Oel_lim!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Oel_lim!","text":"set_Oel_lim!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Oel_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Spar!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Spar!","text":"set_Spar!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Spar.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_d!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_d!","text":"set_d!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA d.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_f!-Tuple{PowerSystems.EX4VSA, Any}","page":"AVR","title":"PowerSystems.set_f!","text":"set_f!(value::PowerSystems.EX4VSA, val) -> Any\n\n\nSet EX4VSA f.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#EXST1","page":"AVR","title":"EXST1","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/EXST1.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ka-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Ka","text":"get_Ka(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kc-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Kc","text":"get_Kc(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Kf-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Kf","text":"get_Kf(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Ta","text":"get_Ta(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tc-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tc","text":"get_Tc(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tf-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tf","text":"get_Tf(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tr-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Tr","text":"get_Tr(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::PowerSystems.EXST1) -> Float64\n\n\nGet EXST1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vi_lim-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Vi_lim","text":"get_Vi_lim(\n value::PowerSystems.EXST1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXST1 Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Vr_lim-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_Vr_lim","text":"get_Vr_lim(\n value::PowerSystems.EXST1\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet EXST1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::PowerSystems.EXST1) -> Dict{String, Any}\n\n\nGet EXST1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::PowerSystems.EXST1) -> Int64\n\n\nGet EXST1 n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{PowerSystems.EXST1}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::PowerSystems.EXST1) -> Vector{Symbol}\n\n\nGet EXST1 states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ka!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Ka!","text":"set_Ka!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Ka.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kc!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Kc!","text":"set_Kc!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Kc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Kf!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Kf!","text":"set_Kf!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Kf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tc!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tc!","text":"set_Tc!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tf!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tf!","text":"set_Tf!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tr!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Tr!","text":"set_Tr!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Tr.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vi_lim!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Vi_lim!","text":"set_Vi_lim!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Vi_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Vr_lim!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_Vr_lim!","text":"set_Vr_lim!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 Vr_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{PowerSystems.EXST1, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerSystems.EXST1, val) -> Any\n\n\nSet EXST1 ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#SCRX","page":"AVR","title":"SCRX","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/SCRX.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.SCRX","page":"AVR","title":"PowerSystems.SCRX","text":"mutable struct SCRX <: AVR\n Ta_Tb::Float64\n Tb::Float64\n K::Float64\n Te::Float64\n Efd_lim::MinMax\n switch::Int\n rc_rfd::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nThis exciter is based on an IEEE type SCRX solid state exciter. The output field voltage is varied by a control system to maintain the system voltage at Vref. Please note that this exciter model has no initialization capabilities - this means that it will respond to whatever inputs it receives regardless of the state of the machine model.\n\nArguments\n\nTa_Tb::Float64: Lead input constant ratio, validation range: (0.05, 0.3), action if invalid: error\nTb::Float64: Lag input constant in s, validation range: (5, 20), action if invalid: error\nK::Float64: Regulator Gain, validation range: (20, 100), action if invalid: warn\nTe::Float64: Regulator Time Constant, validation range: (0, 1), action if invalid: warn\nEfd_lim::MinMax: Field Voltage regulator limits (regulator output) (Efdmin, Efdmax)\nswitch::Int: Switch, validation range: (0, 1), action if invalid: error\nrc_rfd::Float64: Field current capability. Set = 0 for negative current capability. Typical value 10, validation range: (0, 10), action if invalid: warn\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVr1: First integrator,\nVr2: Second integrator\n\nn_states::Int: SCRX has 2 states\nstates_types::Vector{StateTypes}: SCRX has 2 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_Efd_lim-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Efd_lim","text":"get_Efd_lim(\n value::SCRX\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet SCRX Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_K-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_K","text":"get_K(value::SCRX) -> Float64\n\n\nGet SCRX K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_Tb-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Ta_Tb","text":"get_Ta_Tb(value::SCRX) -> Float64\n\n\nGet SCRX Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::SCRX) -> Float64\n\n\nGet SCRX Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::SCRX) -> Float64\n\n\nGet SCRX Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::SCRX) -> Float64\n\n\nGet SCRX V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::SCRX) -> Dict{String, Any}\n\n\nGet SCRX ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::SCRX) -> Int64\n\n\nGet SCRX n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_rc_rfd-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_rc_rfd","text":"get_rc_rfd(value::SCRX) -> Float64\n\n\nGet SCRX rc_rfd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::SCRX) -> Vector{Symbol}\n\n\nGet SCRX states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::SCRX) -> Vector{StateTypes}\n\n\nGet SCRX states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_switch-Tuple{SCRX}","page":"AVR","title":"PowerSystems.get_switch","text":"get_switch(value::SCRX) -> Int64\n\n\nGet SCRX switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Efd_lim!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Efd_lim!","text":"set_Efd_lim!(value::SCRX, val) -> Any\n\n\nSet SCRX Efd_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_K!","text":"set_K!(value::SCRX, val) -> Any\n\n\nSet SCRX K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_Tb!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Ta_Tb!","text":"set_Ta_Tb!(value::SCRX, val) -> Any\n\n\nSet SCRX Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::SCRX, val) -> Any\n\n\nSet SCRX Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::SCRX, val) -> Any\n\n\nSet SCRX Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::SCRX, val) -> Any\n\n\nSet SCRX V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::SCRX, val) -> Any\n\n\nSet SCRX ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_rc_rfd!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_rc_rfd!","text":"set_rc_rfd!(value::SCRX, val) -> Any\n\n\nSet SCRX rc_rfd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::SCRX, val) -> Any\n\n\nSet SCRX states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_switch!-Tuple{SCRX, Any}","page":"AVR","title":"PowerSystems.set_switch!","text":"set_switch!(value::SCRX, val) -> Any\n\n\nSet SCRX switch.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#SEXS","page":"AVR","title":"SEXS","text":"","category":"section"},{"location":"model_library/generated_AVR/","page":"AVR","title":"AVR","text":"Modules = [PowerSystems]\nPages = [\"/SEXS.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_AVR/#PowerSystems.SEXS","page":"AVR","title":"PowerSystems.SEXS","text":"mutable struct SEXS <: AVR\n Ta_Tb::Float64\n Tb::Float64\n K::Float64\n Te::Float64\n V_lim::MinMax\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n states_types::Vector{StateTypes}\n internal::InfrastructureSystemsInternal\nend\n\nParameters of Simplified Excitation System Model - SEXS in PSSE\n\nArguments\n\nTa_Tb::Float64: Ratio of lead and lag time constants, validation range: (0, nothing)\nTb::Float64: Lag time constant, validation range: (eps(), nothing)\nK::Float64: Gain, validation range: (0, nothing)\nTe::Float64: Field circuit time constant in s, validation range: (0, nothing)\nV_lim::MinMax: Field voltage limits\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\tVf: Voltage field,\tVr: Lead-lag state\nn_states::Int: SEXS has 2 states\nstates_types::Vector{StateTypes}: SEXS has 2 differential states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_AVR/#PowerSystems.get_K-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_K","text":"get_K(value::SEXS) -> Float64\n\n\nGet SEXS K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Ta_Tb-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_Ta_Tb","text":"get_Ta_Tb(value::SEXS) -> Float64\n\n\nGet SEXS Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Tb-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_Tb","text":"get_Tb(value::SEXS) -> Float64\n\n\nGet SEXS Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_Te-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_Te","text":"get_Te(value::SEXS) -> Float64\n\n\nGet SEXS Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_lim-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_V_lim","text":"get_V_lim(\n value::SEXS\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet SEXS V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_V_ref-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::SEXS) -> Float64\n\n\nGet SEXS V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_ext-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_ext","text":"get_ext(value::SEXS) -> Dict{String, Any}\n\n\nGet SEXS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_n_states-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_n_states","text":"get_n_states(value::SEXS) -> Int64\n\n\nGet SEXS n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_states","text":"get_states(value::SEXS) -> Vector{Symbol}\n\n\nGet SEXS states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.get_states_types-Tuple{SEXS}","page":"AVR","title":"PowerSystems.get_states_types","text":"get_states_types(value::SEXS) -> Vector{StateTypes}\n\n\nGet SEXS states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_K!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_K!","text":"set_K!(value::SEXS, val) -> Any\n\n\nSet SEXS K.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Ta_Tb!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_Ta_Tb!","text":"set_Ta_Tb!(value::SEXS, val) -> Any\n\n\nSet SEXS Ta_Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Tb!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_Tb!","text":"set_Tb!(value::SEXS, val) -> Any\n\n\nSet SEXS Tb.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_Te!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_Te!","text":"set_Te!(value::SEXS, val) -> Any\n\n\nSet SEXS Te.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_lim!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_V_lim!","text":"set_V_lim!(value::SEXS, val) -> Any\n\n\nSet SEXS V_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_V_ref!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::SEXS, val) -> Any\n\n\nSet SEXS V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_ext!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_ext!","text":"set_ext!(value::SEXS, val) -> Any\n\n\nSet SEXS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_AVR/#PowerSystems.set_states_types!-Tuple{SEXS, Any}","page":"AVR","title":"PowerSystems.set_states_types!","text":"set_states_types!(value::SEXS, val) -> Any\n\n\nSet SEXS states_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#ThermalMultiStart","page":"ThermalMultiStart","title":"ThermalMultiStart","text":"","category":"section"},{"location":"model_library/generated_ThermalMultiStart/","page":"ThermalMultiStart","title":"ThermalMultiStart","text":"Modules = [PowerSystems]\nPages = [\"generated/ThermalMultiStart.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.ThermalMultiStart","page":"ThermalMultiStart","title":"PowerSystems.ThermalMultiStart","text":"mutable struct ThermalMultiStart <: ThermalGen\n name::String\n available::Bool\n status::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n rating::Float64\n prime_mover_type::PrimeMovers\n fuel::ThermalFuels\n active_power_limits::MinMax\n reactive_power_limits::Union{Nothing, MinMax}\n ramp_limits::Union{Nothing, UpDown}\n power_trajectory::Union{Nothing, StartUpShutDown}\n time_limits::Union{Nothing, UpDown}\n start_time_limits::Union{Nothing, NamedTuple{(:hot, :warm, :cold), Tuple{Float64, Float64, Float64}}}\n start_types::Int\n operation_cost::OperationalCost\n base_power::Float64\n services::Vector{Service}\n time_at_status::Float64\n must_run::Bool\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for thermal generation technologies.\n\nArguments\n\nname::String\navailable::Bool\nstatus::Bool\nbus::ACBus\nactive_power::Float64, validation range: active_power_limits, action if invalid: warn\nreactive_power::Float64, validation range: reactive_power_limits, action if invalid: warn\nrating::Float64: Thermal limited MVA Power Output of the unit. <= Capacity, validation range: (0, nothing), action if invalid: error\nprime_mover_type::PrimeMovers: Prime mover technology according to EIA 923\nfuel::ThermalFuels: Prime mover fuel according to EIA 923\nactive_power_limits::MinMax\nreactive_power_limits::Union{Nothing, MinMax}\nramp_limits::Union{Nothing, UpDown}, validation range: (0, nothing), action if invalid: error\npower_trajectory::Union{Nothing, StartUpShutDown}: Power trajectory the unit will take during the start-up and shut-down ramp process, validation range: (0, nothing), action if invalid: error\ntime_limits::Union{Nothing, UpDown}: Minimum up and Minimum down time limits in hours, validation range: (0, nothing), action if invalid: error\nstart_time_limits::Union{Nothing, NamedTuple{(:hot, :warm, :cold), Tuple{Float64, Float64, Float64}}}: Time limits for start-up based on turbine temperature in hours\nstart_types::Int: Number of start-up based on turbine temperature, validation range: (1, 3), action if invalid: error\noperation_cost::OperationalCost\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nservices::Vector{Service}: Services that this device contributes to\ntime_at_status::Float64\nmust_run::Bool\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_ThermalMultiStart/#InfrastructureSystems.get_name-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"InfrastructureSystems.get_name","text":"get_name(value::ThermalMultiStart) -> String\n\n\nGet ThermalMultiStart name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#InfrastructureSystems.get_time_series_container-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::ThermalMultiStart\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet ThermalMultiStart time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_active_power-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_active_power","text":"get_active_power(value::ThermalMultiStart) -> Any\n\n\nGet ThermalMultiStart active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_active_power_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_active_power_limits","text":"get_active_power_limits(\n value::ThermalMultiStart\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet ThermalMultiStart active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_available-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_available","text":"get_available(value::ThermalMultiStart) -> Bool\n\n\nGet ThermalMultiStart available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_base_power-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_base_power","text":"get_base_power(value::ThermalMultiStart) -> Float64\n\n\nGet ThermalMultiStart base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_bus-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_bus","text":"get_bus(value::ThermalMultiStart) -> ACBus\n\n\nGet ThermalMultiStart bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_dynamic_injector-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::ThermalMultiStart\n) -> Union{Nothing, DynamicInjection}\n\n\nGet ThermalMultiStart dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_ext-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_ext","text":"get_ext(value::ThermalMultiStart) -> Dict{String, Any}\n\n\nGet ThermalMultiStart ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_fuel-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_fuel","text":"get_fuel(value::ThermalMultiStart) -> ThermalFuels\n\n\nGet ThermalMultiStart fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_must_run-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_must_run","text":"get_must_run(value::ThermalMultiStart) -> Bool\n\n\nGet ThermalMultiStart must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_operation_cost-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_operation_cost","text":"get_operation_cost(\n value::ThermalMultiStart\n) -> PowerSystems.OperationalCost\n\n\nGet ThermalMultiStart operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_power_trajectory-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_power_trajectory","text":"get_power_trajectory(\n value::ThermalMultiStart\n) -> Union{Nothing, NamedTuple{(:startup, :shutdown), <:Tuple{Any, Any}}}\n\n\nGet ThermalMultiStart power_trajectory.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_prime_mover_type-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_prime_mover_type","text":"get_prime_mover_type(\n value::ThermalMultiStart\n) -> PrimeMovers\n\n\nGet ThermalMultiStart prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_ramp_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_ramp_limits","text":"get_ramp_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, NamedTuple{(:up, :down), <:Tuple{Any, Any}}}\n\n\nGet ThermalMultiStart ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_rating-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_rating","text":"get_rating(value::ThermalMultiStart) -> Any\n\n\nGet ThermalMultiStart rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_reactive_power-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(value::ThermalMultiStart) -> Any\n\n\nGet ThermalMultiStart reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_reactive_power_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_reactive_power_limits","text":"get_reactive_power_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, NamedTuple{(:min, :max), <:Tuple{Any, Any}}}\n\n\nGet ThermalMultiStart reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_services-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_services","text":"get_services(value::ThermalMultiStart) -> Vector{Service}\n\n\nGet ThermalMultiStart services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_start_time_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_start_time_limits","text":"get_start_time_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, @NamedTuple{hot::Float64, warm::Float64, cold::Float64}}\n\n\nGet ThermalMultiStart start_time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_start_types-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_start_types","text":"get_start_types(value::ThermalMultiStart) -> Int64\n\n\nGet ThermalMultiStart start_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_status-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_status","text":"get_status(value::ThermalMultiStart) -> Bool\n\n\nGet ThermalMultiStart status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_time_at_status-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_time_at_status","text":"get_time_at_status(value::ThermalMultiStart) -> Float64\n\n\nGet ThermalMultiStart time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.get_time_limits-Tuple{ThermalMultiStart}","page":"ThermalMultiStart","title":"PowerSystems.get_time_limits","text":"get_time_limits(\n value::ThermalMultiStart\n) -> Union{Nothing, @NamedTuple{up::Float64, down::Float64}}\n\n\nGet ThermalMultiStart time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_active_power!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_active_power!","text":"set_active_power!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_active_power_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_active_power_limits!","text":"set_active_power_limits!(\n value::ThermalMultiStart,\n val\n) -> Any\n\n\nSet ThermalMultiStart active_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_available!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_available!","text":"set_available!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_base_power!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_base_power!","text":"set_base_power!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_bus!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_bus!","text":"set_bus!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_ext!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_ext!","text":"set_ext!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_fuel!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_fuel!","text":"set_fuel!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart fuel.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_must_run!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_must_run!","text":"set_must_run!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart must_run.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_operation_cost!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_operation_cost!","text":"set_operation_cost!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart operation_cost.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_power_trajectory!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_power_trajectory!","text":"set_power_trajectory!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart power_trajectory.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_prime_mover_type!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_prime_mover_type!","text":"set_prime_mover_type!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart prime_mover_type.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_ramp_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_ramp_limits!","text":"set_ramp_limits!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart ramp_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_rating!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_rating!","text":"set_rating!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart rating.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_reactive_power!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_reactive_power_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_reactive_power_limits!","text":"set_reactive_power_limits!(\n value::ThermalMultiStart,\n val\n) -> Any\n\n\nSet ThermalMultiStart reactive_power_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_services!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_services!","text":"set_services!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_start_time_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_start_time_limits!","text":"set_start_time_limits!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart start_time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_start_types!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_start_types!","text":"set_start_types!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart start_types.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_status!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_status!","text":"set_status!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_time_at_status!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_time_at_status!","text":"set_time_at_status!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart time_at_status.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_time_limits!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_time_limits!","text":"set_time_limits!(value::ThermalMultiStart, val) -> Any\n\n\nSet ThermalMultiStart time_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ThermalMultiStart/#PowerSystems.set_time_series_container!-Tuple{ThermalMultiStart, Any}","page":"ThermalMultiStart","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::ThermalMultiStart,\n val\n) -> Any\n\n\nSet ThermalMultiStart time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"tutorials/basics/#Basics","page":"Introduction","title":"Basics","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"This tutorial shows some basic operations that you can do in PowerSystems.jl with your data.","category":"page"},{"location":"tutorials/basics/#Load-Packages","page":"Introduction","title":"Load Packages","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"using PowerSystems\n# For displaying subtypes\nimport TypeTree: tt\ndocs_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"utils\");\ninclude(joinpath(docs_dir, \"docs_utils.jl\")) #hide","category":"page"},{"location":"tutorials/basics/#Types-in-PowerSystems","page":"Introduction","title":"Types in PowerSystems","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"PowerSystems.jl provides a type hierarchy for specifying power system data. Data that describes infrastructure components is held in structs. For example, a Bus is defined as follows with fields for the parameters required to describe a bus (along with an internal field used by InfrastructureSystems to improve the efficiency of handling data).","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"print_struct(ACBus)","category":"page"},{"location":"tutorials/basics/#Type-Hierarchy","page":"Introduction","title":"Type Hierarchy","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"PowerSystems is intended to organize data containers by the behavior of the devices that the data represents. To that end, a type hierarchy has been defined with several levels of abstract types starting with InfrastructureSystemsType. There are a bunch of subtypes of InfrastructureSystemsType, but the important ones to know about are:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"Component: includes all elements of power system data\nTopology: includes non physical elements describing network connectivity\nService: includes descriptions of system requirements (other than energy balance)\nDevice: includes descriptions of all the physical devices in a power system\nInfrastructureSystems.DeviceParameter: includes structs that hold data describing the","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"dynamic, or economic capabilities of Device.","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"TimeSeriesData: Includes all time series types\nForecast: includes structs to define time series of forecasted data where multiple","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"values can represent each time stamp","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"StaticTimeSeries: includes structs to define time series with a single value for each","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"time stamp","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"System: collects all of the Components","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"The following code displays the hierarchy, but concrete types are omitted for brevity:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"print(join(tt(PowerSystems.IS.InfrastructureSystemsType, concrete = false), \"\"))","category":"page"},{"location":"tutorials/basics/#TimeSeriesData","page":"Introduction","title":"TimeSeriesData","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"Read the Docs! Every Component has a time_series_container::InfrastructureSystems.TimeSeriesContainer field. TimeSeriesData are used to hold time series information that describes the temporally dependent data of fields within the same struct. For example, the ThermalStandard.time_series_container field can describe other fields in the struct (available, activepower, reactivepower).","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"TimeSeriesDatas themselves can take the form of the following:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"print(join(tt(TimeSeriesData), \"\"))","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"In each case, the time series contains fields for scaling_factor_multiplier and data to identify the details of th Component field that the time series describes, and the time series data. For example: we commonly want to use a time series to describe the maximum active power capability of a renewable generator. In this case, we can create a SingleTimeSeries with a TimeArray and an accessor function to the maximum active power field in the struct describing the generator. In this way, we can store a scaling factor time series that will get multiplied by the maximum active power rather than the magnitudes of the maximum active power time series.","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"print_struct(Deterministic)","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"Examples of how to create and add time series to system can be found in the Add Time Series Example","category":"page"},{"location":"tutorials/basics/#System","page":"Introduction","title":"System","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"The System object collects all of the individual components into a single struct along with some metadata about the system itself (e.g. base_power)","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"print_struct(System)","category":"page"},{"location":"tutorials/basics/#Example-Code","page":"Introduction","title":"Example Code","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"PowerSystems contains a few basic data files (mostly for testing and demonstration). These can be found here:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"BASE_DIR = abspath(joinpath(dirname(Base.find_package(\"PowerSystems\")), \"..\")) #hide\ninclude(joinpath(BASE_DIR, \"test\", \"data_5bus_pu.jl\")); #.jl file containing 5-bus system data\nnodes_5 = nodes5() # function to create 5-bus buses\nthermal_generators5(nodes_5) # function to create thermal generators in 5-bus buses\nrenewable_generators5(nodes_5) # function to create renewable generators in 5-bus buses\nloads5(nodes_5) # function to create the loads\nbranches5(nodes_5) # function to create the branches","category":"page"},{"location":"tutorials/basics/#Create-a-System","page":"Introduction","title":"Create a System","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"sys = System(\n 100.0,\n nodes_5,\n vcat(\n thermal_generators5(nodes_5),\n renewable_generators5(nodes_5)),\n loads5(nodes_5),\n branches5(nodes_5),\n)","category":"page"},{"location":"tutorials/basics/#Accessing-System-Data","page":"Introduction","title":"Accessing System Data","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"PowerSystems provides functional interfaces to all data. The following examples outline the intended approach to accessing data expressed using PowerSystems.","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"PowerSystems enforces unique name fields between components of a particular concrete type. So, in order to retrieve a specific component, the user must specify the type of the component along with the name and system","category":"page"},{"location":"tutorials/basics/#Accessing-components","page":"Introduction","title":"Accessing components","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"get_component(ACBus, sys, \"nodeA\")\nget_component(Line, sys, \"1\")","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"Similarly, you can access all the components of a particular type: *note: the return type of get_components is a FlattenIteratorWrapper, so call collect to get an Array","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"get_components(ACBus, sys) |> collect","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"get_components also works on abstract types:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"get_components(Branch, sys) |> collect","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"The fields within a component can be accessed using the get_* functions: It's highly recommended that users avoid using the . to access fields since we make no guarantees on the stability field names and locations. We do however promise to keep the accessor functions stable.","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"bus1 = get_component(ACBus, sys, \"nodeA\")\n@show get_name(bus1);\n@show get_magnitude(bus1);\nnothing #hide","category":"page"},{"location":"tutorials/basics/#Accessing-TimeSeries","page":"Introduction","title":"Accessing TimeSeries","text":"","category":"section"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"First we need to add some time series to the System","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"loads = collect(get_components(PowerLoad, sys))\nfor (l, ts) in zip(loads, load_timeseries_DA[2])\n add_time_series!(\n sys,\n l,\n Deterministic(\n \"activepower\",\n Dict(TimeSeries.timestamp(load_timeseries_DA[2][1])[1] => ts),\n ),\n )\nend","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"If we want to access a specific time series for a specific component, we need to specify:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"time series type\ncomponent\ninitial_time\nlabel","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"We can find the initial time of all the time series in the system:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"get_forecast_initial_times(sys)","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"We can find the names of all time series attached to a component:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"ts_names = get_time_series_names(Deterministic, loads[1])","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"We can access a specific time series for a specific component:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"ta = get_time_series_array(Deterministic, loads[1], ts_names[1])","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"Or, we can just get the values of the time series:","category":"page"},{"location":"tutorials/basics/","page":"Introduction","title":"Introduction","text":"ts = get_time_series_values(Deterministic, loads[1], ts_names[1])","category":"page"},{"location":"model_library/generated_MultiStartCost/#MultiStartCost","page":"MultiStartCost","title":"MultiStartCost","text":"","category":"section"},{"location":"model_library/generated_MultiStartCost/","page":"MultiStartCost","title":"MultiStartCost","text":"Modules = [PowerSystems]\nPages = [\"generated/MultiStartCost.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.MultiStartCost","page":"MultiStartCost","title":"PowerSystems.MultiStartCost","text":"mutable struct MultiStartCost <: OperationalCost\n variable::VariableCost\n no_load::Float64\n fixed::Float64\n start_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}\n shut_down::Float64\nend\n\nData Structure Operational Cost Data which includes fixed, variable cost, multiple start up cost and stop costs.\n\nArguments\n\nvariable::VariableCost: variable cost\nno_load::Float64: no load cost\nfixed::Float64: fixed cost\nstart_up::NamedTuple{(:hot, :warm, :cold), NTuple{3, Float64}}: start-up cost\nshut_down::Float64: shut-down cost, validation range: (0, nothing), action if invalid: warn\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.get_fixed-Tuple{MultiStartCost}","page":"MultiStartCost","title":"PowerSystems.get_fixed","text":"get_fixed(value::MultiStartCost) -> Float64\n\n\nGet MultiStartCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.get_no_load-Tuple{MultiStartCost}","page":"MultiStartCost","title":"PowerSystems.get_no_load","text":"get_no_load(value::MultiStartCost) -> Float64\n\n\nGet MultiStartCost no_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.get_shut_down-Tuple{MultiStartCost}","page":"MultiStartCost","title":"PowerSystems.get_shut_down","text":"get_shut_down(value::MultiStartCost) -> Float64\n\n\nGet MultiStartCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.get_start_up-Tuple{MultiStartCost}","page":"MultiStartCost","title":"PowerSystems.get_start_up","text":"get_start_up(\n value::MultiStartCost\n) -> @NamedTuple{hot::Float64, warm::Float64, cold::Float64}\n\n\nGet MultiStartCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.get_variable-Tuple{MultiStartCost}","page":"MultiStartCost","title":"PowerSystems.get_variable","text":"get_variable(value::MultiStartCost) -> VariableCost\n\n\nGet MultiStartCost variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.set_fixed!-Tuple{MultiStartCost, Any}","page":"MultiStartCost","title":"PowerSystems.set_fixed!","text":"set_fixed!(value::MultiStartCost, val) -> Any\n\n\nSet MultiStartCost fixed.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.set_no_load!-Tuple{MultiStartCost, Any}","page":"MultiStartCost","title":"PowerSystems.set_no_load!","text":"set_no_load!(value::MultiStartCost, val) -> Any\n\n\nSet MultiStartCost no_load.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.set_shut_down!-Tuple{MultiStartCost, Any}","page":"MultiStartCost","title":"PowerSystems.set_shut_down!","text":"set_shut_down!(value::MultiStartCost, val) -> Any\n\n\nSet MultiStartCost shut_down.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.set_start_up!-Tuple{MultiStartCost, Any}","page":"MultiStartCost","title":"PowerSystems.set_start_up!","text":"set_start_up!(value::MultiStartCost, val) -> Any\n\n\nSet MultiStartCost start_up.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_MultiStartCost/#PowerSystems.set_variable!-Tuple{MultiStartCost, Any}","page":"MultiStartCost","title":"PowerSystems.set_variable!","text":"set_variable!(value::MultiStartCost, val) -> Any\n\n\nSet MultiStartCost variable.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Public-API-Reference","page":"Public API Reference","title":"Public API Reference","text":"","category":"section"},{"location":"api/public/#Modeling","page":"Public API Reference","title":"Modeling","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"PowerSystems.jl\",\n \"branches.jl\",\n \"components.jl\",\n \"injection.jl\",\n \"devices.jl\",\n \"loads.jl\",\n \"supplemental_constructors\",\n \"generation.jl\",\n \"storage.jl\",\n \"services.jl\",\n \"topological_elements.jl\",\n \"dynamic_models.jl\",\n \"static_models.jl\",\n \"dynamic_models.jl\",\n \"operational_cost.jl\",\n \"definitions.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#PowerSystems.PowerSystems","page":"Public API Reference","title":"PowerSystems.PowerSystems","text":"Module for constructing self-contained power system objects.\n\n\n\n\n\n","category":"module"},{"location":"api/public/#PowerSystems.Component","page":"Public API Reference","title":"PowerSystems.Component","text":"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.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Device","page":"Public API Reference","title":"PowerSystems.Device","text":"Supertype for \"devices\" (bus, line, etc.) \n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_base_power-Tuple{Component}","page":"Public API Reference","title":"PowerSystems.get_base_power","text":"get_base_power(c::Component) -> Float64\n\n\nDefault behavior of a component. If there is no base_power field, assume is in the system's base power.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_dynamic_injector!-Union{Tuple{U}, Tuple{T}, Tuple{T, U}} where {T<:StaticInjection, U<:Union{Nothing, DynamicInjection}}","page":"Public API Reference","title":"PowerSystems.set_dynamic_injector!","text":"set_dynamic_injector!(\n static_injector::StaticInjection,\n dynamic_injector::Union{Nothing, DynamicInjection}\n)\n\n\nAny StaticInjection struct that wants to support dynamic injectors must implement this method to set the value.\n\nThe method is only for internal uses.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_services!-Tuple{Device}","page":"Public API Reference","title":"PowerSystems.clear_services!","text":"clear_services!(device::Device)\n\n\nRemove all services attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_service-Tuple{Device, Service}","page":"Public API Reference","title":"PowerSystems.has_service","text":"has_service(device::Device, service::Service) -> Bool\n\n\nReturn true if the service is attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.has_service-Union{Tuple{T}, Tuple{Device, Type{T}}} where T<:Service","page":"Public API Reference","title":"PowerSystems.has_service","text":"has_service(device::Device, _::Type{T<:Service}) -> Bool\n\n\nReturn true if a service with type T is attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_service!-Tuple{Device, Service}","page":"Public API Reference","title":"PowerSystems.remove_service!","text":"remove_service!(device::Device, service::Service)\n\n\nRemove a service from a device.\n\nThrows ArgumentError if the service is not attached to the device.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.Generator","page":"Public API Reference","title":"PowerSystems.Generator","text":"Supertype for all generation technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.HydroGen","page":"Public API Reference","title":"PowerSystems.HydroGen","text":"Supertype for all Hydropower generation technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.RenewableGen","page":"Public API Reference","title":"PowerSystems.RenewableGen","text":"Supertype for all renewable generation technologies Requires the implementation of get_ratingand get_power_factor methods\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.ThermalGen","page":"Public API Reference","title":"PowerSystems.ThermalGen","text":"Supertype for all Thermal generation technologies\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_max_active_power-Tuple{T} where T<:RenewableGen","page":"Public API Reference","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(d::RenewableGen) -> Any\n\n\nReturn the max active power for the Renewable Generation calculated as the rating * power_factor\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_max_reactive_power-Tuple{T} where T<:RenewableGen","page":"Public API Reference","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(d::RenewableGen) -> Any\n\n\nReturn the max reactive power for the Renewable Generation calculated as the rating * power_factor\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.AggregationTopology","page":"Public API Reference","title":"PowerSystems.AggregationTopology","text":"Represents a geographical region of system components.\n\nAll subtypes must implement the method get_aggregation_topology_accessor.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Bus","page":"Public API Reference","title":"PowerSystems.Bus","text":"Abstract type to represent any type of Bus, AC or DC.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.Topology","page":"Public API Reference","title":"PowerSystems.Topology","text":"Abstract type to represent the structure and interconnectedness of the system\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_aggregation_topology_accessor-Union{Tuple{Type{T}}, Tuple{T}} where T<:AggregationTopology","page":"Public API Reference","title":"PowerSystems.get_aggregation_topology_accessor","text":"get_aggregation_topology_accessor(\n _::Type{T<:AggregationTopology}\n) -> typeof(get_load_zone)\n\n\nReturn the method to be called on a ACBus to get its AggregationTopology value for this type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.StaticInjection","page":"Public API Reference","title":"PowerSystems.StaticInjection","text":"Abstract type of Devices that inject current/power \n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.DynamicComponent","page":"Public API Reference","title":"PowerSystems.DynamicComponent","text":"Abstract type for all components used to compose a DynamicInjection device\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.DynamicInjection","page":"Public API Reference","title":"PowerSystems.DynamicInjection","text":"Abstract type for all dynamic injection types\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.get_dynamic_components-Tuple{T} where T<:DynamicInjection","page":"Public API Reference","title":"PowerSystems.get_dynamic_components","text":"get_dynamic_components(\n device::DynamicInjection\n) -> Base.Generator{I, F} where {I<:(Base.Iterators.Filter{PowerSystems.var\"#6#8\", I} where I<:(Base.Iterators.Zip{Is} where Is<:Tuple{Any, Tuple})), F<:(PowerSystems.var\"#5#7\"{<:DynamicInjection})}\n\n\nReturn all the dynamic components of a DynamicInjection device\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_states_types-Tuple{DynamicComponent}","page":"Public API Reference","title":"PowerSystems.get_states_types","text":"get_states_types(d::DynamicComponent) -> Vector{StateTypes}\n\n\nDefault implementation of get_state_types for dynamic components. Assumes all states are\nDifferential\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_breakpoint_upperbounds-Tuple{VariableCost{Vector{Tuple{Float64, Float64}}}}","page":"Public API Reference","title":"PowerSystems.get_breakpoint_upperbounds","text":"get_breakpoint_upperbounds(\n vc::VariableCost{Vector{Tuple{Float64, Float64}}}\n) -> Vector{Float64}\n\n\nCalculates the upper bounds of a variable cost function represented as a collection of piece-wise linear segments.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_slopes-Tuple{VariableCost{Vector{Tuple{Float64, Float64}}}}","page":"Public API Reference","title":"PowerSystems.get_slopes","text":"get_slopes(\n vc::VariableCost{Vector{Tuple{Float64, Float64}}}\n) -> Vector{Float64}\n\n\nCalculates the slopes for the variable cost represented as a piece wise linear cost function. This function returns n - slopes for n - piecewise linear elements in the function. The first element of the return array corresponds to the average cost at the minimum operating point. If your formulation uses n -1 slopes, you can disregard the first component of the array. If the first point in the variable cost has a quantity of 0.0, the first slope returned will be 0.0, otherwise, the first slope represents the trajectory to get from the origin to the first point in the variable cost.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#TimeSeries","page":"Public API Reference","title":"TimeSeries","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [InfrastructureSystems]\nPages = [\"abstract_time_series.jl\",\n \"deterministic.jl\",\n \"probabilistic.jl\",\n \"scenarios.jl\",\n \"single_time_series.jl\",\n \"forecasts.jl\"]\nOrder = [:type, :function]\nFilter = t -> t ∉ [InfrastructureSystems.get_internal,\n InfrastructureSystems.set_internal!]","category":"page"},{"location":"api/public/#InfrastructureSystems.TimeSeriesData","page":"Public API Reference","title":"InfrastructureSystems.TimeSeriesData","text":"Abstract type for time series stored in the system. Components store references to these through TimeSeriesMetadata values so that data can reside on storage media instead of memory.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.TimeSeriesMetadata","page":"Public API Reference","title":"InfrastructureSystems.TimeSeriesMetadata","text":"Abstract type for time_series that are stored in a system. Users never create them or get access to them. Stores references to TimeSeriesData.\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Deterministic","page":"Public API Reference","title":"InfrastructureSystems.Deterministic","text":"mutable struct Deterministic <: AbstractDeterministic\n name::String\n data::Union{\n SortedDict{Dates.DateTime, Vector{CONSTANT}},\n SortedDict{Dates.DateTime, Vector{POLYNOMIAL}},\n SortedDict{Dates.DateTime, Vector{PWL}},\n }\n resolution::Dates.Period\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ndata::Union{SortedDict{Dates.DateTime, Vector{CONSTANT}}, SortedDict{Dates.DateTime, Vector{POLYNOMIAL}}, SortedDict{Dates.DateTime, Vector{PWL}}}: timestamp - scalingfactor\nresolution::Dates.Period: forecast resolution\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"Public API Reference","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"Public API Reference","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic from a CSV file. The first column must be a timestamp in DateTime format and the columns the values in the forecast window.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Dates.Period}","page":"Public API Reference","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Deterministic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Deterministic-Tuple{Deterministic, Any}","page":"Public API Reference","title":"InfrastructureSystems.Deterministic","text":"Deterministic(\n forecast::Deterministic,\n data\n) -> Deterministic\n\n\nConstruct a new Deterministic from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{Deterministic}","page":"Public API Reference","title":"InfrastructureSystems.get_data","text":"get_data(\n value::Deterministic\n) -> Union{DataStructures.SortedDict{Dates.DateTime, Vector{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Vector{Float64}}, DataStructures.SortedDict{Dates.DateTime, Vector{Tuple{Float64, Float64}}}}\n\n\nGet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{Deterministic}","page":"Public API Reference","title":"InfrastructureSystems.get_name","text":"get_name(value::Deterministic) -> String\n\n\nGet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{Deterministic}","page":"Public API Reference","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::Deterministic) -> Dates.Period\n\n\nGet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{Deterministic}","page":"Public API Reference","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::Deterministic\n) -> Union{Nothing, Function}\n\n\nGet Deterministic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_data!-Tuple{Deterministic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_data!","text":"set_data!(value::Deterministic, val) -> Any\n\n\nSet Deterministic data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Deterministic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(value::Deterministic, val) -> Any\n\n\nSet Deterministic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_resolution!-Tuple{Deterministic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(value::Deterministic, val) -> Any\n\n\nSet Deterministic resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{Deterministic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::Deterministic,\n val\n) -> Any\n\n\nSet Deterministic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic","page":"Public API Reference","title":"InfrastructureSystems.Probabilistic","text":"mutable struct Probabilistic <: Forecast\n name::String\n resolution::Dates.Period\n percentiles::Vector{Float64}\n data::Union{\n SortedDict{Dates.DateTime, Matrix{CONSTANT}},\n SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}},\n SortedDict{Dates.DateTime, Matrix{PWL}},\n }\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Probabilistic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\npercentiles::Vector{Float64}: Percentiles for the probabilistic forecast\ndata::Union{SortedDict{Dates.DateTime, Matrix{CONSTANT}}, SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}}, SortedDict{Dates.DateTime, Matrix{PWL}}}: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict, Vector, Dates.Period}","page":"Public API Reference","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct Probabilistic from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}, Vector{Float64}}","page":"Public API Reference","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray},\n percentiles::Vector{Float64};\n normalization_factor,\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct Probabilistic from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\npercentiles: Percentiles represented in the probabilistic forecast\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Probabilistic-Tuple{AbstractString, InfrastructureSystems.RawTimeSeries, Vector, Dates.Period}","page":"Public API Reference","title":"InfrastructureSystems.Probabilistic","text":"Probabilistic(\n name::AbstractString,\n series_data::InfrastructureSystems.RawTimeSeries,\n percentiles::Vector,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Probabilistic\n\n\nConstruct Deterministic from RawTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{Probabilistic}","page":"Public API Reference","title":"InfrastructureSystems.get_data","text":"get_data(\n value::Probabilistic\n) -> Union{DataStructures.SortedDict{Dates.DateTime, Matrix{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Float64}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Tuple{Float64, Float64}}}}\n\n\nGet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{Probabilistic}","page":"Public API Reference","title":"InfrastructureSystems.get_name","text":"get_name(value::Probabilistic) -> String\n\n\nGet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_percentiles-Tuple{Probabilistic}","page":"Public API Reference","title":"InfrastructureSystems.get_percentiles","text":"get_percentiles(value::Probabilistic) -> Vector{Float64}\n\n\nGet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{Probabilistic}","page":"Public API Reference","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::Probabilistic) -> Dates.Period\n\n\nGet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{Probabilistic}","page":"Public API Reference","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::Probabilistic\n) -> Union{Nothing, Function}\n\n\nGet Probabilistic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_data!-Tuple{Probabilistic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_data!","text":"set_data!(value::Probabilistic, val) -> Any\n\n\nSet Probabilistic data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Probabilistic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(value::Probabilistic, val) -> Any\n\n\nSet Probabilistic name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_percentiles!-Tuple{Probabilistic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_percentiles!","text":"set_percentiles!(value::Probabilistic, val) -> Any\n\n\nSet Probabilistic percentiles.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_resolution!-Tuple{Probabilistic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(value::Probabilistic, val) -> Any\n\n\nSet Probabilistic resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{Probabilistic, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::Probabilistic,\n val\n) -> Any\n\n\nSet Probabilistic scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Scenarios","page":"Public API Reference","title":"InfrastructureSystems.Scenarios","text":"mutable struct Scenarios <: Forecast\n name::String\n resolution::Dates.Period\n scenario_count::Int64\n data::Union{\n SortedDict{Dates.DateTime, Matrix{CONSTANT}},\n SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}},\n SortedDict{Dates.DateTime, Matrix{PWL}},\n }\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA Discrete Scenario Based time series for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\nresolution::Dates.Period: forecast resolution\nscenario_count::Int64: Number of scenarios\ndata::Union{SortedDict{Dates.DateTime, Matrix{CONSTANT}}, SortedDict{Dates.DateTime, Matrix{POLYNOMIAL}}, SortedDict{Dates.DateTime, Matrix{PWL}}}: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict, Dates.Period}","page":"Public API Reference","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> Scenarios\n\n\nConstruct Scenarios from a SortedDict of Arrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, Matrix{Float64}}: time series data.\nresolution::Dates.Period: The resolution of the forecast in Dates.Period`\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.Scenarios-Tuple{AbstractString, AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray}}","page":"Public API Reference","title":"InfrastructureSystems.Scenarios","text":"Scenarios(\n name::AbstractString,\n input_data::AbstractDict{Dates.DateTime, <:TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier\n) -> Scenarios\n\n\nConstruct Scenarios from a Dict of TimeArrays.\n\nArguments\n\nname::AbstractString: user-defined name\ninput_data::AbstractDict{Dates.DateTime, TimeSeries.TimeArray}: time series data.\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If the values are DataFrames is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{Scenarios}","page":"Public API Reference","title":"InfrastructureSystems.get_data","text":"get_data(\n value::Scenarios\n) -> Union{DataStructures.SortedDict{Dates.DateTime, Matrix{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Float64}}, DataStructures.SortedDict{Dates.DateTime, Matrix{Tuple{Float64, Float64}}}}\n\n\nGet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{Scenarios}","page":"Public API Reference","title":"InfrastructureSystems.get_name","text":"get_name(value::Scenarios) -> String\n\n\nGet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{Scenarios}","page":"Public API Reference","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::Scenarios) -> Dates.Period\n\n\nGet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{Scenarios}","page":"Public API Reference","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::Scenarios\n) -> Union{Nothing, Function}\n\n\nGet Scenarios scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_scenario_count-Tuple{Scenarios}","page":"Public API Reference","title":"InfrastructureSystems.get_scenario_count","text":"get_scenario_count(value::Scenarios) -> Int64\n\n\nGet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_data!-Tuple{Scenarios, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_data!","text":"set_data!(value::Scenarios, val) -> Any\n\n\nSet Scenarios data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Scenarios, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(value::Scenarios, val) -> Any\n\n\nSet Scenarios name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_resolution!-Tuple{Scenarios, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_resolution!","text":"set_resolution!(value::Scenarios, val) -> Any\n\n\nSet Scenarios resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{Scenarios, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(value::Scenarios, val) -> Any\n\n\nSet Scenarios scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_scenario_count!-Tuple{Scenarios, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_scenario_count!","text":"set_scenario_count!(value::Scenarios, val) -> Any\n\n\nSet Scenarios scenario_count.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.DeterministicSingleTimeSeries","page":"Public API Reference","title":"InfrastructureSystems.DeterministicSingleTimeSeries","text":"mutable struct DeterministicSingleTimeSeries <: AbstractDeterministic\n single_time_series::SingleTimeSeries\n initial_timestamp::Dates.DateTime\n interval::Dates.Period\n count::Int\n horizon::Int\nend\n\nA deterministic forecast for a particular data field in a Component that wraps a SingleTimeSeries.\n\nArguments\n\nsingle_time_series::SingleTimeSeries: wrapped SingleTimeSeries object\ninitial_timestamp::Dates.DateTime: time series availability time\ninterval::Dates.Period: time step between forecast windows\ncount::Int: number of forecast windows\nhorizon::Int: length of this time series\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries","page":"Public API Reference","title":"InfrastructureSystems.SingleTimeSeries","text":"mutable struct SingleTimeSeries <: StaticTimeSeries\n name::String\n data::TimeSeries.TimeArray\n scaling_factor_multiplier::Union{Nothing, Function}\n internal::InfrastructureSystemsInternal\nend\n\nA deterministic forecast for a particular data field in a Component.\n\nArguments\n\nname::String: user-defined name\ndata::TimeSeries.TimeArray: timestamp - scalingfactor\nscaling_factor_multiplier::Union{Nothing, Function}: Applicable when the time series data are scaling factors. Called on the associated component to convert the values.\ninternal::InfrastructureSystemsInternal\n\n\n\n\n\n","category":"type"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, AbstractString, InfrastructureSystems.InfrastructureSystemsComponent, Dates.Period}","page":"Public API Reference","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n filename::AbstractString,\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n resolution::Dates.Period;\n normalization_factor,\n scaling_factor_multiplier\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a CSV file. The file must have a column that is the name of the component.\n\nArguments\n\nname::AbstractString: user-defined name\nfilename::AbstractString: name of CSV file containing data\ncomponent::InfrastructureSystemsComponent: component associated with the data\nresolution::Dates.Period: resolution of the time series\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{AbstractString, Union{DataFrames.DataFrame, TimeSeries.TimeArray}}","page":"Public API Reference","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::AbstractString,\n data::Union{DataFrames.DataFrame, TimeSeries.TimeArray};\n normalization_factor,\n scaling_factor_multiplier,\n timestamp\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries from a TimeArray or DataFrame.\n\nArguments\n\nname::AbstractString: user-defined name\ndata::Union{TimeSeries.TimeArray, DataFrames.DataFrame}: time series data\nnormalization_factor::NormalizationFactor = 1.0: optional normalization factor to apply to each data entry\nscaling_factor_multiplier::Union{Nothing, Function} = nothing: If the data are scaling factors then this function will be called on the component and applied to the data when get_time_series_array is called.\ntimestamp = :timestamp: If a DataFrame is passed then this must be the column name that contains timestamps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{SingleTimeSeries, TimeSeries.TimeArray}","page":"Public API Reference","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n time_series::SingleTimeSeries,\n data::TimeSeries.TimeArray\n) -> Any\n\n\nCreates a new SingleTimeSeries from an existing instance and a subset of data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.SingleTimeSeries-Tuple{String, Dates.Period, Dates.DateTime, Int64}","page":"Public API Reference","title":"InfrastructureSystems.SingleTimeSeries","text":"SingleTimeSeries(\n name::String,\n resolution::Dates.Period,\n initial_time::Dates.DateTime,\n time_steps::Int64\n) -> SingleTimeSeries\n\n\nConstruct SingleTimeSeries after constructing a TimeArray from initial_time and time_steps.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.from-Tuple{SingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.from","text":"from(\n time_series::SingleTimeSeries,\n timestamp\n) -> SingleTimeSeries\n\n\nReturn a time_series truncated starting with timestamp.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_count-Tuple{DeterministicSingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_count","text":"get_count(value::DeterministicSingleTimeSeries) -> Int64\n\n\nGet DeterministicSingleTimeSeries count.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_data-Tuple{SingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_data","text":"get_data(value::SingleTimeSeries) -> TimeSeries.TimeArray\n\n\nGet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_horizon-Tuple{DeterministicSingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_horizon","text":"get_horizon(value::DeterministicSingleTimeSeries) -> Int64\n\n\nGet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_initial_timestamp-Tuple{DeterministicSingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_initial_timestamp","text":"get_initial_timestamp(\n value::DeterministicSingleTimeSeries\n) -> Dates.DateTime\n\n\nGet DeterministicSingleTimeSeries initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_interval-Tuple{DeterministicSingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_interval","text":"get_interval(\n value::DeterministicSingleTimeSeries\n) -> Dates.Period\n\n\nGet DeterministicSingleTimeSeries interval.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{SingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_name","text":"get_name(value::SingleTimeSeries) -> String\n\n\nGet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_resolution-Tuple{SingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_resolution","text":"get_resolution(value::SingleTimeSeries) -> Dates.Period\n\n\nGet SingleTimeSeries resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_scaling_factor_multiplier-Tuple{SingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_scaling_factor_multiplier","text":"get_scaling_factor_multiplier(\n value::SingleTimeSeries\n) -> Union{Nothing, Function}\n\n\nGet SingleTimeSeries scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_single_time_series-Tuple{DeterministicSingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.get_single_time_series","text":"get_single_time_series(\n value::DeterministicSingleTimeSeries\n) -> SingleTimeSeries\n\n\nGet DeterministicSingleTimeSeries single_time_series.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.head-Tuple{SingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.head","text":"head(time_series::SingleTimeSeries) -> Any\n\n\nReturn a time_series with only the first num values.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_count!-Tuple{DeterministicSingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_count!","text":"set_count!(value::DeterministicSingleTimeSeries, val) -> Any\n\n\nSet DeterministicSingleTimeSeries count.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_data!-Tuple{SingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_data!","text":"set_data!(value::SingleTimeSeries, val) -> Any\n\n\nSet SingleTimeSeries data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_horizon!-Tuple{DeterministicSingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_horizon!","text":"set_horizon!(\n value::DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries horizon.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_initial_timestamp!-Tuple{DeterministicSingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_initial_timestamp!","text":"set_initial_timestamp!(\n value::DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries initial_timestamp.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_interval!-Tuple{DeterministicSingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_interval!","text":"set_interval!(\n value::DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries interval.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{SingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(value::SingleTimeSeries, val) -> Any\n\n\nSet SingleTimeSeries name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_scaling_factor_multiplier!-Tuple{SingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_scaling_factor_multiplier!","text":"set_scaling_factor_multiplier!(\n value::SingleTimeSeries,\n val\n) -> Any\n\n\nSet SingleTimeSeries scaling_factor_multiplier.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_single_time_series!-Tuple{DeterministicSingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.set_single_time_series!","text":"set_single_time_series!(\n value::DeterministicSingleTimeSeries,\n val\n) -> Any\n\n\nSet DeterministicSingleTimeSeries single_time_series.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.tail-Tuple{SingleTimeSeries}","page":"Public API Reference","title":"InfrastructureSystems.tail","text":"tail(time_series::SingleTimeSeries) -> Any\n\n\nReturn a time_series with only the ending num values.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.to-Tuple{SingleTimeSeries, Any}","page":"Public API Reference","title":"InfrastructureSystems.to","text":"to(\n time_series::SingleTimeSeries,\n timestamp\n) -> SingleTimeSeries\n\n\nReturn a time_series truncated after timestamp.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.when-Tuple{SingleTimeSeries, Function, Integer}","page":"Public API Reference","title":"InfrastructureSystems.when","text":"when(\n time_series::SingleTimeSeries,\n period::Function,\n t::Integer\n) -> Any\n\n\nRefer to TimeSeries.when(). Underlying data is copied.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_initial_times-Tuple{Forecast}","page":"Public API Reference","title":"InfrastructureSystems.get_initial_times","text":"get_initial_times(f::Forecast) -> Any\n\n\nReturn the initial times in the forecast.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_total_period-Tuple{Forecast}","page":"Public API Reference","title":"InfrastructureSystems.get_total_period","text":"get_total_period(f::Forecast) -> Any\n\n\nReturn the total period covered by the forecast.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_window-Tuple{Forecast, Int64}","page":"Public API Reference","title":"InfrastructureSystems.get_window","text":"get_window(forecast::Forecast, index::Int64; len) -> Any\n\n\nReturn the forecast window corresponsing to interval index.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.index_to_initial_time-Tuple{Forecast, Int64}","page":"Public API Reference","title":"InfrastructureSystems.index_to_initial_time","text":"index_to_initial_time(\n forecast::Forecast,\n index::Int64\n) -> Any\n\n\nReturn the Dates.DateTime corresponding to an interval index.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.make_time_array-Tuple{Forecast, Dates.DateTime}","page":"Public API Reference","title":"InfrastructureSystems.make_time_array","text":"make_time_array(\n forecast::Forecast,\n start_time::Dates.DateTime;\n len\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window.\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [InfrastructureSystems]\nPages = [\"time_series_cache.jl\"]\nOrder = [:type, :function]\nFilter = t -> t ∈ [InfrastructureSystems.get_next_time_series_array!,\n InfrastructureSystems.get_next_time]","category":"page"},{"location":"api/public/#InfrastructureSystems.get_next_time-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"Public API Reference","title":"InfrastructureSystems.get_next_time","text":"get_next_time(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the timestamp for the next read with get_next_time_series_array!.\n\nReturn nothing if all data has been read.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_next_time_series_array!-Tuple{InfrastructureSystems.TimeSeriesCache}","page":"Public API Reference","title":"InfrastructureSystems.get_next_time_series_array!","text":"get_next_time_series_array!(\n cache::InfrastructureSystems.TimeSeriesCache\n) -> Any\n\n\nReturn the next TimeSeries.TimeArray.\n\nReturns nothing when all data has been read. Call reset! to restart. Call get_next_time to check the start time.\n\nReads from storage if the data is not already in cache.\n\nArguments\n\ncache::StaticTimeSeriesCache: cached instance\n\n\n\n\n\n","category":"method"},{"location":"api/public/#System","page":"Public API Reference","title":"System","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"base.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∈ [System]","category":"page"},{"location":"api/public/#PowerSystems.System","page":"Public API Reference","title":"PowerSystems.System","text":"System\n\nA power system defined by fields for base_power, components, and time series.\n\nSystem(base_power)\nSystem(base_power, buses, components...)\nSystem(base_power, buses, generators, loads, branches, storage, services; kwargs...)\nSystem(base_power, buses, generators, loads; kwargs...)\nSystem(file; kwargs...)\nSystem(; buses, generators, loads, branches, storage, base_power, services, kwargs...)\nSystem(; kwargs...)\n\nArguments\n\nbase_power::Float64: the base power value for the system\nbuses::Vector{ACBus}: an array of buses\ncomponents...: Each element must be an iterable containing subtypes of Component.\n\nKeyword arguments\n\next::Dict: Contains user-defined parameters. Should only contain standard types.\nrunchecks::Bool: Run available checks on input fields and when add_component! is called. Throws InvalidValue if an error is found.\ntime_series_in_memory::Bool=false: Store time series data in memory instead of HDF5.\nenable_compression::Bool=false: Enable compression of time series data in HDF5.\ncompression::CompressionSettings: Allows customization of HDF5 compression settings.\nconfig_path::String: specify path to validation config file\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.System-Tuple{AbstractString, AbstractString}","page":"Public API Reference","title":"PowerSystems.System","text":"System(\n sys_file::AbstractString,\n dyr_file::AbstractString;\n kwargs...\n) -> Any\n\n\nParse static and dynamic data directly from PSS/e text files. Automatically generates all the relationships between the available dynamic injection models and the static counterpart\n\nEach dictionary indexed by id contains a vector with 5 of its components:\n\nMachine\nShaft\nAVR\nTurbineGov\nPSS\n\nFiles must be parsed from a .raw file (PTI data format) and a .dyr file.\n\nExamples:\n\nraw_file = \"Example.raw\"\ndyr_file = \"Example.dyr\"\nsys = System(raw_file, dyr_file)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{AbstractString}","page":"Public API Reference","title":"PowerSystems.System","text":"System(\n file_path::AbstractString;\n assign_new_uuids,\n kwargs...\n) -> Any\n\n\nConstructs a System from a file path ending with .m, .RAW, or .json\n\nIf the file is JSON then assignnewuuids = true will generate new UUIDs for the system and all components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Any, Number}","page":"Public API Reference","title":"PowerSystems.System","text":"System(\n data,\n base_power::Number;\n internal,\n kwargs...\n) -> System\n\n\nConstruct a System from InfrastructureSystems.SystemData\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Float64, Vector{ACBus}, Vararg{Any}}","page":"Public API Reference","title":"PowerSystems.System","text":"System(\n base_power::Float64,\n buses::Vector{ACBus},\n components...;\n kwargs...\n) -> System\n\n\nSystem constructor when components are constructed externally.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Nothing}","page":"Public API Reference","title":"PowerSystems.System","text":"System(\n ::Nothing;\n buses,\n generators,\n loads,\n branches,\n storage,\n base_power,\n services,\n kwargs...\n) -> System\n\n\nConstructs a non-functional System for demo purposes.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{Number}","page":"Public API Reference","title":"PowerSystems.System","text":"System(base_power::Number; kwargs...) -> System\n\n\nConstruct an empty System. Useful for building a System while parsing raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"parsers/power_system_table_data.jl\",\n \"parsers/power_models_data.jl\",\n \"parsers/TAMU_data.jl\",\n \"parsers/psse_dynamic_data.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∈ [System]","category":"page"},{"location":"api/public/#PowerSystems.System-Tuple{PowerSystemTableData}","page":"Public API Reference","title":"PowerSystems.System","text":"System(\n data::PowerSystemTableData;\n time_series_resolution,\n time_series_in_memory,\n time_series_directory,\n runchecks,\n kwargs...\n) -> System\n\n\nConstruct a System from PowerSystemTableData data.\n\nArguments\n\ntime_series_resolution::Union{DateTime, Nothing}=nothing: only store time_series that match this resolution.\ntime_series_in_memory::Bool=false: Store time series data in memory instead of HDF5 file\ntime_series_directory=nothing: Store time series data in directory instead of tmpfs\nrunchecks::Bool=true: Validate struct fields.\n\nThrows DataFormatError if time_series with multiple resolutions are detected.\n\nA time_series has a different resolution than others.\nA time_series has a different horizon than others.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.System-Tuple{PowerModelsData}","page":"Public API Reference","title":"PowerSystems.System","text":"System(pm_data::PowerModelsData; kwargs...) -> Any\n\n\nConstructs a System from PowerModelsData.\n\nArguments\n\npm_data::Union{PowerModelsData, Union{String, IO}}: PowerModels data object or supported\n\nload flow case (*.m, *.raw)\n\nKeyword arguments\n\next::Dict: Contains user-defined parameters. Should only contain standard types.\nrunchecks::Bool: Run available checks on input fields and when add_component! is called. Throws InvalidValue if an error is found.\ntime_series_in_memory::Bool=false: Store time series data in memory instead of HDF5.\nconfig_path::String: specify path to validation config file\npm_data_corrections::Bool=true : Run the PowerModels data corrections (aka :validate in PowerModels)\nimport_all:Bool=false : Import all fields from PTI files\n\nExamples\n\nsys = System(\n pm_data, config_path = \"ACTIVSg25k_validation.json\",\n bus_name_formatter = x->string(x[\"name\"]*\"-\"*string(x[\"index\"])),\n load_name_formatter = x->strip(join(x[\"source_id\"], \"_\"))\n)\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"base.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∉ [System]","category":"page"},{"location":"api/public/#InfrastructureSystems.get_name-Tuple{System}","page":"Public API Reference","title":"InfrastructureSystems.get_name","text":"get_name(sys::System) -> Union{Nothing, String}\n\n\nGet the name of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_multiple","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_multiple","text":"get_time_series_multiple(sys::System; ...) -> Channel{Any}\nget_time_series_multiple(\n sys::System,\n filter_func;\n type,\n name\n) -> Channel{Any}\n\n\nReturn an iterator of time series in order of initial time.\n\nNote that passing a filter function can be much slower than the other filtering parameters because it reads time series data from media.\n\nCall collect on the result to get an array.\n\nArguments\n\ndata::SystemData: system\nfilter_func = nothing: Only return time series for which this returns true.\ntype = nothing: Only return time series with this type.\nname = nothing: Only return time series matching this value.\n\nExamples\n\nfor time_series in get_time_series_multiple(sys)\n @show time_series\nend\n\nts = collect(get_time_series_multiple(sys; type = SingleTimeSeries))\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{Component, AbstractString}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(\n component::Component,\n name::AbstractString\n) -> AbstractString\n\n\nSet the name of a component.\n\nThrows an exception if the component is attached to a system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{System, AbstractString}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(\n sys::System,\n name::AbstractString\n) -> AbstractString\n\n\nSet the name of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.set_name!-Tuple{System, Component, AbstractString}","page":"Public API Reference","title":"InfrastructureSystems.set_name!","text":"set_name!(\n sys::System,\n component::Component,\n name::AbstractString\n)\n\n\nSet the name for a component that is attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.to_json-Tuple{System, AbstractString}","page":"Public API Reference","title":"InfrastructureSystems.to_json","text":"to_json(\n sys::System,\n filename::AbstractString;\n user_data,\n pretty,\n force,\n runchecks\n)\n\n\nSerializes a system to a JSON string.\n\nArguments\n\nsys::System: system\nfilename::AbstractString: filename to write\n\nKeyword arguments\n\nuser_data::Union{Nothing, Dict} = nothing: optional metadata to record\npretty::Bool = false: whether to pretty-print the JSON\nforce::Bool = false: whether to overwrite existing files\ncheck::Bool = false: whether to run system validation checks\n\nRefer to check_component for exceptions thrown if check = true.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_component!-Tuple{System, DynamicInjection, StaticInjection}","page":"Public API Reference","title":"PowerSystems.add_component!","text":"add_component!(\n sys::System,\n dyn_injector::DynamicInjection,\n static_injector::StaticInjection;\n kwargs...\n)\n\n\nAdd a dynamic injector to the system.\n\nThrows ArgumentError if the name does not match the staticinjector name. Throws ArgumentError if the staticinjector is not attached to the system.\n\nAll rules for the generic add_component! method also apply.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_component!-Union{Tuple{T}, Tuple{System, T}} where T<:Component","page":"Public API Reference","title":"PowerSystems.add_component!","text":"add_component!(\n sys::System,\n component::Component;\n skip_validation,\n kwargs...\n)\n\n\nAdd a component to the system.\n\nThrows ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.\n\nExamples\n\nsys = System(100.0)\n\n# Add a single component.\nadd_component!(sys, bus)\n\n# Add many at once.\nbuses = [bus1, bus2, bus3]\ngenerators = [gen1, gen2, gen3]\nforeach(x -> add_component!(sys, x), Iterators.flatten((buses, generators)))\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_components!-Tuple{System, Any}","page":"Public API Reference","title":"PowerSystems.add_components!","text":"add_components!(sys::System, components)\n\n\nAdd many components to the system at once.\n\nThrows ArgumentError if the component's name is already stored for its concrete type. Throws ArgumentError if any Component-specific rule is violated. Throws InvalidValue if any of the component's field values are outside of defined valid range.\n\nExamples\n\nsys = System(100.0)\n\nbuses = [bus1, bus2, bus3]\ngenerators = [gen1, gen2, gen3]\nforeach(x -> add_component!(sys, x), Iterators.flatten((buses, generators)))\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{Device, Service, System}","page":"Public API Reference","title":"PowerSystems.add_service!","text":"add_service!(device::Device, service::Service, sys::System)\n\n\nSimilar to add_service! but for Service and Device already stored in the system. Performs validation checks on the device and the system\n\nArguments\n\ndevice::Device: Device\nservice::Service: Service\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, Service, Any}","page":"Public API Reference","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::Service,\n contributing_devices;\n kwargs...\n)\n\n\nSimilar to add_component! but for services.\n\nArguments\n\nsys::System: system\nservice::Service: service to add\ncontributing_devices: Must be an iterable of type Device\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, Service, Device}","page":"Public API Reference","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::Service,\n contributing_device::Device;\n kwargs...\n)\n\n\nSimilar to add_component! but for services.\n\nArguments\n\nsys::System: system\nservice::Service: service to add\ncontributing_device::Device: Valid Device\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, StaticReserveGroup, Vector{<:Service}}","page":"Public API Reference","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::StaticReserveGroup,\n contributing_services::Vector{<:Service};\n skip_validation,\n kwargs...\n)\n\n\nSimilar to add_component! but for StaticReserveGroup.\n\nArguments\n\nsys::System: system\nservice::StaticReserveGroup: service to add\ncontributing_services: contributing services to the group\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_service!-Tuple{System, StaticReserveGroup}","page":"Public API Reference","title":"PowerSystems.add_service!","text":"add_service!(\n sys::System,\n service::StaticReserveGroup;\n skip_validation,\n kwargs...\n)\n\n\nSimilar to add_component! but for StaticReserveGroup.\n\nArguments\n\nsys::System: system\nservice::StaticReserveGroup: service to add\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, AbstractString}","page":"Public API Reference","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n metadata_file::AbstractString;\n resolution\n)\n\n\nAdd time series data from a metadata file or metadata descriptors.\n\nArguments\n\nsys::System: system\nmetadata_file::AbstractString: metadata file for timeseries that includes an array of IS.TimeSeriesFileMetadata instances or a vector.\nresolution::DateTime.Period=nothing: skip time series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, Any, TimeSeriesData}","page":"Public API Reference","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n components,\n time_series::TimeSeriesData\n)\n\n\nAdd the same time series data to multiple components.\n\nThis is significantly more efficent than calling add_time_series! for each component individually with the same data because in this case, only one time series array is stored.\n\nThrows ArgumentError if a component is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, Component, TimeSeriesData}","page":"Public API Reference","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n component::Component,\n time_series::TimeSeriesData\n)\n\n\nAdd time series data to a component.\n\nThrows ArgumentError if the component is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_time_series!-Tuple{System, Vector{InfrastructureSystems.TimeSeriesFileMetadata}}","page":"Public API Reference","title":"PowerSystems.add_time_series!","text":"add_time_series!(\n sys::System,\n file_metadata::Vector{InfrastructureSystems.TimeSeriesFileMetadata};\n resolution\n)\n\n\nAdd time series data from a metadata file or metadata descriptors.\n\nArguments\n\nsys::System: system\ntimeseries_metadata::Vector{IS.TimeSeriesFileMetadata}: metadata for timeseries\nresolution::DateTime.Period=nothing: skip time series that don't match this resolution.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check-Tuple{System}","page":"Public API Reference","title":"PowerSystems.check","text":"check(sys::System)\n\n\nCheck system consistency and validity.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_component-Tuple{System, Component}","page":"Public API Reference","title":"PowerSystems.check_component","text":"check_component(sys::System, component::Component)\n\n\nCheck the values of a component.\n\nThrows InvalidValue if any of the component's field values are outside of defined valid range or if the custom validate method for the type fails its check.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_components-Tuple{System, Any}","page":"Public API Reference","title":"PowerSystems.check_components","text":"check_components(sys::System, components)\n\n\nCheck the values of each component in an iterable of components. See check_component for exceptions thrown.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_components-Tuple{System}","page":"Public API Reference","title":"PowerSystems.check_components","text":"check_components(sys::System; check_masked_components)\n\n\nCheck the values of all components. See check_component for exceptions thrown.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_components-Union{Tuple{T}, Tuple{System, Type{T}}} where T<:Component","page":"Public API Reference","title":"PowerSystems.check_components","text":"check_components(\n sys::System,\n ::Type{T<:Component};\n check_masked_components\n)\n\n\nCheck the values of components of a given abstract or concrete type. See check_component for exceptions thrown.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.check_time_series_consistency-Union{Tuple{T}, Tuple{System, Type{T}}} where T<:TimeSeriesData","page":"Public API Reference","title":"PowerSystems.check_time_series_consistency","text":"check_time_series_consistency(\n sys::System,\n _::Type{T<:TimeSeriesData}\n) -> Union{Nothing, Tuple{Any, Int64}}\n\n\nChecks time series in the system for inconsistencies.\n\nFor SingleTimeSeries, returns a Tuple of initial_timestamp and length.\n\nThis is a no-op for subtypes of Forecast because those are already guaranteed to be consistent.\n\nThrows InfrastructureSystems.InvalidValue if any time series is inconsistent.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_components!-Tuple{System}","page":"Public API Reference","title":"PowerSystems.clear_components!","text":"clear_components!(sys::System)\n\n\nRemove all components from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_ext!-Tuple{System}","page":"Public API Reference","title":"PowerSystems.clear_ext!","text":"clear_ext!(sys::System)\n\n\nClear any value stored in ext.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.clear_time_series!-Tuple{System}","page":"Public API Reference","title":"PowerSystems.clear_time_series!","text":"clear_time_series!(sys::System)\n\n\nRemove all time series data from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.convert_component!-Tuple{System, Line, Type{MonitoredLine}}","page":"Public API Reference","title":"PowerSystems.convert_component!","text":"convert_component!(\n sys::System,\n line::Line,\n linetype::Type{MonitoredLine};\n kwargs...\n)\n\n\nConverts a Line component to a MonitoredLine component and replaces the original in the system\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.convert_component!-Tuple{System, MonitoredLine, Type{Line}}","page":"Public API Reference","title":"PowerSystems.convert_component!","text":"convert_component!(\n sys::System,\n line::MonitoredLine,\n linetype::Type{Line};\n kwargs...\n)\n\n\nConverts a MonitoredLine component to a Line component and replaces the original in the system\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.convert_component!-Tuple{System, PowerLoad, Type{StandardLoad}}","page":"Public API Reference","title":"PowerSystems.convert_component!","text":"convert_component!(\n sys::System,\n old_load::PowerLoad,\n new_type::Type{StandardLoad};\n kwargs...\n)\n\n\nConverts a PowerLoad component to a StandardLoad component and replaces the original in the system. Does not set any fields in StandardLoad that lack a PowerLoad equivalent\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_aggregation_topology_mapping-Union{Tuple{T}, Tuple{Type{T}, System}} where T<:AggregationTopology","page":"Public API Reference","title":"PowerSystems.get_aggregation_topology_mapping","text":"get_aggregation_topology_mapping(\n _::Type{T<:AggregationTopology},\n sys::System\n) -> Dict{String, Vector{ACBus}}\n\n\nReturn a mapping of AggregationTopology name to vector of buses within it.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_base_power-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_base_power","text":"get_base_power(sys::System) -> Float64\n\n\nReturn the system's base power.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_bus-Tuple{System, AbstractString}","page":"Public API Reference","title":"PowerSystems.get_bus","text":"get_bus(\n sys::System,\n name::AbstractString\n) -> Union{Nothing, ACBus}\n\n\nReturn bus with name.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_bus-Tuple{System, Int64}","page":"Public API Reference","title":"PowerSystems.get_bus","text":"get_bus(sys::System, bus_number::Int64) -> Any\n\n\nReturn bus with bus_number.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_bus_numbers-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_bus_numbers","text":"get_bus_numbers(sys::System) -> Vector{Int64}\n\n\nReturn a sorted vector of bus numbers in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_buses-Tuple{System, AggregationTopology}","page":"Public API Reference","title":"PowerSystems.get_buses","text":"get_buses(\n sys::System,\n aggregator::AggregationTopology\n) -> Vector{ACBus}\n\n\nReturn a vector of buses contained within the AggregationTopology.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_buses-Tuple{System, Set{Int64}}","page":"Public API Reference","title":"PowerSystems.get_buses","text":"get_buses(\n sys::System,\n bus_numbers::Set{Int64}\n) -> Vector{ACBus}\n\n\nReturn all buses values with bus_numbers.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_component-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Public API Reference","title":"PowerSystems.get_component","text":"get_component(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n) -> Any\n\n\nGet the component of type T with name. Returns nothing if no component matches. If T is an abstract type then the names of components across all subtypes of T must be unique.\n\nSee get_components_by_name for abstract types with non-unique names across subtypes.\n\nThrows ArgumentError if T is not a concrete type and there is more than one component with requested name\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components-Union{Tuple{T}, Tuple{Type{T}, System}} where T<:Component","page":"Public API Reference","title":"PowerSystems.get_components","text":"get_components(\n _::Type{T<:Component},\n sys::System\n) -> InfrastructureSystems.FlattenIteratorWrapper{T, I} where {T<:Component, I<:(Vector)}\n\n\nReturns an iterator of components. T can be concrete or abstract. Call collect on the result if an array is desired.\n\nExamples\n\niter = PowerSystems.get_components(ThermalStandard, sys)\niter = PowerSystems.get_components(Generator, sys)\niter = PowerSystems.get_components(x -> PowerSystems.get_available(x), Generator, sys)\nthermal_gens = get_components(ThermalStandard, sys) do gen\n get_available(gen)\nend\ngenerators = collect(PowerSystems.get_components(Generator, sys))\n\n\nSee also: iterate_components\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components_by_name-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Public API Reference","title":"PowerSystems.get_components_by_name","text":"get_components_by_name(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n) -> Vector{T} where T<:InfrastructureSystems.InfrastructureSystemsComponent\n\n\nGet the components of abstract type T with name. Note that PowerSystems enforces unique names on each concrete type but not across concrete types.\n\nSee get_component if the concrete type is known.\n\nThrows ArgumentError if T is not an abstract type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_components_in_aggregation_topology-Union{Tuple{T}, Tuple{Type{T}, System, AggregationTopology}} where T<:StaticInjection","page":"Public API Reference","title":"PowerSystems.get_components_in_aggregation_topology","text":"get_components_in_aggregation_topology(\n _::Type{T<:StaticInjection},\n sys::System,\n aggregator::AggregationTopology\n) -> Vector{T} where T<:StaticInjection\n\n\nReturn a vector of components with buses in the AggregationTopology.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_compression_settings-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_compression_settings","text":"get_compression_settings(sys::System) -> CompressionSettings\n\n\nReturn the compression settings used for system data such as time series arrays.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_contributing_device_mapping-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_contributing_device_mapping","text":"get_contributing_device_mapping(\n sys::System\n) -> Dict{@NamedTuple{type::DataType, name::String}, ServiceContributingDevices}\n\n\nReturn an instance of ServiceContributingDevicesMapping.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_contributing_devices-Union{Tuple{T}, Tuple{System, T}} where T<:Service","page":"Public API Reference","title":"PowerSystems.get_contributing_devices","text":"get_contributing_devices(\n sys::System,\n service::Service\n) -> Vector\n\n\nReturn a vector of devices contributing to the service.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_description-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_description","text":"get_description(sys::System) -> Union{Nothing, String}\n\n\nGet the description of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_existing_component_types-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_existing_component_types","text":"get_existing_component_types(\n sys::System\n) -> Vector{DataType}\n\n\nReturn all the component types in the system. It does not return masked components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_existing_device_types-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_existing_device_types","text":"get_existing_device_types(sys::System) -> Vector{DataType}\n\n\nReturn all the device types in the system. It does not return component types or masked components.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_ext-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_ext","text":"get_ext(sys::System) -> Union{Nothing, Dict{String, Any}}\n\n\nReturn a user-modifiable dictionary to store extra information.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_horizon-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_forecast_horizon","text":"get_forecast_horizon(sys::System) -> Int64\n\n\nReturn the horizon for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_initial_times-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_forecast_initial_times","text":"get_forecast_initial_times(sys::System) -> Any\n\n\nReturn the initial times for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_initial_timestamp-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_forecast_initial_timestamp","text":"get_forecast_initial_timestamp(\n sys::System\n) -> Dates.DateTime\n\n\nReturn the initial_timestamp for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_interval-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_forecast_interval","text":"get_forecast_interval(sys::System) -> Dates.Period\n\n\nReturn the interval for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_total_period-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_forecast_total_period","text":"get_forecast_total_period(sys::System) -> Any\n\n\nReturn the total period covered by all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_forecast_window_count-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_forecast_window_count","text":"get_forecast_window_count(sys::System) -> Int64\n\n\nReturn the window count for all forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_frequency-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_frequency","text":"get_frequency(sys::System) -> Float64\n\n\nReturn the system's frequency.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_runchecks-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_runchecks","text":"get_runchecks(sys::System) -> Bool\n\n\nReturn true if checks are enabled on the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_time_series_counts-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_time_series_counts","text":"get_time_series_counts(\n sys::System\n) -> Tuple{Int64, Any, Any}\n\n\nReturn a tuple of counts of components with time series and total time series and forecasts.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_time_series_resolution-Tuple{System}","page":"Public API Reference","title":"PowerSystems.get_time_series_resolution","text":"get_time_series_resolution(sys::System) -> Dates.Period\n\n\nReturn the resolution for all time series.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.iterate_components-Tuple{System}","page":"Public API Reference","title":"PowerSystems.iterate_components","text":"iterate_components(sys::System) -> Channel{Any}\n\n\nIterates over all components.\n\nExamples\n\nfor component in iterate_components(sys)\n @show component\nend\n\nSee also: get_components\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_component!-Union{Tuple{T}, Tuple{System, T}} where T<:Component","page":"Public API Reference","title":"PowerSystems.remove_component!","text":"remove_component!(sys::System, component::Component)\n\n\nRemove a component from the system by its value.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_component!-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Public API Reference","title":"PowerSystems.remove_component!","text":"remove_component!(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n)\n\n\nRemove a component from the system by its name.\n\nThrows ArgumentError if the component is not stored.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_time_series!-Union{Tuple{T}, Tuple{System, Type{T}, Component, String}} where T<:TimeSeriesData","page":"Public API Reference","title":"PowerSystems.remove_time_series!","text":"remove_time_series!(\n sys::System,\n _::Type{T<:TimeSeriesData},\n component::Component,\n name::String\n)\n\n\nRemove the time series data for a component and time series type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.remove_time_series!-Union{Tuple{T}, Tuple{System, Type{T}}} where T<:TimeSeriesData","page":"Public API Reference","title":"PowerSystems.remove_time_series!","text":"remove_time_series!(sys::System, _::Type{T<:TimeSeriesData})\n\n\nRemove all the time series data for a time series type.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.sanitize_component!-Tuple{Component, System}","page":"Public API Reference","title":"PowerSystems.sanitize_component!","text":"sanitize_component!(component::Component, sys::System)\n\n\nSanitize component values.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_contributing_services!-Tuple{System, StaticReserveGroup, Vector{<:Service}}","page":"Public API Reference","title":"PowerSystems.set_contributing_services!","text":"set_contributing_services!(\n sys::System,\n service::StaticReserveGroup,\n val::Vector{<:Service}\n)\n\n\nSet StaticReserveGroup contributing_services with check\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_description!-Tuple{System, AbstractString}","page":"Public API Reference","title":"PowerSystems.set_description!","text":"set_description!(\n sys::System,\n description::AbstractString\n) -> AbstractString\n\n\nSet the description of the system.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_runchecks!-Tuple{System, Bool}","page":"Public API Reference","title":"PowerSystems.set_runchecks!","text":"set_runchecks!(sys::System, value::Bool)\n\n\nEnable or disable system checks. Applies to component addition as well as overall system consistency.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.set_units_base_system!-Tuple{System, String}","page":"Public API Reference","title":"PowerSystems.set_units_base_system!","text":"set_units_base_system!(system::System, settings::String)\n\n\nSets the units base for the getter functions on the devices. It modifies the behavior of all getter functions\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.transform_single_time_series!-Tuple{System, Int64, Dates.Period}","page":"Public API Reference","title":"PowerSystems.transform_single_time_series!","text":"transform_single_time_series!(\n sys::System,\n horizon::Int64,\n interval::Dates.Period\n)\n\n\nTransform all instances of SingleTimeSeries to DeterministicSingleTimeSeries.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.validate_component-Tuple{Component}","page":"Public API Reference","title":"PowerSystems.validate_component","text":"validate_component(component::Component) -> Bool\n\n\nValidate the component fields using only those fields. Refer to validate_component_with_system to use other System data for the validation.\n\nReturn true if the instance is valid.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.validate_component_with_system-Tuple{Component, System}","page":"Public API Reference","title":"PowerSystems.validate_component_with_system","text":"validate_component_with_system(\n component::Component,\n sys::System\n) -> Bool\n\n\nValidate a component against System data. Return true if the instance is valid.\n\nRefer to validate_component if the validation logic only requires data contained within the instance.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#Additional-Component-Methods","page":"Public API Reference","title":"Additional Component Methods","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"supplemental_accessors.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#PowerSystems.get_max_active_power-Tuple{T} where T<:Device","page":"Public API Reference","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(d::Device) -> Any\n\n\nReturn the max active power for a device from getactivepower_limits.max\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_max_reactive_power-Tuple{RenewableDispatch}","page":"Public API Reference","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(d::RenewableDispatch) -> Any\n\n\nReturn the max reactive power for the Renewable Generation calculated as the rating * powerfactor if reactivepower_limits is nothing\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.get_max_reactive_power-Tuple{T} where T<:Device","page":"Public API Reference","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(d::Device) -> Any\n\n\nReturn the max reactive power for a device from getreactivepower_limits.max\n\n\n\n\n\n","category":"method"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [InfrastructureSystems]\nPages = [\"component.jl\", \"components.jl\"]\nFilter = t -> t ∈ [InfrastructureSystems.get_time_series,\n InfrastructureSystems.get_time_series_array,\n InfrastructureSystems.get_time_series_timestamps,\n InfrastructureSystems.get_time_series_values,\n ]","category":"page"},{"location":"api/public/#InfrastructureSystems.get_time_series-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:TimeSeriesData","page":"Public API Reference","title":"InfrastructureSystems.get_time_series","text":"get_time_series(\n ::Type{T<:TimeSeriesData},\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n name::AbstractString;\n start_time,\n len,\n count\n) -> Any\n\n\nReturn a time series corresponding to the given parameters.\n\nArguments\n\n::Type{T}: Concrete subtype of TimeSeriesData to return\ncomponent::InfrastructureSystemsComponent: Component containing the time series\nname::AbstractString: name of time series\nstart_time::Union{Nothing, Dates.DateTime} = nothing: If nothing, use the initial_timestamp of the time series. If T is a subtype of Forecast then start_time must be the first timstamp of a window.\nlen::Union{Nothing, Int} = nothing: Length in the time dimension. If nothing, use the entire length.\ncount::Union{Nothing, Int} = nothing: Only applicable to subtypes of Forecast. Number of forecast windows starting at start_time to return. Defaults to all available.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_array","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n time_series::StaticTimeSeries;\n ...\n) -> Any\nget_time_series_array(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n time_series::StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from a cached StaticTimeSeries instance.\n\nIf the data are scaling factors then the stored scalingfactormultiplier will be called on the component and applied to the data unless ignorescalingfactors is true.\n\nSee also StaticTimeSeriesCache.\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_array-Tuple{InfrastructureSystems.InfrastructureSystemsComponent, Forecast, Dates.DateTime}","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n forecast::Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray for one forecast window from a cached Forecast instance.\n\nIf the data are scaling factors then the stored scalingfactormultiplier will be called on the component and applied to the data unless ignorescalingfactors is true.\n\nSee also ForecastCache.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_array-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:TimeSeriesData","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_array","text":"get_time_series_array(\n ::Type{T<:TimeSeriesData},\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn a TimeSeries.TimeArray from storage for the given time series parameters.\n\nIf the data are scaling factors then the stored scalingfactormultiplier will be called on the component and applied to the data unless ignorescalingfactors is true.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_timestamps","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n time_series::StaticTimeSeries;\n ...\n) -> Vector{D} where D<:Dates.TimeType\nget_time_series_timestamps(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n time_series::StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached StaticTimeSeries instance.\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_timestamps-2","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n forecast::Forecast;\n ...\n)\nget_time_series_timestamps(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n forecast::Forecast,\n start_time::Union{Nothing, Dates.DateTime};\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from a cached Forecast instance.\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_timestamps-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:TimeSeriesData","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_timestamps","text":"get_time_series_timestamps(\n ::Type{T<:TimeSeriesData},\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n name::AbstractString;\n start_time,\n len\n) -> Vector{D} where D<:Dates.TimeType\n\n\nReturn a vector of timestamps from storage for the given time series parameters.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_values","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n time_series::StaticTimeSeries;\n ...\n) -> Any\nget_time_series_values(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n time_series::StaticTimeSeries,\n start_time::Union{Nothing, Dates.DateTime};\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an Array of values from a cached StaticTimeSeries instance for the requested time series parameters.\n\n\n\n\n\n","category":"function"},{"location":"api/public/#InfrastructureSystems.get_time_series_values-Tuple{InfrastructureSystems.InfrastructureSystemsComponent, Forecast, Dates.DateTime}","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n forecast::Forecast,\n start_time::Dates.DateTime;\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an Array of values for one forecast window from a cached Forecast instance.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#InfrastructureSystems.get_time_series_values-Union{Tuple{T}, Tuple{Type{T}, InfrastructureSystems.InfrastructureSystemsComponent, AbstractString}} where T<:TimeSeriesData","page":"Public API Reference","title":"InfrastructureSystems.get_time_series_values","text":"get_time_series_values(\n ::Type{T<:TimeSeriesData},\n component::InfrastructureSystems.InfrastructureSystemsComponent,\n name::AbstractString;\n start_time,\n len,\n ignore_scaling_factors\n) -> Any\n\n\nReturn an Array of values from storage for the requested time series parameters.\n\nIf the data size is small and this will be called many times, consider using the version that accepts a cached TimeSeriesData instance.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#net_mat","page":"Public API Reference","title":"Network Matrices","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"utils/network_calculations/ybus_calculations.jl\",\n \"utils/network_calculations/ptdf_calculations.jl\",\n \"utils/network_calculations/lodf_calculations.jl\",\n \"utils/network_calculations/common.jl\"]\nPrivate = false\nPublic = true","category":"page"},{"location":"api/public/#pf","page":"Public API Reference","title":"Power Flow","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"power_flow.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#Parsing","page":"Public API Reference","title":"Parsing","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"parsers/power_system_table_data.jl\",\n \"parsers/power_models_data.jl\",\n \"parsers/TAMU_data.jl\",\n \"parsers/psse_dynamic_data.jl\"]\nPublic = true\nPrivate = false\nFilter = t -> t ∉ [System]","category":"page"},{"location":"api/public/#PowerSystems.PowerSystemTableData-Tuple{AbstractString, Float64, AbstractString}","page":"Public API Reference","title":"PowerSystems.PowerSystemTableData","text":"PowerSystemTableData(\n directory::AbstractString,\n base_power::Float64,\n user_descriptor_file::AbstractString;\n descriptor_file,\n generator_mapping_file,\n timeseries_metadata_file\n) -> PowerSystemTableData\n\n\nReads in all the data stored in csv files The general format for data is folder: gen.csv branch.csv bus.csv .. load.csv\n\nArguments\n\ndirectory::AbstractString: directory containing CSV files\nbase_power::Float64: base power for System\nuser_descriptor_file::AbstractString: customized input descriptor file\ndescriptor_file=POWER_SYSTEM_DESCRIPTOR_FILE: PowerSystems descriptor file\ngenerator_mapping_file=GENERATOR_MAPPING_FILE: generator mapping configuration file\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.PowerModelsData","page":"Public API Reference","title":"PowerSystems.PowerModelsData","text":"Container for data parsed by PowerModels\n\n\n\n\n\n","category":"type"},{"location":"api/public/#PowerSystems.PowerModelsData-Tuple{Union{IO, String}}","page":"Public API Reference","title":"PowerSystems.PowerModelsData","text":"PowerModelsData(\n file::Union{IO, String};\n kwargs...\n) -> PowerModelsData\n\n\nConstructs PowerModelsData from a raw file. Currently Supports MATPOWER and PSSE data files parsed by PowerModels.\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.TamuSystem-Tuple{AbstractString}","page":"Public API Reference","title":"PowerSystems.TamuSystem","text":"TamuSystem(tamu_folder::AbstractString; kwargs...) -> Any\n\n\nCreates a system from a PSS/e .RAW (v33) load flow case, and an associated .csv with MW load time series data. The format is established by the Texas A&M University Test Case Archive\n\nThe general format for data is folder: [casename].raw [casename]loadtimeseriesMW.csv\n\nArguments\n\ndirectory::AbstractString: directory containing RAW and CSV files\n\nExamples\n\nsys = TamuSystem(\n \"./ACTIVSg25k\",\n config_path = \"ACTIVSg25k_validation.json\",\n bus_name_formatter = x->string(x[\"name\"]*\"-\"*string(x[\"index\"])),\n load_name_formatter = x->strip(join(x[\"source_id\"], \"_\"))\n)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#PowerSystems.add_dyn_injectors!-Tuple{System, AbstractString}","page":"Public API Reference","title":"PowerSystems.add_dyn_injectors!","text":"add_dyn_injectors!(sys::System, dyr_file::AbstractString)\n\n\nAdd to a system already created the dynamic components. The system should already be parsed from a .raw file.\n\nExamples:\n\ndyr_file = \"Example.dyr\"\nadd_dyn_injectors!(sys, dyr_file)\n\n\n\n\n\n","category":"method"},{"location":"api/public/#logging","page":"Public API Reference","title":"Logging","text":"","category":"section"},{"location":"api/public/","page":"Public API Reference","title":"Public API Reference","text":"Modules = [PowerSystems]\nPages = [\"utils/logging.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"api/public/#PowerSystems.configure_logging-Tuple{}","page":"Public API Reference","title":"PowerSystems.configure_logging","text":"configure_logging(\n;\n console_level,\n file_level,\n filename\n) -> MultiLogger\n\n\nCreates console and file loggers.\n\nNote: Log messages may not be written to the file until flush() or close() is called on the returned logger.\n\nArguments\n\nconsole_level = Logging.Error: level for console messages\nfile_level = Logging.Info: level for file messages\nfilename::Union{Nothing, AbstractString} = \"power-systems.log\": log file; pass nothing to disable file logging\n\nExample\n\nlogger = configure_logging(console_level = Logging.Info)\n@info \"log message\"\nclose(logger)\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Reserves","page":"Reserves","title":"Reserves","text":"","category":"section"},{"location":"model_library/reserves/#Static-Reserve","page":"Reserves","title":"Static Reserve","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/StaticReserve.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.StaticReserve","page":"Reserves","title":"PowerSystems.StaticReserve","text":"mutable struct StaticReserve{T <: ReserveDirection} <: Reserve{T}\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for a proportional reserve product for system simulations.\n\nArguments\n\nname::String\navailable::Bool\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error\nrequirement::Float64: the static value of required reserves in system p.u., validation range: (0, nothing), action if invalid: error\nsustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error\nmax_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error\nmax_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error\ndeployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error\next::Dict{String, Any}\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{StaticReserve}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::StaticReserve) -> String\n\n\nGet StaticReserve name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::StaticReserve) -> Bool\n\n\nGet StaticReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_deployed_fraction-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(value::StaticReserve) -> Float64\n\n\nGet StaticReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::StaticReserve) -> Dict{String, Any}\n\n\nGet StaticReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_output_fraction-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(value::StaticReserve) -> Float64\n\n\nGet StaticReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_participation_factor-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::StaticReserve\n) -> Float64\n\n\nGet StaticReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_requirement-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_requirement","text":"get_requirement(value::StaticReserve) -> Any\n\n\nGet StaticReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_sustained_time-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(value::StaticReserve) -> Float64\n\n\nGet StaticReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_time_frame-Tuple{StaticReserve}","page":"Reserves","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::StaticReserve) -> Float64\n\n\nGet StaticReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_deployed_fraction!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_output_fraction!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_participation_factor!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::StaticReserve,\n val\n) -> Any\n\n\nSet StaticReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_requirement!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_sustained_time!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_frame!-Tuple{StaticReserve, Any}","page":"Reserves","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::StaticReserve, val) -> Any\n\n\nSet StaticReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Static-Reserve-Group","page":"Reserves","title":"Static Reserve Group","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/StaticReserveGroup.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.StaticReserveGroup","page":"Reserves","title":"PowerSystems.StaticReserveGroup","text":"mutable struct StaticReserveGroup{T <: ReserveDirection} <: Service\n name::String\n available::Bool\n requirement::Float64\n ext::Dict{String, Any}\n contributing_services::Vector{Service}\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for a group reserve product for system simulations.\n\nArguments\n\nname::String\navailable::Bool\nrequirement::Float64: the static value of required reserves in system p.u., validation range: (0, nothing), action if invalid: error\next::Dict{String, Any}\ncontributing_services::Vector{Service}: Services that contribute for this requirement constraint\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{StaticReserveGroup}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::StaticReserveGroup) -> String\n\n\nGet StaticReserveGroup name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{StaticReserveGroup}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::StaticReserveGroup) -> Bool\n\n\nGet StaticReserveGroup available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_contributing_services-Tuple{StaticReserveGroup}","page":"Reserves","title":"PowerSystems.get_contributing_services","text":"get_contributing_services(\n value::StaticReserveGroup\n) -> Vector{Service}\n\n\nGet StaticReserveGroup contributing_services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{StaticReserveGroup}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::StaticReserveGroup) -> Dict{String, Any}\n\n\nGet StaticReserveGroup ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_requirement-Tuple{StaticReserveGroup}","page":"Reserves","title":"PowerSystems.get_requirement","text":"get_requirement(value::StaticReserveGroup) -> Any\n\n\nGet StaticReserveGroup requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{StaticReserveGroup, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::StaticReserveGroup, val) -> Any\n\n\nSet StaticReserveGroup available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{StaticReserveGroup, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::StaticReserveGroup, val) -> Any\n\n\nSet StaticReserveGroup ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_requirement!-Tuple{StaticReserveGroup, Any}","page":"Reserves","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::StaticReserveGroup, val) -> Any\n\n\nSet StaticReserveGroup requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Variable-Reserve","page":"Reserves","title":"Variable Reserve","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/VariableReserve.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.VariableReserve","page":"Reserves","title":"PowerSystems.VariableReserve","text":"mutable struct VariableReserve{T <: ReserveDirection} <: Reserve{T}\n name::String\n available::Bool\n time_frame::Float64\n requirement::Float64\n sustained_time::Float64\n max_output_fraction::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for the procurement products for system simulations.\n\nArguments\n\nname::String\navailable::Bool\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error\nrequirement::Float64: the required quantity of the product should be scaled by a TimeSeriesData\nsustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error\nmax_output_fraction::Float64: the maximum fraction of the device's output that can be assigned to the service, validation range: (0, 1), action if invalid: error\nmax_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error\ndeployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{VariableReserve}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::VariableReserve) -> String\n\n\nGet VariableReserve name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#InfrastructureSystems.get_time_series_container-Tuple{VariableReserve}","page":"Reserves","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::VariableReserve\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet VariableReserve time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::VariableReserve) -> Bool\n\n\nGet VariableReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_deployed_fraction-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(value::VariableReserve) -> Float64\n\n\nGet VariableReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::VariableReserve) -> Dict{String, Any}\n\n\nGet VariableReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_output_fraction-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_max_output_fraction","text":"get_max_output_fraction(value::VariableReserve) -> Float64\n\n\nGet VariableReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_participation_factor-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::VariableReserve\n) -> Float64\n\n\nGet VariableReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_requirement-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_requirement","text":"get_requirement(value::VariableReserve) -> Float64\n\n\nGet VariableReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_sustained_time-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(value::VariableReserve) -> Float64\n\n\nGet VariableReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_time_frame-Tuple{VariableReserve}","page":"Reserves","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::VariableReserve) -> Float64\n\n\nGet VariableReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_deployed_fraction!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_output_fraction!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_output_fraction!","text":"set_max_output_fraction!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve max_output_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_participation_factor!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::VariableReserve,\n val\n) -> Any\n\n\nSet VariableReserve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_requirement!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_requirement!","text":"set_requirement!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve requirement.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_sustained_time!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_frame!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::VariableReserve, val) -> Any\n\n\nSet VariableReserve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_series_container!-Tuple{VariableReserve, Any}","page":"Reserves","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::VariableReserve,\n val\n) -> Any\n\n\nSet VariableReserve time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#Reserve-Demand-Curve","page":"Reserves","title":"Reserve Demand Curve","text":"","category":"section"},{"location":"model_library/reserves/","page":"Reserves","title":"Reserves","text":"Modules = [PowerSystems]\nPages = [\"generated/ReserveDemandCurve.jl\"]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/reserves/#PowerSystems.ReserveDemandCurve","page":"Reserves","title":"PowerSystems.ReserveDemandCurve","text":"mutable struct ReserveDemandCurve{T <: ReserveDirection} <: Reserve{T}\n variable::Union{Nothing, IS.TimeSeriesKey}\n name::String\n available::Bool\n time_frame::Float64\n sustained_time::Float64\n max_participation_factor::Float64\n deployed_fraction::Float64\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData Structure for a operating reserve with demand curve product for system simulations.\n\nArguments\n\nvariable::Union{Nothing, IS.TimeSeriesKey}: Variable Cost TimeSeriesKey\nname::String\navailable::Bool\ntime_frame::Float64: the saturation time_frame in minutes to provide reserve contribution, validation range: (0, nothing), action if invalid: error\nsustained_time::Float64: the time in secounds reserve contribution must sustained at a specified level, validation range: (0, nothing), action if invalid: error\nmax_participation_factor::Float64: the maximum limit of reserve contribution per device, validation range: (0, 1), action if invalid: error\ndeployed_fraction::Float64: Fraction of ancillary services participation deployed from the assignment, validation range: (0, 1), action if invalid: error\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/reserves/#InfrastructureSystems.get_name-Tuple{ReserveDemandCurve}","page":"Reserves","title":"InfrastructureSystems.get_name","text":"get_name(value::ReserveDemandCurve) -> String\n\n\nGet ReserveDemandCurve name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#InfrastructureSystems.get_time_series_container-Tuple{ReserveDemandCurve}","page":"Reserves","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::ReserveDemandCurve\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet ReserveDemandCurve time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_available-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_available","text":"get_available(value::ReserveDemandCurve) -> Bool\n\n\nGet ReserveDemandCurve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_deployed_fraction-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_deployed_fraction","text":"get_deployed_fraction(value::ReserveDemandCurve) -> Float64\n\n\nGet ReserveDemandCurve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_ext-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_ext","text":"get_ext(value::ReserveDemandCurve) -> Dict{String, Any}\n\n\nGet ReserveDemandCurve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_max_participation_factor-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_max_participation_factor","text":"get_max_participation_factor(\n value::ReserveDemandCurve\n) -> Float64\n\n\nGet ReserveDemandCurve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_sustained_time-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_sustained_time","text":"get_sustained_time(value::ReserveDemandCurve) -> Float64\n\n\nGet ReserveDemandCurve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_time_frame-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_time_frame","text":"get_time_frame(value::ReserveDemandCurve) -> Float64\n\n\nGet ReserveDemandCurve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.get_variable-Tuple{ReserveDemandCurve}","page":"Reserves","title":"PowerSystems.get_variable","text":"get_variable(\n value::ReserveDemandCurve\n) -> Union{Nothing, InfrastructureSystems.TimeSeriesKey}\n\n\nGet ReserveDemandCurve variable.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_available!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_available!","text":"set_available!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_deployed_fraction!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_deployed_fraction!","text":"set_deployed_fraction!(\n value::ReserveDemandCurve,\n val\n) -> Any\n\n\nSet ReserveDemandCurve deployed_fraction.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_ext!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_max_participation_factor!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_max_participation_factor!","text":"set_max_participation_factor!(\n value::ReserveDemandCurve,\n val\n) -> Any\n\n\nSet ReserveDemandCurve max_participation_factor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_sustained_time!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_sustained_time!","text":"set_sustained_time!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve sustained_time.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_frame!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_time_frame!","text":"set_time_frame!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve time_frame.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_time_series_container!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::ReserveDemandCurve,\n val\n) -> Any\n\n\nSet ReserveDemandCurve time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/reserves/#PowerSystems.set_variable!-Tuple{ReserveDemandCurve, Any}","page":"Reserves","title":"PowerSystems.set_variable!","text":"set_variable!(value::ReserveDemandCurve, val) -> Any\n\n\nSet ReserveDemandCurve variable.\n\n\n\n\n\n","category":"method"},{"location":"tutorials/modifying_data/","page":"-","title":"-","text":"using PowerSystems\nusing PowerSystemCaseBuilder\n\nc_sys5_pjm_da = build_system(PSITestSystems, \"c_sys5_pjm\")\ntransform_single_time_series!(c_sys5_pjm_da, 24, Hour(24))\nc_sys5_pjm_rt = build_system(PSITestSystems, \"c_sys5_pjm_rt\")\ntransform_single_time_series!(c_sys5_pjm_rt, 24, Hour(1))\n\nfor sys in [c_sys5_pjm_da, c_sys5_pjm_rt]\n th = get_component(ThermalStandard, sys, \"Park City\")\n set_active_power_limits!(th, (min = 0.1, max = 1.7))\n set_status!(th, false)\n set_active_power!(th, 0.0)\n c = get_operation_cost(th)\n c.start_up = 1500\n c.shut_down = 75\n set_time_at_status!(th, 1)\n\n th = get_component(ThermalStandard, sys, \"Alta\")\n set_time_limits!(th, (up = 5, down = 1))\n set_active_power_limits!(th, (min = 0.05, max = 0.4))\n set_active_power!(th, 0.05)\n c = get_operation_cost(th)\n c.start_up = 400\n c.shut_down = 200\n set_time_at_status!(th, 2)\n\n th = get_component(ThermalStandard, sys, \"Brighton\")\n set_active_power_limits!(th, (min = 2.0, max = 6.0))\n c = get_operation_cost(th)\n set_active_power!(th, 4.88041)\n c.start_up = 5000\n c.shut_down = 3000\n\n th = get_component(ThermalStandard, sys, \"Sundance\")\n set_active_power_limits!(th, (min = 1.0, max = 2.0))\n set_time_limits!(th, (up = 5, down = 1))\n set_active_power!(th, 2.0)\n c = get_operation_cost(th)\n c.start_up = 4000\n c.shut_down = 2000\n set_time_at_status!(th, 1)\n\n th = get_component(ThermalStandard, sys, \"Solitude\")\n set_active_power_limits!(th, (min = 1.0, max = 5.2))\n set_ramp_limits!(th, (up = 0.0052, down = 0.0052))\n set_active_power!(th, 2.0)\n c = get_operation_cost(th)\n c.start_up = 3000\n c.shut_down = 1500\nend\n\nto_json(c_sys5_pjm_da, \"c_sys5_pjm_da.json\")\nto_json(c_sys5_pjm_rt, \"c_sys5_pjm_rt.json\")","category":"page"},{"location":"model_library/generated_DCSource/#DCSource","page":"DCSource","title":"DCSource","text":"","category":"section"},{"location":"model_library/generated_DCSource/#FixedDCSource","page":"DCSource","title":"FixedDCSource","text":"","category":"section"},{"location":"model_library/generated_DCSource/","page":"DCSource","title":"DCSource","text":"Modules = [PowerSystems]\nPages = [\"/FixedDCSource.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DCSource/#PowerSystems.FixedDCSource","page":"DCSource","title":"PowerSystems.FixedDCSource","text":"mutable struct FixedDCSource <: DCSource\n voltage::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of a Fixed DC Source that returns a fixed DC voltage\n\nArguments\n\nvoltage::Float64: rated VA, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}\nn_states::Int: FixedDCSource has no states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DCSource/#PowerSystems.get_ext-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_ext","text":"get_ext(value::FixedDCSource) -> Dict{String, Any}\n\n\nGet FixedDCSource ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_n_states-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_n_states","text":"get_n_states(value::FixedDCSource) -> Int64\n\n\nGet FixedDCSource n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_states-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_states","text":"get_states(value::FixedDCSource) -> Vector{Symbol}\n\n\nGet FixedDCSource states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_voltage-Tuple{FixedDCSource}","page":"DCSource","title":"PowerSystems.get_voltage","text":"get_voltage(value::FixedDCSource) -> Float64\n\n\nGet FixedDCSource voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_ext!-Tuple{FixedDCSource, Any}","page":"DCSource","title":"PowerSystems.set_ext!","text":"set_ext!(value::FixedDCSource, val) -> Any\n\n\nSet FixedDCSource ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_voltage!-Tuple{FixedDCSource, Any}","page":"DCSource","title":"PowerSystems.set_voltage!","text":"set_voltage!(value::FixedDCSource, val) -> Any\n\n\nSet FixedDCSource voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#ZeroOrderBESS","page":"DCSource","title":"ZeroOrderBESS","text":"","category":"section"},{"location":"model_library/generated_DCSource/","page":"DCSource","title":"DCSource","text":"Modules = [PowerSystems]\nPages = [\"/ZeroOrderBESS.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_DCSource/#PowerSystems.ZeroOrderBESS","page":"DCSource","title":"PowerSystems.ZeroOrderBESS","text":"mutable struct ZeroOrderBESS <: DCSource\n rated_voltage::Float64\n rated_current::Float64\n battery_voltage::Float64\n battery_resistance::Float64\n dc_dc_inductor::Float64\n dc_link_capacitance::Float64\n fs::Float64\n kpv::Float64\n kiv::Float64\n kpi::Float64\n kii::Float64\n Vdc_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters for the DC-side with a Battery Energy Storage System from paper at https://arxiv.org/abs/2007.11776\n\nArguments\n\nrated_voltage::Float64: rated voltage, validation range: (0, nothing)\nrated_current::Float64: rated current, validation range: (0, nothing)\nbattery_voltage::Float64: battery voltage, validation range: (0, nothing)\nbattery_resistance::Float64: battery_resistance, validation range: (0, nothing)\ndc_dc_inductor::Float64: DC/DC inductance, validation range: (0, nothing)\ndc_link_capacitance::Float64: DC-link capacitor, validation range: (0, nothing)\nfs::Float64: DC/DC converter switching frequency, validation range: (0, nothing)\nkpv::Float64: voltage controller proportional gain, validation range: (0, nothing)\nkiv::Float64: voltage controller integral gain, validation range: (0, nothing)\nkpi::Float64: current controller proportional gain, validation range: (0, nothing)\nkii::Float64: current controller integral gain, validation range: (0, nothing)\nVdc_ref::Float64: Reference DC-Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the ZeroOrderBESS model are:\n\nv_dc: DC-link votlage,\ni_b: Battery current,\n ν: integrator state of the voltage controller,\n ζ: integrator state of the PI current controller\n\nn_states::Int: ZeroOrderBESS has 4 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_DCSource/#PowerSystems.get_Vdc_ref-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_Vdc_ref","text":"get_Vdc_ref(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS Vdc_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_battery_resistance-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_battery_resistance","text":"get_battery_resistance(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS battery_resistance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_battery_voltage-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_battery_voltage","text":"get_battery_voltage(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS battery_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_dc_dc_inductor-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_dc_dc_inductor","text":"get_dc_dc_inductor(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS dc_dc_inductor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_dc_link_capacitance-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_dc_link_capacitance","text":"get_dc_link_capacitance(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS dc_link_capacitance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_ext-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_ext","text":"get_ext(value::ZeroOrderBESS) -> Dict{String, Any}\n\n\nGet ZeroOrderBESS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_fs-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_fs","text":"get_fs(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS fs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kii-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kii","text":"get_kii(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kii.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kiv-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kiv","text":"get_kiv(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kpi-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kpi","text":"get_kpi(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kpi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_kpv-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_kpv","text":"get_kpv(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_n_states-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_n_states","text":"get_n_states(value::ZeroOrderBESS) -> Int64\n\n\nGet ZeroOrderBESS n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_rated_current-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_rated_current","text":"get_rated_current(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_rated_voltage-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_rated_voltage","text":"get_rated_voltage(value::ZeroOrderBESS) -> Float64\n\n\nGet ZeroOrderBESS rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.get_states-Tuple{ZeroOrderBESS}","page":"DCSource","title":"PowerSystems.get_states","text":"get_states(value::ZeroOrderBESS) -> Vector{Symbol}\n\n\nGet ZeroOrderBESS states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_Vdc_ref!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_Vdc_ref!","text":"set_Vdc_ref!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS Vdc_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_battery_resistance!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_battery_resistance!","text":"set_battery_resistance!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS battery_resistance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_battery_voltage!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_battery_voltage!","text":"set_battery_voltage!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS battery_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_dc_dc_inductor!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_dc_dc_inductor!","text":"set_dc_dc_inductor!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS dc_dc_inductor.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_dc_link_capacitance!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_dc_link_capacitance!","text":"set_dc_link_capacitance!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS dc_link_capacitance.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_ext!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_ext!","text":"set_ext!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_fs!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_fs!","text":"set_fs!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS fs.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kii!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kii!","text":"set_kii!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kii.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kiv!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kiv!","text":"set_kiv!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kpi!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kpi!","text":"set_kpi!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kpi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_kpv!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_kpv!","text":"set_kpv!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_rated_current!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_rated_current!","text":"set_rated_current!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS rated_current.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_DCSource/#PowerSystems.set_rated_voltage!-Tuple{ZeroOrderBESS, Any}","page":"DCSource","title":"PowerSystems.set_rated_voltage!","text":"set_rated_voltage!(value::ZeroOrderBESS, val) -> Any\n\n\nSet ZeroOrderBESS rated_voltage.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#Shaft","page":"Shaft","title":"Shaft","text":"","category":"section"},{"location":"model_library/generated_Shaft/#FiveMassShaft","page":"Shaft","title":"FiveMassShaft","text":"","category":"section"},{"location":"model_library/generated_Shaft/","page":"Shaft","title":"Shaft","text":"Modules = [PowerSystems]\nPages = [\"/FiveMassShaft.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Shaft/#PowerSystems.FiveMassShaft","page":"Shaft","title":"PowerSystems.FiveMassShaft","text":"mutable struct FiveMassShaft <: Shaft\n H::Float64\n H_hp::Float64\n H_ip::Float64\n H_lp::Float64\n H_ex::Float64\n D::Float64\n D_hp::Float64\n D_ip::Float64\n D_lp::Float64\n D_ex::Float64\n D_12::Float64\n D_23::Float64\n D_34::Float64\n D_45::Float64\n K_hp::Float64\n K_ip::Float64\n K_lp::Float64\n K_ex::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of 5 mass-spring shaft model. It contains a High-Pressure (HP) steam turbine, Intermediate-Pressure (IP) steam turbine, Low-Pressure (LP) steam turbine, the Rotor and an Exciter (EX) mover.\n\nArguments\n\nH::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)\nH_hp::Float64: High pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)\nH_ip::Float64: Intermediate pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)\nH_lp::Float64: Low pressure turbine inertia constant in MWs/MVA, validation range: (0, nothing)\nH_ex::Float64: Exciter inertia constant in MWs/MVA, validation range: (0, nothing)\nD::Float64: Rotor natural damping in pu, validation range: (0, nothing)\nD_hp::Float64: High pressure turbine natural damping in pu, validation range: (0, nothing)\nD_ip::Float64: Intermediate pressure turbine natural damping in pu, validation range: (0, nothing)\nD_lp::Float64: Low pressure turbine natural damping in pu, validation range: (0, nothing)\nD_ex::Float64: Exciter natural damping in pu, validation range: (0, nothing)\nD_12::Float64: High-Intermediate pressure turbine damping, validation range: (0, nothing)\nD_23::Float64: Intermediate-Low pressure turbine damping, validation range: (0, nothing)\nD_34::Float64: Low pressure turbine-Rotor damping, validation range: (0, nothing)\nD_45::Float64: Rotor-Exciter damping, validation range: (0, nothing)\nK_hp::Float64: High pressure turbine angle coefficient, validation range: (0, nothing)\nK_ip::Float64: Intermediate pressure turbine angle coefficient, validation range: (0, nothing)\nK_lp::Float64: Low pressure turbine angle coefficient, validation range: (0, nothing)\nK_ex::Float64: Exciter angle coefficient, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nδ: rotor angle,\nω: rotor speed,\nδ_hp: rotor angle of high pressure turbine,\nω_hp: rotor speed of high pressure turbine,\nδ_ip: rotor angle of intermediate pressure turbine,\nω_ip: rotor speed of intermediate pressure turbine,\nδ_lp: rotor angle of low pressure turbine,\nω_lp: rotor speed of low pressure turbine,\nδ_ex: rotor angle of exciter,\nω_lp: rotor speed of exciter\n\nn_states::Int: FiveMassShaft has 10 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D","text":"get_D(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_12-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_12","text":"get_D_12(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_23-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_23","text":"get_D_23(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_23.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_34-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_34","text":"get_D_34(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_34.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_45-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_45","text":"get_D_45(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_45.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_ex-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_ex","text":"get_D_ex(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_hp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_hp","text":"get_D_hp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_ip-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_ip","text":"get_D_ip(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D_lp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_D_lp","text":"get_D_lp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft D_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H","text":"get_H(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_ex-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_ex","text":"get_H_ex(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_hp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_hp","text":"get_H_hp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_ip-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_ip","text":"get_H_ip(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H_lp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_H_lp","text":"get_H_lp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft H_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_ex-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_ex","text":"get_K_ex(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_hp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_hp","text":"get_K_hp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_ip-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_ip","text":"get_K_ip(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_K_lp-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_K_lp","text":"get_K_lp(value::FiveMassShaft) -> Float64\n\n\nGet FiveMassShaft K_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_ext-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_ext","text":"get_ext(value::FiveMassShaft) -> Dict{String, Any}\n\n\nGet FiveMassShaft ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_n_states-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_n_states","text":"get_n_states(value::FiveMassShaft) -> Int64\n\n\nGet FiveMassShaft n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_states-Tuple{FiveMassShaft}","page":"Shaft","title":"PowerSystems.get_states","text":"get_states(value::FiveMassShaft) -> Vector{Symbol}\n\n\nGet FiveMassShaft states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D!","text":"set_D!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_12!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_12!","text":"set_D_12!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_12.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_23!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_23!","text":"set_D_23!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_23.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_34!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_34!","text":"set_D_34!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_34.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_45!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_45!","text":"set_D_45!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_45.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_ex!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_ex!","text":"set_D_ex!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_hp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_hp!","text":"set_D_hp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_ip!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_ip!","text":"set_D_ip!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D_lp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_D_lp!","text":"set_D_lp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft D_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H!","text":"set_H!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_ex!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_ex!","text":"set_H_ex!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_hp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_hp!","text":"set_H_hp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_ip!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_ip!","text":"set_H_ip!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H_lp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_H_lp!","text":"set_H_lp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft H_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_ex!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_ex!","text":"set_K_ex!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_ex.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_hp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_hp!","text":"set_K_hp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_hp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_ip!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_ip!","text":"set_K_ip!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_ip.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_K_lp!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_K_lp!","text":"set_K_lp!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft K_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_ext!-Tuple{FiveMassShaft, Any}","page":"Shaft","title":"PowerSystems.set_ext!","text":"set_ext!(value::FiveMassShaft, val) -> Any\n\n\nSet FiveMassShaft ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#SingleMass","page":"Shaft","title":"SingleMass","text":"","category":"section"},{"location":"model_library/generated_Shaft/","page":"Shaft","title":"Shaft","text":"Modules = [PowerSystems]\nPages = [\"/SingleMass.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_Shaft/#PowerSystems.SingleMass","page":"Shaft","title":"PowerSystems.SingleMass","text":"mutable struct SingleMass <: Shaft\n H::Float64\n D::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nParameters of single mass shaft model. Typically represents the rotor mass.\n\nArguments\n\nH::Float64: Rotor inertia constant in MWs/MVA, validation range: (0, nothing)\nD::Float64: Rotor natural damping in pu, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nδ: rotor angle,\nω: rotor speed\n\nn_states::Int: SingleMass has 1 state\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_Shaft/#PowerSystems.get_D-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_D","text":"get_D(value::SingleMass) -> Float64\n\n\nGet SingleMass D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_H-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_H","text":"get_H(value::SingleMass) -> Float64\n\n\nGet SingleMass H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_ext-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_ext","text":"get_ext(value::SingleMass) -> Dict{String, Any}\n\n\nGet SingleMass ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_n_states-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_n_states","text":"get_n_states(value::SingleMass) -> Int64\n\n\nGet SingleMass n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.get_states-Tuple{SingleMass}","page":"Shaft","title":"PowerSystems.get_states","text":"get_states(value::SingleMass) -> Vector{Symbol}\n\n\nGet SingleMass states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_D!-Tuple{SingleMass, Any}","page":"Shaft","title":"PowerSystems.set_D!","text":"set_D!(value::SingleMass, val) -> Any\n\n\nSet SingleMass D.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_H!-Tuple{SingleMass, Any}","page":"Shaft","title":"PowerSystems.set_H!","text":"set_H!(value::SingleMass, val) -> Any\n\n\nSet SingleMass H.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_Shaft/#PowerSystems.set_ext!-Tuple{SingleMass, Any}","page":"Shaft","title":"PowerSystems.set_ext!","text":"set_ext!(value::SingleMass, val) -> Any\n\n\nSet SingleMass ext.\n\n\n\n\n\n","category":"method"},{"location":"modeler_guide/system/#system_doc","page":"System","title":"System","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The System is the main container of components and the time series data references. PowerSystems.jl uses a hybrid approach to data storage, where the component data and time series references are stored in volatile memory while the actual time series data is stored in an HDF5 file. This design loads into memory the portions of the data that are relevant at time of the query, and so avoids overwhelming the memory resources.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"","category":"page"},{"location":"modeler_guide/system/#Accessing-components-stored-in-the-system","page":"System","title":"Accessing components stored in the system","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"PowerSystems.jl implements a wide variety of methods to search for components to aid in the development of models. The code block shows an example of retrieving components through the type hierarchy with the get_components function and exploiting the type hierarchy for modeling purposes.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The default implementation of the function get_components takes the desired device type (concrete or abstract) and the system and it also accepts filter functions for a more refined search. The container is optimized for iteration over abstract or concrete component types as described by the Type Structure. Given the potential size of the return, PowerSystems.jl returns Julia iterators in order to avoid unnecessary memory allocations.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"using PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\")\nsystem = System(joinpath(file_dir, \"RTS_GMLC.m\"));\nthermal_gens = get_components(ThermalStandard, system)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"It is also possible to execute get_components with abstract types from the abstract tree. For instance, it is possible to retrieve all renewable generators","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"thermal_gens = get_components(RenewableGen, system)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The most common filtering requirement is by component name and for this case the method get_component returns a single component taking the device type, system and name as arguments.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"my_thermal_gen = get_component(ThermalStandard, system, \"323_CC_1\")","category":"page"},{"location":"modeler_guide/system/#dot_access","page":"System","title":"Accessing data stored in a component","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Using the \"dot\" access to get a parameter value from a component is actively discouraged, use \"getter\" functions instead","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Using code autogeneration, PowerSystems.jl implements accessor (or \"getter\") functions to enable the retrieval of parameters defined in the component struct fields. Julia syntax enables access to this data using the \"dot\" access (e.g. component.field), however this is actively discouraged for two reasons:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"We make no guarantees on the stability of component structure definitions. We will maintain version stability on the accessor methods.\nPer-unit conversions are made in the return of data from the accessor functions. (see the per-unit section for more details)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"For example, the my_thermal_gen.active_power_limits parameter of a thermal generator should be accessed as follows:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"get_active_power_limits(my_thermal_gen)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"You can also view data from all instances of a concrete type in one table with the function show_components. It provides a few options:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"View the standard fields by accepting the defaults.\nPass a dictionary where the keys are column names and the values are functions that accept a component as a single argument.\nPass a vector of symbols that are field names of the type.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"show_components(system, ThermalStandard)\nshow_components(system, ThermalStandard, Dict(\"has_time_series\" => x -> has_time_series(x)))\nshow_components(system, ThermalStandard, [:active_power, :reactive_power])","category":"page"},{"location":"modeler_guide/system/#per_unit","page":"System","title":"Per-unit conventions and data conversions","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"It is often useful to express power systems data in relative terms using per-unit conventions. PowerSystems.jl supports the automatic conversion of data between three different unit systems:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Natural Units: The naturally defined units of each parameter (typically MW).\nSystem Base: Parameter values are divided by the system base_power.\nDevice Base: Parameter values are divided by the device base_mva.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"To see the unit system setting of a System:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"get_units_base(system)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"To change the unit system setting of a System:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"set_units_base_system!(system, \"DEVICE_BASE\")","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The units of the parameter values stored in each struct are defined in src/descriptors/power_system_structs.json. Conversion between unit systems does not change the stored parameter values. Instead, unit system conversions are made when accessing parameters using the accessor functions (see above), thus making it imperative to utilize the accessor functions instead of the \"dot\" accessor methods to ensure the return of the correct values.","category":"page"},{"location":"modeler_guide/system/#JSON-Serialization","page":"System","title":"JSON Serialization","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"PowerSystems.jl provides functionality to serialize an entire system to a JSON file and then deserialize it back to a system. The main benefit is that deserializing is significantly faster than reconstructing the system from raw data files.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The function that serializes the system to_json requires the system and a file name","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"to_json(system, \"system.json\")","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The serialization process stores 3 files","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"System data file (*.json file)\nValidation data file (*.json file)\nTime Series data file (*.h5 file)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"To deserialize:","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"system2 = System(\"system.json\")","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"PowerSystems generates UUIDs for the System and all components in order to have a way to uniquely identify objects. During deserialization it restores the same UUIDs. If you will modify the System or components after deserialization then it is recommended that you set this flag to generate new UUIDs.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"system2 = System(\"system.json\", assign_new_uuids = true)","category":"page"},{"location":"modeler_guide/system/#Reducing-REPL-printing","page":"System","title":"Reducing REPL printing","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"By default PowerSystems.jl outputs to the REPL all Logging values, this can be overwhelming in some cases. Use configure_logging to create a logger with your preferences (console and/or file, levels, etc.). For more detail refer to Logging.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Example: Set log output to only error messages","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"using PowerSystems\nusing Logging\nconfigure_logging(console_level = Logging.Error)","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Note: log messages are not automatically flushed to files. Call flush(logger) to make this happen.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Refer to this page for more logging configuration options. Note that it describes how to enable debug logging for some log messages but not others.","category":"page"},{"location":"modeler_guide/system/#Viewing-PowerSystems-Data-in-JSON-Format","page":"System","title":"Viewing PowerSystems Data in JSON Format","text":"","category":"section"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"PowerSystems data can be serialized and deserialized in JSON. This section shows how to explore the data outside of Julia using.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"system = System(\"system.json\")","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"It can be useful to view and filter the PowerSystems data in this format. There are many tools available to browse JSON data.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Here is an example GUI tool that is available online in a browser.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"The command line utility jq offers even more features. The rest of this document provides example commands.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"View the entire file pretty-printed","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"jq . system.json","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"View the PowerSystems component types","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"jq '.data.components | .[] | .__metadata__ | .type' system.json | sort | uniq","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"View specific components","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"jq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\")' system.json","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Get the count of a component type","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"# There is almost certainly a better way.\njq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\")' system.json | grep -c ThermalStandard","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"View specific component by name","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"jq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\" and .name == \"107_CC_1\")' system.json","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"Filter on a field value","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"jq '.data.components | .[] | select(.__metadata__.type == \"ThermalStandard\" and .active_power > 2.3)' system.json","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"View the time series metadata for a component.","category":"page"},{"location":"modeler_guide/system/","page":"System","title":"System","text":"jq '.data.components | .[] | select(.__metadata__.type == \"RenewableDispatch\") | .time_series_container' system.json","category":"page"},{"location":"modeler_guide/enumerated_types/#Enumerated-Types","page":"Enumerated Types","title":"Enumerated Types","text":"","category":"section"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"To specify fields representing an option from a pre-defined list, some of the fields of Component structs are specified with IS.scoped_enums (e.g. set_fuel!(gen, ThermalFuels.COAL)). Below are the enumerated types contained in PowerSystems.","category":"page"},{"location":"modeler_guide/enumerated_types/#ThermalFuels","page":"Enumerated Types","title":"ThermalFuels","text":"","category":"section"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"Each ThermalGen generator struct contains a field for fuel::ThermalFuels where ThermalFuels are intended to reflect the options denoted by the Aggregated Fuel Codes from the EIA Annual Energy Review. Specifically, ThermalFuels is an enumerated type with the following options:","category":"page"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"EnumName EIA Fuel Code Description\nCOAL COL Anthracite Coal and Bituminous Coal\nWASTE_COAL WOC Waste/Other Coal (includes anthracite culm, gob, fine coal, lignite waste, waste coal)\nDISTILLATE_FUEL_OIL DFO Distillate Fuel Oil (Diesel, No. 1, No. 2, and No. 4)\nWASTE_OIL WOO Waste Oil Kerosene and JetFuel Butane, Propane\nPETROLEUM_COKE PC Petroleum Coke\nRESIDUAL_FUEL_OIL RFO Residual Fuel Oil (No. 5, No. 6 Fuel Oils, and Bunker Oil)\nNATURAL_GAS NG Natural Gas\nOTHER_GAS OOG Other Gas and blast furnace gas\nNUCLEAR NUC Nuclear Fission (Uranium, Plutonium, Thorium)\nAG_BIPRODUCT ORW Agricultural Crop Byproducts/Straw/Energy Crops\nMUNICIPAL_WASTE MLG Municipal Solid Waste – Biogenic component\nWOOD_WASTE WWW Wood Waste Liquids excluding Black Liquor (BLQ) (Includes red liquor, sludge wood, spent sulfite liquor, and other wood-based liquids)\nGEOTHERMAL GEO Geothermal\nOTHER OTH Other","category":"page"},{"location":"modeler_guide/enumerated_types/#PrimeMovers","page":"Enumerated Types","title":"PrimeMovers","text":"","category":"section"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"Each generator struct contains a field for prime_mover::PrimeMovers where PrimeMovers are intended to reflect the options denoted by EIA form 923. Specifically, PrimeMovers is an enumerated type with the following options:","category":"page"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"EnumName Description\nBA Energy Storage, Battery\nBT Turbines Used in a Binary Cycle (including those used for geothermal applications)\nCA Combined-Cycle – Steam Part\nCC Combined-Cycle - Aggregated Plant *augmentation of EIA\nCE Energy Storage, Compressed Air\nCP Energy Storage, Concentrated Solar Power\nCS Combined-Cycle Single-Shaft Combustion turbine and steam turbine share a single generator\nCT Combined-Cycle Combustion Turbine Part\nES Energy Storage, Other\nFC Fuel Cell\nFW Energy Storage, Flywheel\nGT Combustion (Gas) Turbine (including jet engine design)\nHA Hydrokinetic, Axial Flow Turbine\nHB Hydrokinetic, Wave Buoy\nHK Hydrokinetic, Other\nHY Hydraulic Turbine (including turbines associated with delivery of water by pipeline)\nIC Internal Combustion (diesel, piston, reciprocating) Engine\nPS Energy Storage, Reversible Hydraulic Turbine (Pumped Storage)\nOT Other\nST Steam Turbine (including nuclear, geothermal and solar steam; does not include combined-cycle turbine)\nPV Photovoltaic *renaming from EIA PV to PVe to avoid conflict with ACBusType.PV\nWT Wind Turbine, Onshore\nWS Wind Turbine, Offshore","category":"page"},{"location":"modeler_guide/enumerated_types/#ACBusTypes","page":"Enumerated Types","title":"ACBusTypes","text":"","category":"section"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"ACBusTypes is used to denote which quantities are specified for load flow calculations and to otherwise categorize buses for modeling activities.","category":"page"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"EnumName Description\nISOLATED Disconnected from network\nPQ Active and reactive power defined (load bus)\nPV Active power and voltage magnitude defined (generator bus)\nREF Reference bus (θ = 0)\nSLACK Slack bus","category":"page"},{"location":"modeler_guide/enumerated_types/#AngleUnits","page":"Enumerated Types","title":"AngleUnits","text":"","category":"section"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"EnumName\nDEGREES\nRADIANS","category":"page"},{"location":"modeler_guide/enumerated_types/#StateTypes","page":"Enumerated Types","title":"StateTypes","text":"","category":"section"},{"location":"modeler_guide/enumerated_types/","page":"Enumerated Types","title":"Enumerated Types","text":"EnumName\nDifferential\nAlgebraic\nHybrid","category":"page"},{"location":"model_library/outer_control/#OuterControl","page":"OuterControl","title":"OuterControl","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"The outer control is composed by the ReactivePowerControl and the ActivePowerControl types.","category":"page"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"/OuterControl.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.OuterControl","page":"OuterControl","title":"PowerSystems.OuterControl","text":"mutable struct OuterControl{\n A <: ActivePowerControl,\n R <: ReactivePowerControl\n} <: DynamicInverterComponent\n active_power_control::A\n reactive_power_control::R\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Outer-Loop controller using a active power controller and a reactive power droop controller.\n\nArguments\n\nA <: ActivePowerControl: Active power controller (typically droop or virtual inertia).\nR <: ReactivePowerControl: Reactive power controller (typically droop).\next::Dict{String, Any}\nstates::Vector{Symbol}: Vector of states (will depend on the components).\nn_states::Int: Number of states (will depend on the components).\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#Virtual-Inertia","page":"OuterControl","title":"Virtual Inertia","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/VirtualInertia.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.VirtualInertia","page":"OuterControl","title":"PowerSystems.VirtualInertia","text":"mutable struct VirtualInertia <: ActivePowerControl\n Ta::Float64\n kd::Float64\n kω::Float64\n P_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Virtual Inertia with SRF using VSM for active power controller\n\nArguments\n\nTa::Float64: VSM inertia constant, validation range: (0, nothing)\nkd::Float64: VSM damping constant, validation range: (0, nothing)\nkω::Float64: frequency droop gain, validation range: (0, nothing)\nP_ref::Float64: Reference Power Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the VirtualInertia model are:\n\nθ_oc: Phase angle displacement of the virtual synchronous generator model\nω_oc: Speed of the rotating reference frame of the virtual synchronous generator model\n\nn_states::Int: VirtualInertia has two states\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_P_ref-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_P_ref","text":"get_P_ref(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_Ta-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_Ta","text":"get_Ta(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::VirtualInertia) -> Dict{String, Any}\n\n\nGet VirtualInertia ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_kd-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_kd","text":"get_kd(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_kω-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_kω","text":"get_kω(value::VirtualInertia) -> Float64\n\n\nGet VirtualInertia kω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::VirtualInertia) -> Int64\n\n\nGet VirtualInertia n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{VirtualInertia}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::VirtualInertia) -> Vector{Symbol}\n\n\nGet VirtualInertia states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_P_ref!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_P_ref!","text":"set_P_ref!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia P_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_Ta!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_Ta!","text":"set_Ta!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia Ta.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_kd!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_kd!","text":"set_kd!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia kd.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_kω!-Tuple{VirtualInertia, Any}","page":"OuterControl","title":"PowerSystems.set_kω!","text":"set_kω!(value::VirtualInertia, val) -> Any\n\n\nSet VirtualInertia kω.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#Reactive-Power-Droop","page":"OuterControl","title":"Reactive Power Droop","text":"","category":"section"},{"location":"model_library/outer_control/","page":"OuterControl","title":"OuterControl","text":"Modules = [PowerSystems]\nPages = [\"generated/ReactivePowerDroop.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/outer_control/#PowerSystems.ReactivePowerDroop","page":"OuterControl","title":"PowerSystems.ReactivePowerDroop","text":"mutable struct ReactivePowerDroop <: ReactivePowerControl\n kq::Float64\n ωf::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Reactive Power droop controller\n\nArguments\n\nkq::Float64: frequency droop gain, validation range: (0, nothing)\nωf::Float64: filter frequency cutoff, validation range: (0, nothing)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the ReactivePowerDroop model are:\n\nq_oc: Filtered reactive output power\n\nn_states::Int: ReactivePowerDroop has 1 state\n\n\n\n\n\n","category":"type"},{"location":"model_library/outer_control/#PowerSystems.get_V_ref-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_V_ref","text":"get_V_ref(value::ReactivePowerDroop) -> Float64\n\n\nGet ReactivePowerDroop V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ext-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_ext","text":"get_ext(value::ReactivePowerDroop) -> Dict{String, Any}\n\n\nGet ReactivePowerDroop ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_kq-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_kq","text":"get_kq(value::ReactivePowerDroop) -> Float64\n\n\nGet ReactivePowerDroop kq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_n_states-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReactivePowerDroop) -> Int64\n\n\nGet ReactivePowerDroop n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_states-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_states","text":"get_states(value::ReactivePowerDroop) -> Vector{Symbol}\n\n\nGet ReactivePowerDroop states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.get_ωf-Tuple{ReactivePowerDroop}","page":"OuterControl","title":"PowerSystems.get_ωf","text":"get_ωf(value::ReactivePowerDroop) -> Float64\n\n\nGet ReactivePowerDroop ωf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_V_ref!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_V_ref!","text":"set_V_ref!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop V_ref.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ext!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_kq!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_kq!","text":"set_kq!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop kq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/outer_control/#PowerSystems.set_ωf!-Tuple{ReactivePowerDroop, Any}","page":"OuterControl","title":"PowerSystems.set_ωf!","text":"set_ωf!(value::ReactivePowerDroop, val) -> Any\n\n\nSet ReactivePowerDroop ωf.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#InnerControl","page":"InnerControl","title":"InnerControl","text":"","category":"section"},{"location":"model_library/generated_InnerControl/#CurrentModeControl","page":"InnerControl","title":"CurrentModeControl","text":"","category":"section"},{"location":"model_library/generated_InnerControl/","page":"InnerControl","title":"InnerControl","text":"Modules = [PowerSystems]\nPages = [\"/CurrentModeControl.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InnerControl/#PowerSystems.CurrentModeControl","page":"InnerControl","title":"PowerSystems.CurrentModeControl","text":"mutable struct CurrentModeControl <: InnerControl\n kpc::Float64\n kic::Float64\n kffv::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an inner loop PI current control using based on Purba, Dhople, Jafarpour, Bullo and Johnson. \"Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters.\" 2017 IEEE 18th Workshop on Control and Modeling for Power Electronics (COMPEL): 1-7.\n\nArguments\n\nkpc::Float64: Current controller proportional gain, validation range: (0, nothing)\nkic::Float64: Current controller integral gain, validation range: (0, nothing)\nkffv::Float64: Gain to enable feed-forward gain of voltage., validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the CurrentModeControl model are:\n\nγd_ic: d-axis integrator state of the PI current controller,\nγq_ic: q-axis integrator state of the PI current controller\n\nn_states::Int: CurrentControl has 2 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ext-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_ext","text":"get_ext(value::CurrentModeControl) -> Dict{String, Any}\n\n\nGet CurrentModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kffv-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_kffv","text":"get_kffv(value::CurrentModeControl) -> Float64\n\n\nGet CurrentModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kic-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_kic","text":"get_kic(value::CurrentModeControl) -> Float64\n\n\nGet CurrentModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kpc-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_kpc","text":"get_kpc(value::CurrentModeControl) -> Float64\n\n\nGet CurrentModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_n_states-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::CurrentModeControl) -> Int64\n\n\nGet CurrentModeControl n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_states-Tuple{CurrentModeControl}","page":"InnerControl","title":"PowerSystems.get_states","text":"get_states(value::CurrentModeControl) -> Vector{Symbol}\n\n\nGet CurrentModeControl states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ext!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kffv!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kffv!","text":"set_kffv!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kic!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kic!","text":"set_kic!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kpc!-Tuple{CurrentModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kpc!","text":"set_kpc!(value::CurrentModeControl, val) -> Any\n\n\nSet CurrentModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#RECurrentControlB","page":"InnerControl","title":"RECurrentControlB","text":"","category":"section"},{"location":"model_library/generated_InnerControl/","page":"InnerControl","title":"InnerControl","text":"Modules = [PowerSystems]\nPages = [\"/RECurrentControlB.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InnerControl/#PowerSystems.RECurrentControlB","page":"InnerControl","title":"PowerSystems.RECurrentControlB","text":"mutable struct RECurrentControlB <: InnerControl\n Q_Flag::Int\n PQ_Flag::Int\n Vdip_lim::MinMax\n T_rv::Float64\n dbd_pnts::Tuple{Float64, Float64}\n K_qv::Float64\n Iqinj_lim::MinMax\n V_ref0::Float64\n K_vp::Float64\n K_vi::Float64\n T_iq::Float64\n I_max::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of the Inner Control part of the REECB model in PSS/E\n\nArguments\n\nQ_Flag::Int: Q Flag used for I_qinj, validation range: (0, 1)\nPQ_Flag::Int: PQ Flag used for the Current Limit Logic, validation range: (0, 1)\nVdip_lim::MinMax: Limits for Voltage Dip Logic (Vdip, Vup)\nT_rv::Float64: Voltage Filter Time Constant, validation range: (0, nothing)\ndbd_pnts::Tuple{Float64, Float64}: Voltage error deadband thresholds (dbd1, dbd2)\nK_qv::Float64: Reactive current injection gain during over and undervoltage conditions, validation range: (0, nothing)\nIqinj_lim::MinMax: Limits for Iqinj (I_qh1, I_ql1)\nV_ref0::Float64: User defined reference. If 0, PSID initializes to initial terminal voltage, validation range: (0, nothing)\nK_vp::Float64: Voltage regulator proportional gain (used when QFlag = 1), validation range: (0, nothing)\nK_vi::Float64: Voltage regulator integral gain (used when QFlag = 1), validation range: (0, nothing)\nT_iq::Float64: Time constant for low-pass filter for state q_V when QFlag = 0, validation range: (0, nothing)\nI_max::Float64: Maximum limit on total converter current, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the RECurrentControlB depends on the Flags\nn_states::Int: The states of the RECurrentControlB depends on the Flags\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_I_max-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_I_max","text":"get_I_max(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_Iqinj_lim-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_Iqinj_lim","text":"get_Iqinj_lim(\n value::RECurrentControlB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RECurrentControlB Iqinj_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_K_qv-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_K_qv","text":"get_K_qv(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB K_qv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_K_vi-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_K_vi","text":"get_K_vi(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB K_vi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_K_vp-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_K_vp","text":"get_K_vp(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB K_vp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_PQ_Flag-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_PQ_Flag","text":"get_PQ_Flag(value::RECurrentControlB) -> Int64\n\n\nGet RECurrentControlB PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_Q_Flag-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_Q_Flag","text":"get_Q_Flag(value::RECurrentControlB) -> Int64\n\n\nGet RECurrentControlB Q_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_T_iq-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_T_iq","text":"get_T_iq(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB T_iq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_T_rv-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_T_rv","text":"get_T_rv(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB T_rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_V_ref0-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_V_ref0","text":"get_V_ref0(value::RECurrentControlB) -> Float64\n\n\nGet RECurrentControlB V_ref0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_Vdip_lim-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_Vdip_lim","text":"get_Vdip_lim(\n value::RECurrentControlB\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nGet RECurrentControlB Vdip_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_dbd_pnts-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_dbd_pnts","text":"get_dbd_pnts(\n value::RECurrentControlB\n) -> Tuple{Float64, Float64}\n\n\nGet RECurrentControlB dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ext-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_ext","text":"get_ext(value::RECurrentControlB) -> Dict{String, Any}\n\n\nGet RECurrentControlB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_n_states-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::RECurrentControlB) -> Int64\n\n\nGet RECurrentControlB n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_states-Tuple{RECurrentControlB}","page":"InnerControl","title":"PowerSystems.get_states","text":"get_states(value::RECurrentControlB) -> Vector{Symbol}\n\n\nGet RECurrentControlB states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_I_max!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_I_max!","text":"set_I_max!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB I_max.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_Iqinj_lim!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_Iqinj_lim!","text":"set_Iqinj_lim!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB Iqinj_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_K_qv!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_K_qv!","text":"set_K_qv!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB K_qv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_K_vi!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_K_vi!","text":"set_K_vi!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB K_vi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_K_vp!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_K_vp!","text":"set_K_vp!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB K_vp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_PQ_Flag!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_PQ_Flag!","text":"set_PQ_Flag!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB PQ_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_Q_Flag!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_Q_Flag!","text":"set_Q_Flag!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB Q_Flag.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_T_iq!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_T_iq!","text":"set_T_iq!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB T_iq.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_T_rv!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_T_rv!","text":"set_T_rv!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB T_rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_V_ref0!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_V_ref0!","text":"set_V_ref0!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB V_ref0.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_Vdip_lim!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_Vdip_lim!","text":"set_Vdip_lim!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB Vdip_lim.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_dbd_pnts!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_dbd_pnts!","text":"set_dbd_pnts!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB dbd_pnts.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ext!-Tuple{RECurrentControlB, Any}","page":"InnerControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::RECurrentControlB, val) -> Any\n\n\nSet RECurrentControlB ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#VoltageModeControl","page":"InnerControl","title":"VoltageModeControl","text":"","category":"section"},{"location":"model_library/generated_InnerControl/","page":"InnerControl","title":"InnerControl","text":"Modules = [PowerSystems]\nPages = [\"/VoltageModeControl.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_InnerControl/#PowerSystems.VoltageModeControl","page":"InnerControl","title":"PowerSystems.VoltageModeControl","text":"mutable struct VoltageModeControl <: InnerControl\n kpv::Float64\n kiv::Float64\n kffv::Float64\n rv::Float64\n lv::Float64\n kpc::Float64\n kic::Float64\n kffi::Float64\n ωad::Float64\n kad::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of an inner loop current control PID using virtual impedance based on D'Arco, Suul and Fosso. \"A Virtual Synchronous Machine implementation for distributed control of power converters in SmartGrids.\" Electric Power Systems Research 122 (2015) 180–197.\n\nArguments\n\nkpv::Float64: voltage controller proportional gain, validation range: (0, nothing)\nkiv::Float64: voltage controller integral gain, validation range: (0, nothing)\nkffv::Float64: Binary variable to enable feed-forward gain of voltage., validation range: (0, nothing)\nrv::Float64: virtual resistance, validation range: (0, nothing)\nlv::Float64: virtual inductance, validation range: (0, nothing)\nkpc::Float64: current controller proportional gain, validation range: (0, nothing)\nkic::Float64: current controller integral gain, validation range: (0, nothing)\nkffi::Float64: Binary variable to enable feed-forward gain of current, validation range: (0, nothing)\nωad::Float64: active damping filter cutoff frequency (rad/sec), validation range: (0, nothing)\nkad::Float64: active damping gain, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the VoltageModeControl model are:\n\nξd_ic: d-axis integrator state of the PI voltage controller,\nξq_ic: q-axis integrator state of the PI voltage controller,\nγd_ic: d-axis integrator state of the PI current controller,\nγq_ic: q-axis integrator state of the PI current controller,\nϕd_ic: d-axis low-pass filter of active damping,\nϕq_ic: q-axis low-pass filter of active damping\n\nn_states::Int: VoltageModeControl has 6 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ext-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_ext","text":"get_ext(value::VoltageModeControl) -> Dict{String, Any}\n\n\nGet VoltageModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kad-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kad","text":"get_kad(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kffi-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kffi","text":"get_kffi(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kffi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kffv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kffv","text":"get_kffv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kic-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kic","text":"get_kic(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kiv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kiv","text":"get_kiv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kpc-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kpc","text":"get_kpc(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_kpv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_kpv","text":"get_kpv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_lv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_lv","text":"get_lv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl lv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_n_states-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_n_states","text":"get_n_states(value::VoltageModeControl) -> Int64\n\n\nGet VoltageModeControl n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_rv-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_rv","text":"get_rv(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_states-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_states","text":"get_states(value::VoltageModeControl) -> Vector{Symbol}\n\n\nGet VoltageModeControl states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.get_ωad-Tuple{VoltageModeControl}","page":"InnerControl","title":"PowerSystems.get_ωad","text":"get_ωad(value::VoltageModeControl) -> Float64\n\n\nGet VoltageModeControl ωad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ext!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_ext!","text":"set_ext!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kad!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kad!","text":"set_kad!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kffi!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kffi!","text":"set_kffi!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kffi.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kffv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kffv!","text":"set_kffv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kffv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kic!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kic!","text":"set_kic!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kic.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kiv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kiv!","text":"set_kiv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kiv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kpc!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kpc!","text":"set_kpc!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kpc.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_kpv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_kpv!","text":"set_kpv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl kpv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_lv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_lv!","text":"set_lv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl lv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_rv!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_rv!","text":"set_rv!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl rv.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_InnerControl/#PowerSystems.set_ωad!-Tuple{VoltageModeControl, Any}","page":"InnerControl","title":"PowerSystems.set_ωad!","text":"set_ωad!(value::VoltageModeControl, val) -> Any\n\n\nSet VoltageModeControl ωad.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#TransmissionInterface","page":"TransmissionInterface","title":"TransmissionInterface","text":"","category":"section"},{"location":"model_library/generated_TransmissionInterface/","page":"TransmissionInterface","title":"TransmissionInterface","text":"Modules = [PowerSystems]\nPages = [\"generated/TransmissionInterface.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.TransmissionInterface","page":"TransmissionInterface","title":"PowerSystems.TransmissionInterface","text":"mutable struct TransmissionInterface <: Service\n name::String\n available::Bool\n active_power_flow_limits::MinMax\n violation_penalty::Float64\n direction_mapping::Dict{String, Int}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nA collection of branches that make up an interface or corridor for the transfer of power.\n\nArguments\n\nname::String\navailable::Bool\nactive_power_flow_limits::MinMax\nviolation_penalty::Float64: Penalty for violating the flow limits in the interface\ndirection_mapping::Dict{String, Int}: Map to set of multiplier to the flow in the line for cases when the line has a reverse direction with respect to the interface\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_TransmissionInterface/#InfrastructureSystems.get_name-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"InfrastructureSystems.get_name","text":"get_name(value::TransmissionInterface) -> String\n\n\nGet TransmissionInterface name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#InfrastructureSystems.get_time_series_container-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::TransmissionInterface\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet TransmissionInterface time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_active_power_flow_limits-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_active_power_flow_limits","text":"get_active_power_flow_limits(\n value::TransmissionInterface\n) -> NamedTuple{(:min, :max), <:Tuple{Any, Any}}\n\n\nGet TransmissionInterface active_power_flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_available-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_available","text":"get_available(value::TransmissionInterface) -> Bool\n\n\nGet TransmissionInterface available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_direction_mapping-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_direction_mapping","text":"get_direction_mapping(\n value::TransmissionInterface\n) -> Dict{String, Int64}\n\n\nGet TransmissionInterface direction_mapping.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.get_violation_penalty-Tuple{TransmissionInterface}","page":"TransmissionInterface","title":"PowerSystems.get_violation_penalty","text":"get_violation_penalty(\n value::TransmissionInterface\n) -> Float64\n\n\nGet TransmissionInterface violation_penalty.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_active_power_flow_limits!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_active_power_flow_limits!","text":"set_active_power_flow_limits!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface active_power_flow_limits.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_available!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_available!","text":"set_available!(value::TransmissionInterface, val) -> Any\n\n\nSet TransmissionInterface available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_direction_mapping!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_direction_mapping!","text":"set_direction_mapping!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface direction_mapping.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_time_series_container!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_TransmissionInterface/#PowerSystems.set_violation_penalty!-Tuple{TransmissionInterface, Any}","page":"TransmissionInterface","title":"PowerSystems.set_violation_penalty!","text":"set_violation_penalty!(\n value::TransmissionInterface,\n val\n) -> Any\n\n\nSet TransmissionInterface violation_penalty.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_HybridSystem/#HybridSystem","page":"HybridSystem","title":"HybridSystem","text":"","category":"section"},{"location":"model_library/generated_HybridSystem/","page":"HybridSystem","title":"HybridSystem","text":"Modules = [PowerSystems]\nPages = [\"generated/HybridSystem.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"tutorials/parse_powerflow_cases/#Parsing-Files","page":"Parsing PowerFlow Data","title":"Parsing Files","text":"","category":"section"},{"location":"tutorials/parse_powerflow_cases/","page":"Parsing PowerFlow Data","title":"Parsing PowerFlow Data","text":"Originally Contributed by: Clayton Barrows","category":"page"},{"location":"tutorials/parse_powerflow_cases/#Introduction","page":"Parsing PowerFlow Data","title":"Introduction","text":"","category":"section"},{"location":"tutorials/parse_powerflow_cases/","page":"Parsing PowerFlow Data","title":"Parsing PowerFlow Data","text":"An example of how to parse MATPOWER and PSSe raw files and create a System using PowerSystems.jl","category":"page"},{"location":"tutorials/parse_powerflow_cases/#Create-a-System-from-a-Matpower-File","page":"Parsing PowerFlow Data","title":"Create a System from a Matpower File","text":"","category":"section"},{"location":"tutorials/parse_powerflow_cases/","page":"Parsing PowerFlow Data","title":"Parsing PowerFlow Data","text":"# Load directory\nusing PowerSystems\nfile_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\"); #hide\nsys = System(joinpath(file_dir, \"case5_re.m\"))","category":"page"},{"location":"tutorials/parse_powerflow_cases/#Create-a-System-a-PSS/e-File","page":"Parsing PowerFlow Data","title":"Create a System a PSS/e File","text":"","category":"section"},{"location":"tutorials/parse_powerflow_cases/","page":"Parsing PowerFlow Data","title":"Parsing PowerFlow Data","text":"file_dir = joinpath(pkgdir(PowerSystems), \"docs\", \"src\", \"tutorials\", \"tutorials_data\"); #hide\nsys = System(joinpath(file_dir, \"RTS-GMLC.RAW\"))","category":"page"},{"location":"tutorials/parse_powerflow_cases/","page":"Parsing PowerFlow Data","title":"Parsing PowerFlow Data","text":"This data set does not contain any time series data. For this, check the next tutorial.","category":"page"},{"location":"api/internal/#Internal-API","page":"Internal API Reference","title":"Internal API","text":"","category":"section"},{"location":"api/internal/","page":"Internal API Reference","title":"Internal API Reference","text":"Modules = [PowerSystems]\nPublic = false","category":"page"},{"location":"api/internal/#PowerSystems._pti_dtypes","page":"Internal API Reference","title":"PowerSystems._pti_dtypes","text":"lookup array of data types for PTI file sections given by field_name, as enumerated by PSS/E Program Operation Manual.\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems._pti_sections","page":"Internal API Reference","title":"PowerSystems._pti_sections","text":"A list of data file sections in the order that they appear in a PTI v33 file\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems.pm_component_status","page":"Internal API Reference","title":"PowerSystems.pm_component_status","text":"maps component types to status parameters\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems.pm_component_status_inactive","page":"Internal API Reference","title":"PowerSystems.pm_component_status_inactive","text":"maps component types to inactive status values\n\n\n\n\n\n","category":"constant"},{"location":"api/internal/#PowerSystems.EX4VSA","page":"Internal API Reference","title":"PowerSystems.EX4VSA","text":"mutable struct EX4VSA <: AVR\n Iflim::Float64\n d::Float64\n f::Float64\n Spar::Float64\n K1::Float64\n K2::Float64\n Oel_lim::MinMax\n G::Float64\n Ta::Float64\n Tb::Float64\n Te::Float64\n E_lim::MinMax\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Excitation System for Voltage Security Assesment\n\nArguments\n\nIflim::Float64: OEL Field current limit, validation range: (0, nothing), action if invalid: warn\nd::Float64: OEL parameter d, validation range: (0, nothing), action if invalid: warn\nf::Float64: OEL parameter f, validation range: (0, nothing), action if invalid: warn\nSpar::Float64: OEL parameter Spar, validation range: (0, nothing), action if invalid: warn\nK1::Float64: OEL delay time constant, validation range: (0, nothing), action if invalid: warn\nK2::Float64: OEL parameter K2, validation range: (0, nothing), action if invalid: warn\nOel_lim::MinMax: Oel integrator limits (Oelmin, Oelmax)\nG::Float64: AVR Exciter Gain, validation range: (0, nothing), action if invalid: warn\nTa::Float64: Numerator lead-lag (lag) time constant in s, validation range: (0, nothing), action if invalid: warn\nTb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing), action if invalid: warn\nTe::Float64: Exciter Time Constant in s, validation range: (0, nothing), action if invalid: warn\nE_lim::MinMax: Voltage regulator limits (regulator output) (Emin, Emax)\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVll: Lead-lag internal state,\nVex: Exciter Output, \noel: OEL integrator state\n\nn_states::Int: The EX4VSA has 3 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.EXST1","page":"Internal API Reference","title":"PowerSystems.EXST1","text":"mutable struct EXST1 <: AVR\n Tr::Float64\n Vi_lim::MinMax\n Tc::Float64\n Tb::Float64\n Ka::Float64\n Ta::Float64\n Vr_lim::MinMax\n Kc::Float64\n Kf::Float64\n Tf::Float64\n V_ref::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\n internal::InfrastructureSystemsInternal\nend\n\nIEEE Type ST1 Excitation System (PTI version)\n\nArguments\n\nTr::Float64: Voltage Measurement Time Constant in s, validation range: (0, nothing), action if invalid: warn\nVi_lim::MinMax: Voltage input limits (Vimin, Vimax)\nTc::Float64: Numerator lead-lag (lead) time constant in s, validation range: (0, nothing), action if invalid: warn\nTb::Float64: Denominator lead-lag (lag) time constant in s, validation range: (0, nothing), action if invalid: warn\nKa::Float64: Amplifier Gain, validation range: (0, nothing), action if invalid: warn\nTa::Float64: Amplifier Time Constant in s, validation range: (0, nothing), action if invalid: warn\nVr_lim::MinMax: Voltage regulator limits (regulator output) (Vrmin, Vrmax)\nKc::Float64: Current field constant limiter multiplier, validation range: (0, nothing)\nKf::Float64: Excitation control system stabilizer gain, validation range: (eps(), 0.3), action if invalid: warn\nTf::Float64: Excitation control system stabilizer time constant, validation range: (eps(), nothing), action if invalid: error\nV_ref::Float64: Reference Voltage Set-point, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states are:\n\nVm: Sensed Terminal Voltage,\nVrll: Lead-Lag state,\nVr: Regulator Output, \nVfb: Feedback state\n\nn_states::Int: The EXST1 has 4 states\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.ExponentialLoad","page":"Internal API Reference","title":"PowerSystems.ExponentialLoad","text":"mutable struct ExponentialLoad <: StaticLoad\n name::String\n available::Bool\n bus::ACBus\n active_power::Float64\n reactive_power::Float64\n active_power_coefficient::Float64\n reactive_power_coefficient::Float64\n base_power::Float64\n max_active_power::Float64\n max_reactive_power::Float64\n services::Vector{Service}\n dynamic_injector::Union{Nothing, DynamicInjection}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nData structure for a static exponential load.\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nactive_power::Float64\nreactive_power::Float64\nactive_power_coefficient::Float64: Coefficient relating voltage dependence for power P = P0 * V^α, validation range: (0, nothing), action if invalid: warn\nreactive_power_coefficient::Float64: Coefficient relating voltage dependence for power Q = Q0 * V^β, validation range: (0, nothing), action if invalid: warn\nbase_power::Float64: Base power of the unit in MVA, validation range: (0, nothing), action if invalid: warn\nmax_active_power::Float64\nmax_reactive_power::Float64\nservices::Vector{Service}: Services that this device contributes to\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection device\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.OperationalCost","page":"Internal API Reference","title":"PowerSystems.OperationalCost","text":"Super type for operational cost representation in the model\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.PowerFlowDataNetwork","page":"Internal API Reference","title":"PowerSystems.PowerFlowDataNetwork","text":"Container for data parsed by PowerFlowData\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems.PowerFlowDataNetwork-Tuple{Union{IO, String}}","page":"Internal API Reference","title":"PowerSystems.PowerFlowDataNetwork","text":"PowerFlowDataNetwork(\n file::Union{IO, String};\n kwargs...\n) -> PowerSystems.PowerFlowDataNetwork\n\n\nConstructs PowerFlowDataNetwork from a raw file. Currently Supports PSSE data files v30, v32 and v33\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.SwitchedAdmittance","page":"Internal API Reference","title":"PowerSystems.SwitchedAdmittance","text":"mutable struct SwitchedAdmittance <: ElectricLoad\n name::String\n available::Bool\n bus::ACBus\n Y::Complex{Float64}\n number_of_steps::Int\n Y_increase::Complex{Float64}\n dynamic_injector::Union{Nothing, DynamicInjection}\n services::Vector{Service}\n ext::Dict{String, Any}\n time_series_container::InfrastructureSystems.TimeSeriesContainer\n internal::InfrastructureSystemsInternal\nend\n\nArguments\n\nname::String\navailable::Bool\nbus::ACBus\nY::Complex{Float64}: Initial impedance at N = 0\nnumber_of_steps::Int: Number of steps for adjustable shunt\nY_increase::Complex{Float64}: Admittance increment for each of step increase\ndynamic_injector::Union{Nothing, DynamicInjection}: corresponding dynamic injection model for admittance\nservices::Vector{Service}: Services that this device contributes to\next::Dict{String, Any}\ntime_series_container::InfrastructureSystems.TimeSeriesContainer: internal time_series storage\ninternal::InfrastructureSystemsInternal: power system internal reference, do not modify\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems._FieldInfo","page":"Internal API Reference","title":"PowerSystems._FieldInfo","text":"Stores user-customized information for required dataframe columns.\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#PowerSystems._HeatRateColumns","page":"Internal API Reference","title":"PowerSystems._HeatRateColumns","text":"Add generators to the System from the raw data.\n\n\n\n\n\n","category":"type"},{"location":"api/internal/#Base.convert-Tuple{Type{@NamedTuple{min::Float64, max::Float64}}, Tuple{Float64, Float64}}","page":"Internal API Reference","title":"Base.convert","text":"convert(\n _::Type{@NamedTuple{min::Float64, max::Float64}},\n input::Tuple{Float64, Float64}\n) -> @NamedTuple{min::Float64, max::Float64}\n\n\nConvert Tuple to Min Max Named Tuple\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#Base.convert-Tuple{Type{@NamedTuple{up::Float64, down::Float64}}, Tuple{Float64, Float64}}","page":"Internal API Reference","title":"Base.convert","text":"convert(\n _::Type{@NamedTuple{up::Float64, down::Float64}},\n input::Tuple{Float64, Float64}\n) -> @NamedTuple{up::Float64, down::Float64}\n\n\nConvert Tuple to Up Down Named Tuple\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ACBus}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ACBus\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ACBus internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AGC}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AGC\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AGC internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRFixed}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRFixed\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRFixed internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRSimple}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRSimple\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRSimple internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRTypeII}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRTypeII\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRTypeII internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AVRTypeI}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AVRTypeI\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AVRTypeI internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ActiveConstantPowerLoad}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ActiveConstantPowerLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ActiveConstantPowerLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AggregateDistributedGenerationA}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AggregateDistributedGenerationA\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AggregateDistributedGenerationA internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{AndersonFouadMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::AndersonFouadMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet AndersonFouadMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Arc}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Arc\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Arc internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Area}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Area\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Area internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{BaseMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::BaseMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet BaseMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{BatteryEMS}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::BatteryEMS\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet BatteryEMS internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{CSVGN1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::CSVGN1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet CSVGN1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DCBus}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DCBus\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DCBus internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DEGOV}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DEGOV\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DEGOV internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DynamicBranch}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DynamicBranch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DynamicBranch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{DynamicExponentialLoad}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::DynamicExponentialLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet DynamicExponentialLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESAC1A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESAC1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESAC1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESAC6A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESAC6A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESAC6A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESDC1A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESDC1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESDC1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESDC2A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESDC2A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESDC2A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESST1A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESST1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESST1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ESST4B}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ESST4B\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ESST4B internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXAC1A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXAC1A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXAC1A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXAC1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXAC1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXAC1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXAC2}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXAC2\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXAC2 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{EXPIC1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::EXPIC1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXPIC1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FiveMassShaft}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FiveMassShaft\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FiveMassShaft internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FixedAdmittance}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FixedAdmittance\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FixedAdmittance internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FixedDCSource}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FixedDCSource\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FixedDCSource internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{FullMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::FullMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet FullMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GasTG}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GasTG\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GasTG internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GeneralGovModel}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GeneralGovModel\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GeneralGovModel internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GenericBattery}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GenericBattery\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GenericBattery internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{GenericDER}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::GenericDER\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet GenericDER internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HybridSystem}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HybridSystem\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HybridSystem internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroDispatch}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroDispatch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroDispatch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroEnergyReservoir}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroEnergyReservoir\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroEnergyReservoir internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroPumpedStorage}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroPumpedStorage\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroPumpedStorage internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{HydroTurbineGov}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::HydroTurbineGov\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet HydroTurbineGov internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{IEEEST}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::IEEEST\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet IEEEST internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{IEEET1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::IEEET1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet IEEET1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{IEEETurbineGov1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::IEEETurbineGov1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet IEEETurbineGov1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{InterconnectingConverter}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InterconnectingConverter\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet InterconnectingConverter internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{InterruptiblePowerLoad}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::InterruptiblePowerLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet InterruptiblePowerLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Line}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Line\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Line internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{LoadZone}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::LoadZone\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet LoadZone internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{MarconatoMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::MarconatoMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet MarconatoMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{MonitoredLine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::MonitoredLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet MonitoredLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{OneDOneQMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::OneDOneQMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet OneDOneQMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSS2A}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSS2A\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSS2A internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSS2B}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSS2B\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSS2B internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSS2C}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSS2C\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSS2C internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSSFixed}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSSFixed\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSSFixed internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PSSSimple}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PSSSimple\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PSSSimple internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PeriodicVariableSource}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PeriodicVariableSource\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PeriodicVariableSource internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PhaseShiftingTransformer}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PhaseShiftingTransformer\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PhaseShiftingTransformer internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerLoad}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet PowerLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerSystems.EX4VSA}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerSystems.EX4VSA\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EX4VSA internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerSystems.EXST1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerSystems.EXST1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet EXST1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerSystems.ExponentialLoad}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerSystems.ExponentialLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ExponentialLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{PowerSystems.SwitchedAdmittance}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::PowerSystems.SwitchedAdmittance\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SwitchedAdmittance internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{RenewableDispatch}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::RenewableDispatch\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet RenewableDispatch internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{RenewableFix}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::RenewableFix\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet RenewableFix internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ReserveDemandCurve}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ReserveDemandCurve\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ReserveDemandCurve internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{RoundRotorMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::RoundRotorMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet RoundRotorMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SCRX}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SCRX\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SCRX internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SEXS}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SEXS\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SEXS internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{STAB1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::STAB1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet STAB1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SalientPoleMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SalientPoleMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SalientPoleMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SauerPaiMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SauerPaiMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SauerPaiMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimpleAFMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimpleAFMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimpleAFMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimpleFullMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimpleFullMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimpleFullMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimpleMarconatoMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimpleMarconatoMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimpleMarconatoMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SimplifiedSingleCageInductionMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SimplifiedSingleCageInductionMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SimplifiedSingleCageInductionMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SingleCageInductionMachine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SingleCageInductionMachine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleCageInductionMachine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SingleMass}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SingleMass\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SingleMass internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Source}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Source\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Source internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{StandardLoad}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::StandardLoad\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet StandardLoad internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{StaticReserveGroup}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::StaticReserveGroup\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet StaticReserveGroup internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{StaticReserveNonSpinning}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::StaticReserveNonSpinning\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet StaticReserveNonSpinning internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{StaticReserve}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::StaticReserve\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet StaticReserve internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{SteamTurbineGov1}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::SteamTurbineGov1\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet SteamTurbineGov1 internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{System}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n sys::System\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nReturn the internal of the system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGFixed}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGFixed\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGFixed internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGTypeII}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGTypeII\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGTypeII internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TGTypeI}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TGTypeI\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TGTypeI internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TModelHVDCLine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TModelHVDCLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TModelHVDCLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TapTransformer}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TapTransformer\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TapTransformer internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ThermalMultiStart}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ThermalMultiStart\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ThermalMultiStart internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{ThermalStandard}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::ThermalStandard\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet ThermalStandard internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Transfer}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Transfer\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Transfer internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{Transformer2W}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::Transformer2W\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet Transformer2W internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TransmissionInterface}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TransmissionInterface\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TransmissionInterface internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TwoTerminalHVDCLine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TwoTerminalHVDCLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TwoTerminalHVDCLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{TwoTerminalVSCDCLine}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::TwoTerminalVSCDCLine\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet TwoTerminalVSCDCLine internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{VariableReserveNonSpinning}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::VariableReserveNonSpinning\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet VariableReserveNonSpinning internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#InfrastructureSystems.get_internal-Tuple{VariableReserve}","page":"Internal API Reference","title":"InfrastructureSystems.get_internal","text":"get_internal(\n value::VariableReserve\n) -> InfrastructureSystems.InfrastructureSystemsInternal\n\n\nGet VariableReserve internal.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._add_dcline_costs!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._add_dcline_costs!","text":"_add_dcline_costs!(data::Dict{String, Any})\n\n\nadds dcline costs, if gen costs exist\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._add_line_delimiter-Tuple{AbstractString, Any, Any}","page":"Internal API Reference","title":"PowerSystems._add_line_delimiter","text":"_add_line_delimiter(\n mp_line::AbstractString,\n start_char,\n end_char\n) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._apply_func!-Tuple{Dict{String}, String, Any}","page":"Internal API Reference","title":"PowerSystems._apply_func!","text":"_apply_func!(data::Dict{String}, key::String, func) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._biggest_generator-Tuple{Any}","page":"Internal API Reference","title":"PowerSystems._biggest_generator","text":"_biggest_generator(gens) -> Any\n\n\nfind the largest active generator in the network\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._bold-Tuple{String}","page":"Internal API Reference","title":"PowerSystems._bold","text":"_bold(s::String) -> String\n\n\nMakes a string bold in the terminal\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_branch_flow_ac-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._calc_branch_flow_ac","text":"_calc_branch_flow_ac(\n data::Dict{String}\n) -> Dict{String, Any}\n\n\nhelper function for calcbranchflow_ac\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_branch_flow_dc-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._calc_branch_flow_dc","text":"_calc_branch_flow_dc(\n data::Dict{String}\n) -> Dict{String, Any}\n\n\nhelper function for calcbranchflow_dc\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_comp_lines-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._calc_comp_lines","text":"_calc_comp_lines(component::Dict{String}) -> Vector{Any}\n\n\ncompute lines in m and b from from pwl cost models\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_max_cost_index-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._calc_max_cost_index","text":"_calc_max_cost_index(data::Dict{String}) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._calc_power_balance-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._calc_power_balance","text":"_calc_power_balance(data::Dict{String}) -> Dict{String, Any}\n\n\nhelper function for calcpowerbalance\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._cc_dfs-NTuple{4, Any}","page":"Internal API Reference","title":"PowerSystems._cc_dfs","text":"_cc_dfs(i, neighbors, component_lookup, touched)\n\n\nDFS on a graph\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._check_conductors-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._check_conductors","text":"_check_conductors(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._check_keys-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems._check_keys","text":"_check_keys(data, keys)\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._compare_numbers-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems._compare_numbers","text":"_compare_numbers(v1, v2) -> Bool\n\n\ntests if two numbers are equal, up to floating point precision\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._convert_argument_types!-Tuple{AbstractString, Vector}","page":"Internal API Reference","title":"PowerSystems._convert_argument_types!","text":"_convert_argument_types!(\n str::AbstractString,\n struct_args::Vector\n) -> Any\n\n\nConvert specific parameters to types that are not Float64 for specific inverter components\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._correct_cost_function!-Tuple{Any, Any, Any}","page":"Internal API Reference","title":"PowerSystems._correct_cost_function!","text":"_correct_cost_function!(id, comp, type_name) -> Bool\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._correct_reference_buses!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._correct_reference_buses!","text":"_correct_reference_buses!(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._create_starbus_from_transformer-Tuple{Dict, Dict, Int64}","page":"Internal API Reference","title":"PowerSystems._create_starbus_from_transformer","text":"_create_starbus_from_transformer(\n pm_data::Dict,\n transformer::Dict,\n starbus_id::Int64\n) -> Dict{String, Any}\n\n\ncreate_starbus(pm_data, transformer)\n\nCreates a starbus from a given three-winding transformer. \"sourceid\" is given by `[\"busi\", \"name\", \"I\", \"J\", \"K\", \"CKT\"]` where \"bus_i\" and \"name\" are the modified names for the starbus, and \"I\", \"J\", \"K\" and \"CKT\" come from the originating transformer, in the PSS(R)E transformer specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._deactivate_isolated_components!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._deactivate_isolated_components!","text":"_deactivate_isolated_components!(data::Dict{String}) -> Bool\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._extract_matlab_assignment-Tuple{AbstractString}","page":"Internal API Reference","title":"PowerSystems._extract_matlab_assignment","text":"_extract_matlab_assignment(\n string::AbstractString\n) -> Tuple{SubString, SubString}\n\n\nbreaks up matlab strings of the form 'name = value;'\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._find_max_bus_id-Tuple{Dict}","page":"Internal API Reference","title":"PowerSystems._find_max_bus_id","text":"_find_max_bus_id(pm_data::Dict) -> Int64\n\n\n_find_max_bus_id(pm_data)\n\nReturns the maximum bus id in pm_data\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._float2string-Tuple{AbstractFloat, Int64}","page":"Internal API Reference","title":"PowerSystems._float2string","text":"_float2string(\n v::AbstractFloat,\n float_precision::Int64\n) -> Union{String, WeakRefStrings.PosLenString}\n\n\nconverts a float value into a string of fixed precision\n\nsprintf would do the job but this work around is needed because sprintf cannot take format strings during runtime\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_bus_value-Tuple{Any, Any, Any}","page":"Internal API Reference","title":"PowerSystems._get_bus_value","text":"_get_bus_value(bus_i, field, pm_data) -> Any\n\n\n_get_bus_value(bus_i, field, pm_data)\n\nReturns the value of field of bus_i from the PowerModels data. Requires \"bus\" Dict to already be populated.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_contributing_devices-Union{Tuple{T}, Tuple{System, T}} where T<:Service","page":"Internal API Reference","title":"PowerSystems._get_contributing_devices","text":"_get_contributing_devices(\n sys::System,\n service::Service\n) -> ServiceContributingDevices\n\n\nReturns a ServiceContributingDevices object.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_line_elements-Tuple{AbstractString}","page":"Internal API Reference","title":"PowerSystems._get_line_elements","text":"_get_line_elements(\n line::AbstractString\n) -> Tuple{Vector{T} where T<:SubString, Union{String, SubString}}\n\n\n_get_line_elements(line)\n\nInternal function. Uses regular expressions to extract all separate data elements from a line of a PTI file and populate them into an Array{String}. Comments, typically indicated at the end of a line with a '/' character, are also extracted separately, and Array{Array{String}, String} is returned.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_pm_branch_name-Tuple{Any, Any, Any}","page":"Internal API Reference","title":"PowerSystems._get_pm_branch_name","text":"_get_pm_branch_name(device_dict, bus_f, bus_t) -> String\n\n\nInternal branch name retreval from pm2ps_dict\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._get_pm_dict_name-Tuple{Any}","page":"Internal API Reference","title":"PowerSystems._get_pm_dict_name","text":"_get_pm_dict_name(device_dict) -> Any\n\n\nInternal component name retreval from pm2ps_dict\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._grey-Tuple{String}","page":"Internal API Reference","title":"PowerSystems._grey","text":"_grey(s::String) -> String\n\n\nMakes a string grey in the terminal, does not seem to work well on Windows terminals more info can be found at https://en.wikipedia.org/wiki/ANSIescapecode\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._import_remaining_comps!-Tuple{Dict, Dict}","page":"Internal API Reference","title":"PowerSystems._import_remaining_comps!","text":"_import_remaining_comps!(\n data_out::Dict,\n data_in::Dict;\n exclude\n)\n\n\nImports remaining top level component lists from data_in into data_out, excluding keys in exclude\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._import_remaining_keys!-Tuple{Dict, Dict}","page":"Internal API Reference","title":"PowerSystems._import_remaining_keys!","text":"_import_remaining_keys!(\n comp_dest::Dict,\n comp_src::Dict;\n exclude\n)\n\n\nImports remaining keys from a source component into detestation component, excluding keys in exclude\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._init_bus!-Tuple{Dict{String, Any}, Int64}","page":"Internal API Reference","title":"PowerSystems._init_bus!","text":"_init_bus!(bus::Dict{String, Any}, id::Int64)\n\n\n_init_bus!(bus, id)\n\nInitializes a bus of id id with default values given in the PSS(R)E specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._instantiate_param_vector_size-Tuple{AbstractString, Dict}","page":"Internal API Reference","title":"PowerSystems._instantiate_param_vector_size","text":"_instantiate_param_vector_size(\n str::AbstractString,\n param_map::Dict\n) -> Any\n\n\nConstruct appropiate vector size for components that collect parameters from more than 2 PSS/E components\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_mixed_units!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._make_mixed_units!","text":"_make_mixed_units!(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_per_unit!-Tuple{Dict{String}, Real}","page":"Internal API Reference","title":"PowerSystems._make_per_unit!","text":"_make_per_unit!(data::Dict{String}, mva_base::Real)\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._make_shaft-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems._make_shaft","text":"_make_shaft(param_map, val) -> Any\n\n\nCreate a SingleMass shaft struct directly using the parameter mapping.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._matpower_to_powermodels!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._matpower_to_powermodels!","text":"_matpower_to_powermodels!(\n mp_data::Dict{String}\n) -> Dict{String}\n\n\nConverts a Matpower dict into a PowerModels dict\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._merge_bus_name_data!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._merge_bus_name_data!","text":"_merge_bus_name_data!(\n data::Dict{String, Any}\n) -> Union{Nothing, Dict{String, Any}}\n\n\nmerges bus name data into buses, if names exist\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._merge_cost_data!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._merge_cost_data!","text":"_merge_cost_data!(\n data::Dict{String, Any}\n) -> Union{Nothing, Dict{String, Any}}\n\n\nmerges generator cost functions into generator data, if costs exist\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._merge_generic_data!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._merge_generic_data!","text":"_merge_generic_data!(data::Dict{String, Any})\n\n\nmerges Matpower tables based on the table extension syntax\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._mp2pm_branch!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._mp2pm_branch!","text":"_mp2pm_branch!(data::Dict{String, Any})\n\n\nsets all branch transformer taps to 1.0, to simplify branch models\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._mp2pm_dcline!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._mp2pm_dcline!","text":"_mp2pm_dcline!(data::Dict{String, Any})\n\n\nadds pmin and pmax values at to and from buses\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._mp_cost_data-Tuple{Any}","page":"Internal API Reference","title":"PowerSystems._mp_cost_data","text":"_mp_cost_data(cost_row) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_components-Tuple{AbstractString}","page":"Internal API Reference","title":"PowerSystems._parse_dyr_components","text":"_parse_dyr_components(\n dyr_file::AbstractString\n) -> Dict{Int64, Any}\n\n\nParse a .dyr file directly from its name by constructing its dictionary of dictionaries.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_components-Tuple{Dict}","page":"Internal API Reference","title":"PowerSystems._parse_dyr_components","text":"_parse_dyr_components(data::Dict) -> Dict{Int64, Any}\n\n\nParse dictionary of dictionaries of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator and dynamic inverter components (indexed via its id).\n\nFor Generators, each dictionary indexed by id contains a vector with 5 of its components:\n\nMachine\nShaft\nAVR\nTurbineGov\nPSS\n\nFor Inverters, each dictionary indexed by id contains a vector with 7 of its components:\n\nConverter\nActivePowerControl\nReactivePowerControl\nInnerControl\nDCSource\nFrequencyEstimator\nFilter\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_file-Tuple{AbstractString}","page":"Internal API Reference","title":"PowerSystems._parse_dyr_file","text":"_parse_dyr_file(file::AbstractString) -> Dict{Int64, Dict}\n\n\nParse .dyr file into a dictionary indexed by bus number. Each bus number key has a dictionary indexed by component type and id.\n\nComments in .dyr files are not supported (beginning of lines with //).\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_generator_components!-Tuple{Dict, Any, Any, Dict, Dict}","page":"Internal API Reference","title":"PowerSystems._parse_dyr_generator_components!","text":"_parse_dyr_generator_components!(\n bus_dict::Dict,\n componentID,\n componentValues,\n gen_map::Dict,\n param_map::Dict\n)\n\n\nParse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic generator indexed by its id.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_dyr_inverter_components!-Tuple{Dict, Dict, Tuple{String, String}, Dict}","page":"Internal API Reference","title":"PowerSystems._parse_dyr_inverter_components!","text":"_parse_dyr_inverter_components!(\n bus_dict::Dict,\n inv_dict::Dict,\n componentID::Tuple{String, String},\n inv_map::Dict\n)\n\n\nParse dictionary of data (from _parse_dyr_file) into a dictionary of struct components. The function receives the parsed dictionary and constructs a dictionary indexed by bus, that contains a dictionary with each dynamic inverter indexed by its id.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_elements-Tuple{Array, Array, Dict, AbstractString}","page":"Internal API Reference","title":"PowerSystems._parse_elements","text":"_parse_elements(\n elements::Array,\n dtypes::Array,\n defaults::Dict,\n section::AbstractString\n) -> Dict{String, Any}\n\n\nThis is an experimental method for parsing elements and setting defaults at the same time. It is not currently working but would reduce memory allocations if implemented correctly.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_line_element!-Tuple{Dict, Array, AbstractString}","page":"Internal API Reference","title":"PowerSystems._parse_line_element!","text":"_parse_line_element!(\n data::Dict,\n elements::Array,\n section::AbstractString\n)\n\n\n_parse_line_element!(data, elements, section)\n\nInternal function. Parses a single \"line\" of data elements from a PTI file, as given by elements which is an array of the line, typically split at ,. Elements are parsed into data types given by section and saved into data::Dict.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matlab_cells-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems._parse_matlab_cells","text":"_parse_matlab_cells(lines, index) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matlab_data-NTuple{4, Any}","page":"Internal API Reference","title":"PowerSystems._parse_matlab_data","text":"_parse_matlab_data(\n lines,\n index,\n start_char,\n end_char\n) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matlab_matrix-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems._parse_matlab_matrix","text":"_parse_matlab_matrix(lines, index) -> Dict\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_matpower_string-Tuple{String}","page":"Internal API Reference","title":"PowerSystems._parse_matpower_string","text":"_parse_matpower_string(\n data_string::String\n) -> Dict{String, Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._parse_pti_data-Tuple{IO}","page":"Internal API Reference","title":"PowerSystems._parse_pti_data","text":"_parse_pti_data(data_io::IO) -> Dict{String, Array{Dict}}\n\n\n_parse_pti_data(data_string, sections)\n\nInternal function. Parse a PTI raw file into a Dict, given the data_string of the file and a list of the sections in the PTI file (typically given by default by get_pti_sections().\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._populate_args-Tuple{Vector, Any}","page":"Internal API Reference","title":"PowerSystems._populate_args","text":"_populate_args(param_map::Vector, val) -> Vector{Any}\n\n\nPopulate arguments in a vector for each dynamic component (except Shafts). Returns a vector with the parameter values of the argument of each component.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._populate_defaults!-Tuple{Dict}","page":"Internal API Reference","title":"PowerSystems._populate_defaults!","text":"_populate_defaults!(data::Dict)\n\n\n_populate_defaults!(pti_data)\n\nInternal function. Populates empty fields with PSS(R)E PTI v33 default values\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._propagate_topology_status!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._propagate_topology_status!","text":"_propagate_topology_status!(data::Dict{String}) -> Bool\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_branch!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_branch!","text":"_psse2pm_branch!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_branch!(pm_data, pti_data)\n\nParses PSS(R)E-style Branch data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"J\", \"CKT\"] in PSS(R)E Branch specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_bus!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_bus!","text":"_psse2pm_bus!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_bus!(pm_data, pti_data)\n\nParses PSS(R)E-style Bus data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"NAME\"] in PSS(R)E Bus specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_dcline!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_dcline!","text":"_psse2pm_dcline!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_dcline!(pm_data, pti_data)\n\nParses PSS(R)E-style Two-Terminal and VSC DC Lines data into a PowerModels compatible Dict structure by first converting them to a simple DC Line Model. For Two-Terminal DC lines, \"sourceid\" is given by [\"IPR\", \"IPI\", \"NAME\"] in the PSS(R)E Two-Terminal DC specification. For Voltage Source Converters, \"sourceid\" is given by [\"IBUS1\", \"IBUS2\", \"NAME\"], where \"IBUS1\" is \"IBUS\" of the first converter bus, and \"IBUS2\" is the \"IBUS\" of the second converter bus, in the PSS(R)E Voltage Source Converter specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_generator!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_generator!","text":"_psse2pm_generator!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_generator!(pm_data, pti_data)\n\nParses PSS(R)E-style Generator data in a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"ID\"] in PSS(R)E Generator specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_load!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_load!","text":"_psse2pm_load!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_load!(pm_data, pti_data)\n\nParses PSS(R)E-style Load data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"ID\"] in the PSS(R)E Load specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_shunt!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_shunt!","text":"_psse2pm_shunt!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_shunt!(pm_data, pti_data)\n\nParses PSS(R)E-style Fixed and Switched Shunt data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"ID\"] for Fixed Shunts, and [\"I\", \"SWREM\"] for Switched Shunts, as given by the PSS(R)E Fixed and Switched Shunts specifications.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._psse2pm_transformer!-Tuple{Dict, Dict, Bool}","page":"Internal API Reference","title":"PowerSystems._psse2pm_transformer!","text":"_psse2pm_transformer!(\n pm_data::Dict,\n pti_data::Dict,\n import_all::Bool\n)\n\n\n_psse2pm_transformer!(pm_data, pti_data)\n\nParses PSS(R)E-style Transformer data into a PowerModels-style Dict. \"source_id\" is given by [\"I\", \"J\", \"K\", \"CKT\", \"winding\"], where \"winding\" is 0 if transformer is two-winding, and 1, 2, or 3 for three-winding, and the remaining keys are defined in the PSS(R)E Transformer specification.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._pti_to_powermodels!-Tuple{Dict}","page":"Internal API Reference","title":"PowerSystems._pti_to_powermodels!","text":"_pti_to_powermodels!(\n pti_data::Dict;\n import_all,\n validate,\n correct_branch_rating\n) -> Dict{String, Any}\n\n\n_pti_to_powermodels!(pti_data)\n\nConverts PSS(R)E-style data parsed from a PTI raw file, passed by pti_data into a format suitable for use internally in PowerModels. Imports all remaining data from the PTI file if import_all is true (Default: false).\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._read_data_row-Tuple{PowerSystemTableData, Any, Any}","page":"Internal API Reference","title":"PowerSystems._read_data_row","text":"_read_data_row(\n data::PowerSystemTableData,\n row,\n field_infos;\n na_to_nothing\n) -> NamedTuple\n\n\nReads values from dataframe row and performs necessary conversions.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._remove_aggregration_topology!-Tuple{ACBus, LoadZone}","page":"Internal API Reference","title":"PowerSystems._remove_aggregration_topology!","text":"_remove_aggregration_topology!(bus::ACBus, _::LoadZone)\n\n\nRemove the aggregation topology in a ACBus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._remove_pwl_cost_duplicates!","page":"Internal API Reference","title":"PowerSystems._remove_pwl_cost_duplicates!","text":"_remove_pwl_cost_duplicates!(id, comp, type_name) -> Bool\n_remove_pwl_cost_duplicates!(\n id,\n comp,\n type_name,\n tolerance\n) -> Bool\n\n\nchecks that each point in the a pwl function is unqiue, simplifies the function if duplicates appear\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems._remove_service!-Tuple{Device, Service}","page":"Internal API Reference","title":"PowerSystems._remove_service!","text":"_remove_service!(device::Device, service::Service) -> Bool\n\n\nRemove service from device if it is attached.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._rescale_cost_model!-Tuple{Dict{String}, Real}","page":"Internal API Reference","title":"PowerSystems._rescale_cost_model!","text":"_rescale_cost_model!(comp::Dict{String}, scale::Real)\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._resolve_swithces!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._resolve_swithces!","text":"_resolve_swithces!(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._select_largest_component!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems._select_largest_component!","text":"_select_largest_component!(data::Dict{String}) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._simplify_pwl_cost!","page":"Internal API Reference","title":"PowerSystems._simplify_pwl_cost!","text":"_simplify_pwl_cost!(id, comp, type_name) -> Bool\n_simplify_pwl_cost!(id, comp, type_name, tolerance) -> Bool\n\n\nchecks the slope of each segment in a pwl function, simplifies the function if the slope changes is below a tolerance\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems._split_loads_shunts!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems._split_loads_shunts!","text":"_split_loads_shunts!(data::Dict{String, Any})\n\n\n_split_loads_shunts!(data)\n\nSeperates Loads and Shunts in data under separate \"load\" and \"shunt\" keys in the PowerModels data format. Includes references to originating bus via \"loadbus\" and \"shuntbus\" keys, respectively.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._standardize_cost_terms!-Tuple{Dict{String}, Int64, String}","page":"Internal API Reference","title":"PowerSystems._standardize_cost_terms!","text":"_standardize_cost_terms!(\n components::Dict{String},\n comp_order::Int64,\n cost_comp_name::String\n) -> Set{Int64}\n\n\nensures all polynomial costs functions have at exactly comp_order terms\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._type_array-Union{Tuple{Vector{T}}, Tuple{T}} where T<:AbstractString","page":"Internal API Reference","title":"PowerSystems._type_array","text":"_type_array(\n string_array::Array{T<:AbstractString, 1}\n) -> Vector\n\n\nAttempts to determine the type of an array of strings extracted from a matlab file\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._type_value-Tuple{AbstractString}","page":"Internal API Reference","title":"PowerSystems._type_value","text":"_type_value(value_string::AbstractString) -> Any\n\n\nAttempts to determine the type of a string extracted from a matlab file\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._update_data!-Tuple{Dict{String}, Dict{String}}","page":"Internal API Reference","title":"PowerSystems._update_data!","text":"_update_data!(data::Dict{String}, new_data::Dict{String})\n\n\nrecursive call of updatedata\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems._value2string-Tuple{Any, Int64}","page":"Internal API Reference","title":"PowerSystems._value2string","text":"_value2string(v, float_precision::Int64) -> Any\n\n\nconverts any value to a string, summarizes arrays and dicts\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.add_service_internal!-Tuple{Device, Service}","page":"Internal API Reference","title":"PowerSystems.add_service_internal!","text":"add_service_internal!(device::Device, service::Service)\n\n\nThis function add a service to the component without checking if the component and the service are attached to the same system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.adequacy_check-Tuple{System}","page":"Internal API Reference","title":"PowerSystems.adequacy_check","text":"adequacy_check(sys::System)\n\n\nadequacy_check(sys::System)\n\nChecks the system for sum(generator ratings) >= sum(load ratings).\n\nArguments\n\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.arrays_to_dicts!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.arrays_to_dicts!","text":"arrays_to_dicts!(data::Dict{String})\n\n\nturns top level arrays into dicts\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.branch_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internal API Reference","title":"PowerSystems.branch_csv_parser!","text":"branch_csv_parser!(sys::System, data::PowerSystemTableData)\n\n\nAdd branches to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internal API Reference","title":"PowerSystems.bus_csv_parser!","text":"bus_csv_parser!(sys::System, data::PowerSystemTableData)\n\n\nAdd buses and areas to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_gen_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internal API Reference","title":"PowerSystems.bus_gen_lookup","text":"bus_gen_lookup(\n gen_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what generators are connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_load_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internal API Reference","title":"PowerSystems.bus_load_lookup","text":"bus_load_lookup(\n load_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what loads are connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_shunt_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internal API Reference","title":"PowerSystems.bus_shunt_lookup","text":"bus_shunt_lookup(\n shunt_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what shunts are connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.bus_storage_lookup-Tuple{Dict{String}, Dict{String}}","page":"Internal API Reference","title":"PowerSystems.bus_storage_lookup","text":"bus_storage_lookup(\n storage_data::Dict{String},\n bus_data::Dict{String}\n) -> Dict\n\n\nbuilds a lookup list of what storage is connected to a given bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_flow_ac-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_branch_flow_ac","text":"calc_branch_flow_ac(data::Dict{String}) -> Dict{String, Any}\n\n\nassumes a vaild ac solution is included in the data and computes the branch flow values\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_flow_dc-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_branch_flow_dc","text":"calc_branch_flow_dc(data::Dict{String}) -> Dict{String, Any}\n\n\nassumes a vaild dc solution is included in the data and computes the branch flow values\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_t-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_branch_t","text":"calc_branch_t(branch::Dict{String}) -> Tuple{Any, Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_branch_y-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_branch_y","text":"calc_branch_y(branch::Dict{String}) -> Tuple{Any, Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_connected_components-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_connected_components","text":"calc_connected_components(\n pm_data::Dict{String};\n edges\n) -> Set{Set{Int64}}\n\n\ncomputes the connected components of the network graph returns a set of sets of bus ids, each set is a connected component\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_cost_pwl_lines-Tuple{Dict}","page":"Internal API Reference","title":"PowerSystems.calc_cost_pwl_lines","text":"calc_cost_pwl_lines(comp_dict::Dict) -> Dict{Any, Any}\n\n\ncompute lines in m and b from from pwl cost models data is a list of components.\n\nCan be run on data or ref data structures\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_dcline_cost-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_dcline_cost","text":"calc_dcline_cost(data::Dict{String}) -> Any\n\n\ncomputes the dcline cost from given network data\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_gen_cost-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_gen_cost","text":"calc_gen_cost(data::Dict{String}) -> Any\n\n\ncomputes the generator cost from given network data\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_max_cost_index-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.calc_max_cost_index","text":"calc_max_cost_index(data::Dict{String, Any}) -> Any\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_power_balance-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_power_balance","text":"calc_power_balance(data::Dict{String}) -> Dict{String, Any}\n\n\nassumes a vaild solution is included in the data and computes the power balance at each bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calc_theta_delta_bounds-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.calc_theta_delta_bounds","text":"calc_theta_delta_bounds(\n data::Dict{String}\n) -> Tuple{Real, Real}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.calculate_saturation_coefficients-Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}","page":"Internal API Reference","title":"PowerSystems.calculate_saturation_coefficients","text":"calculate_saturation_coefficients(\n E::Tuple{Float64, Float64},\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients (A, B) of the function Se(x) = B(x - A)^2/x for Se(E1) = B(E1 - A)^2/E1 and Se(E2) = B(E2 - A)^2/E2 and uses the negative solution of the quadratic equation \n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_ascending_order-Tuple{Array{Int64}, AbstractString}","page":"Internal API Reference","title":"PowerSystems.check_ascending_order","text":"check_ascending_order(\n array::Array{Int64},\n name::AbstractString\n)\n\n\nThrows DataFormatError if the array is not in ascending order.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_attached_buses-Tuple{System, Component}","page":"Internal API Reference","title":"PowerSystems.check_attached_buses","text":"check_attached_buses(sys::System, component::Component)\n\n\nThrows ArgumentError if any bus attached to the component is invalid.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_branch_loops-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_branch_loops","text":"check_branch_loops(data::Dict{String})\n\n\nchecks that all branches connect two distinct buses\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_component_addition-Tuple{System, Component}","page":"Internal API Reference","title":"PowerSystems.check_component_addition","text":"check_component_addition(\n sys::System,\n component::Component;\n kwargs...\n)\n\n\nThrows ArgumentError if a PowerSystems rule blocks addition to the system.\n\nThis method is tied with handlecomponentaddition!. If the methods are re-implemented for a subtype then whatever is added in handlecomponentaddition! must be checked here.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_component_removal-Tuple{System, Component}","page":"Internal API Reference","title":"PowerSystems.check_component_removal","text":"check_component_removal(sys::System, component::Component)\n\n\nThrows ArgumentError if a PowerSystems rule blocks removal from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_component_removal-Union{Tuple{T}, Tuple{System, T}} where T<:Service","page":"Internal API Reference","title":"PowerSystems.check_component_removal","text":"check_component_removal(sys::System, service::Service)\n\n\nThrows ArgumentError if a PowerSystems rule blocks removal from the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_conductors-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_conductors","text":"check_conductors(data::Dict{String})\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_connectivity-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_connectivity","text":"check_connectivity(data::Dict{String})\n\n\nchecks that all buses are unique and other components link to valid buses\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_reference_bus-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_reference_bus","text":"check_reference_bus(data::Dict{String})\n\n\nchecks that contains at least one refrence bus\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_reference_buses-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.check_reference_buses","text":"check_reference_buses(data::Dict{String, Any})\n\n\nchecks that each connected components has a reference bus, if not, adds one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_status-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_status","text":"check_status(data::Dict{String})\n\n\nchecks that active components are not connected to inactive buses, otherwise prints warnings\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_storage_parameters-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.check_storage_parameters","text":"check_storage_parameters(data::Dict{String, Any})\n\n\nchecks that each storage unit has a reasonable parameters\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_switch_parameters-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_switch_parameters","text":"check_switch_parameters(data::Dict{String})\n\n\nchecks that each switch has a reasonable parameters\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_type-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems.check_type","text":"check_type(typ, value) -> Any\n\n\nChecks if the given value is of a given type, if not tries to make it that type\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.check_voltage_setpoints-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.check_voltage_setpoints","text":"check_voltage_setpoints(data::Dict{String})\n\n\nthrows warnings if generator and dc line voltage setpoints are not consistent with the bus voltage setpoint\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.compare_dict-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems.compare_dict","text":"compare_dict(d1, d2) -> Bool\n\n\ntests if two dicts are equal, up to floating point precision\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_branch_directions!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_branch_directions!","text":"correct_branch_directions!(data::Dict{String}) -> Set{Int64}\n\n\nchecks that all parallel branches have the same orientation\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_bus_types!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_bus_types!","text":"correct_bus_types!(data::Dict{String}) -> Set{Int64}\n\n\nchecks bus types are consistent with generator connections, if not, fixes them\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_component_refrence_bus!-Tuple{Any, Any, Any}","page":"Internal API Reference","title":"PowerSystems.correct_component_refrence_bus!","text":"correct_component_refrence_bus!(\n component_bus_ids,\n bus_lookup,\n component_gens\n)\n\n\nchecks that a connected component has a reference bus, if not, tries to add one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_cost_functions!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_cost_functions!","text":"correct_cost_functions!(\n data::Dict{String}\n) -> Tuple{Set{Int64}, Set{Int64}}\n\n\nthrows warnings if cost functions are malformed\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_current_limits!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_current_limits!","text":"correct_current_limits!(data::Dict{String}) -> Set{Int64}\n\n\nchecks that each branch has a reasonable current rating-a, if not computes one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_dcline_limits!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.correct_dcline_limits!","text":"correct_dcline_limits!(\n data::Dict{String, Any}\n) -> Set{Int64}\n\n\nchecks that parameters for dc lines are reasonable\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_network_data!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_network_data!","text":"correct_network_data!(\n data::Dict{String};\n correct_branch_rating\n) -> Dict{String, Dict{Symbol, Set{Int64}}}\n\n\nRuns various data quality checks on a PowerModels data dictionary. Applies modifications in some cases. Reports modified component ids.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_thermal_limits!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_thermal_limits!","text":"correct_thermal_limits!(data::Dict{String}) -> Set{Int64}\n\n\nchecks that each branch has a reasonable thermal rating-a, if not computes one\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_transformer_parameters!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.correct_transformer_parameters!","text":"correct_transformer_parameters!(\n data::Dict{String}\n) -> Set{Int64}\n\n\nchecks that each branch has a reasonable transformer parameters\n\nthis is important because setting tap == 0.0 leads to NaN computations, which are hard to debug\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.correct_voltage_angle_differences!","page":"Internal API Reference","title":"PowerSystems.correct_voltage_angle_differences!","text":"correct_voltage_angle_differences!(\n data::Dict{String}\n) -> Set{Int64}\ncorrect_voltage_angle_differences!(\n data::Dict{String},\n default_pad\n) -> Set{Int64}\n\n\nchecks that voltage angle differences are within 90 deg., if not tightens\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems.dc_branch_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internal API Reference","title":"PowerSystems.dc_branch_csv_parser!","text":"dc_branch_csv_parser!(\n sys::System,\n data::PowerSystemTableData\n)\n\n\nAdd DC branches to the System from raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.deactivate_isolated_components!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.deactivate_isolated_components!","text":"deactivate_isolated_components!(data::Dict{String}) -> Bool\n\n\nremoves buses with single branch connections and without any other attached components. Also removes connected components without suffuceint generation or loads.\n\nalso deactivates 0 valued loads and shunts.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.deserialize_uuid_handling-Tuple{Any, Any, Any}","page":"Internal API Reference","title":"PowerSystems.deserialize_uuid_handling","text":"deserialize_uuid_handling(\n field_type,\n val,\n component_cache\n) -> Any\n\n\nDeserialize the value, converting UUIDs to components where necessary.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_avr_saturation-Tuple{Tuple{Float64, Float64}, Tuple{Float64, Float64}}","page":"Internal API Reference","title":"PowerSystems.get_avr_saturation","text":"get_avr_saturation(\n E::Tuple{Float64, Float64},\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients for an AVR \n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_branch-Tuple{DynamicBranch}","page":"Internal API Reference","title":"PowerSystems.get_branch","text":"get_branch(value::DynamicBranch) -> ACBranch\n\n\nGet branch\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_dataframe-Tuple{PowerSystemTableData, PowerSystems.InputCategoryModule.InputCategory}","page":"Internal API Reference","title":"PowerSystems.get_dataframe","text":"get_dataframe(\n data::PowerSystemTableData,\n category::PowerSystems.InputCategoryModule.InputCategory\n) -> DataFrames.DataFrame\n\n\nReturn the dataframe for the category.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_enum_value-Tuple{Any, AbstractString}","page":"Internal API Reference","title":"PowerSystems.get_enum_value","text":"get_enum_value(enum, value::AbstractString) -> Any\n\n\nGet the enum value for the string. Case insensitive.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_exponential_saturation-Tuple{Tuple{Float64, Float64}}","page":"Internal API Reference","title":"PowerSystems.get_exponential_saturation","text":"get_exponential_saturation(\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients (A, B) of the function Se = Bx^A for Se(1.2) = B(1.2)^A and Se(1.0) = B(1.0)^A as: B = Se(1.0) and hence (1.2)^A = Se(1.2)/B -> A = log(Se(1.2)/B) / log(1.2)\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_generator_mapping","page":"Internal API Reference","title":"PowerSystems.get_generator_mapping","text":"get_generator_mapping() -> Dict{NamedTuple, DataType}\nget_generator_mapping(\n filename\n) -> Dict{NamedTuple, DataType}\n\n\nReturn a dict where keys are a tuple of input parameters (fuel, unit_type) and values are generator types.\n\n\n\n\n\n","category":"function"},{"location":"api/internal/#PowerSystems.get_generator_type-Tuple{Any, Any, Dict{NamedTuple, DataType}}","page":"Internal API Reference","title":"PowerSystems.get_generator_type","text":"get_generator_type(\n fuel,\n unit_type,\n mappings::Dict{NamedTuple, DataType}\n) -> Union{Nothing, DataType}\n\n\nReturn the PowerSystems generator type for this fuel and unit_type.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_quadratic_saturation-Tuple{Tuple{Float64, Float64}}","page":"Internal API Reference","title":"PowerSystems.get_quadratic_saturation","text":"get_quadratic_saturation(\n Se::Tuple{Float64, Float64}\n) -> Tuple{Float64, Float64}\n\n\nObtain coefficients (A, B) of the function Se = B(x - A)^2/x for Se(1.2) = B(1.2 - A)^2/1.2 and Se(1.0) = B(1.0 - A)^2/1.0 as: Se(1.0) = (Se(1.2) * 1.2) /(1.2 - A)^2 * (1.0 - A)^2/1.0 that yields (1.2 - A)^2 Se(1.0) = Se(1.2) * 1.2 * (1.0 - A)^2 or expanding: (1.2 * Se(1.2) - Se(1.0)) A^2 + (2.4 Se(1.0) - 2 * 1.2 * Se(1.2)) A + (1.2 * Se(1.2) - 1.44 Se(1.0)) = 0 and uses the negative solution of the quadratic equation.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_series_susceptance-Tuple{ACBranch}","page":"Internal API Reference","title":"PowerSystems.get_series_susceptance","text":"get_series_susceptance(b::ACBranch) -> Float64\n\n\nCalculate the admittance of AC branches\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_series_susceptance-Tuple{Union{PhaseShiftingTransformer, TapTransformer}}","page":"Internal API Reference","title":"PowerSystems.get_series_susceptance","text":"get_series_susceptance(\n b::Union{PhaseShiftingTransformer, TapTransformer}\n) -> Float64\n\n\nReturns the series susceptance of a controllable transformer following the convention in power systems to define susceptance as the inverse of the imaginary part of the impedance. In the case of phase shifter transformers the angle is ignored.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_user_field-Tuple{PowerSystemTableData, PowerSystems.InputCategoryModule.InputCategory, AbstractString}","page":"Internal API Reference","title":"PowerSystems.get_user_field","text":"get_user_field(\n data::PowerSystemTableData,\n category::PowerSystems.InputCategoryModule.InputCategory,\n field::AbstractString\n) -> Any\n\n\nReturn the custom name stored in the user descriptor file.\n\nThrows DataFormatError if a required value is not found in the file.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.get_user_fields-Tuple{PowerSystemTableData, PowerSystems.InputCategoryModule.InputCategory}","page":"Internal API Reference","title":"PowerSystems.get_user_fields","text":"get_user_fields(\n data::PowerSystemTableData,\n category::PowerSystems.InputCategoryModule.InputCategory\n) -> Any\n\n\nReturn a vector of user-defined fields for the category.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_component_addition!-Tuple{System, Component}","page":"Internal API Reference","title":"PowerSystems.handle_component_addition!","text":"handle_component_addition!(\n sys::System,\n component::Component;\n kwargs...\n)\n\n\nRefer to docstring for checkcomponentaddition!\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.handle_component_removal!-Tuple{System, ACBus}","page":"Internal API Reference","title":"PowerSystems.handle_component_removal!","text":"handle_component_removal!(sys::System, bus::ACBus)\n\n\nThrows ArgumentError if the bus number is not stored in the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.has_component-Union{Tuple{T}, Tuple{Type{T}, System, AbstractString}} where T<:Component","page":"Internal API Reference","title":"PowerSystems.has_component","text":"has_component(\n _::Type{T<:Component},\n sys::System,\n name::AbstractString\n) -> Bool\n\n\nCheck to see if the component of type T with name exists.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.im_replicate-Tuple{Dict{String}, Int64, Set{String}}","page":"Internal API Reference","title":"PowerSystems.im_replicate","text":"im_replicate(\n sn_data::Dict{String},\n count::Int64,\n global_keys::Set{String}\n) -> Dict{String, Any}\n\n\nTransforms a single network into a multinetwork with several deepcopies of the original network\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.is_attached-Union{Tuple{T}, Tuple{T, System}} where T<:Component","page":"Internal API Reference","title":"PowerSystems.is_attached","text":"is_attached(component::Component, sys::System) -> Bool\n\n\nReturn true if the component is attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.isafield-Tuple{Component, Symbol}","page":"Internal API Reference","title":"PowerSystems.isafield","text":"isafield(component::Component, field::Symbol) -> Any\n\n\nChecks if a PowerSystemDevice has a field or subfield name.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.ismultinetwork-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.ismultinetwork","text":"ismultinetwork(data::Dict{String}) -> Any\n\n\nchecks if a given network data is a multinetwork\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.iterate_rows-Tuple{PowerSystemTableData, Any}","page":"Internal API Reference","title":"PowerSystems.iterate_rows","text":"iterate_rows(\n data::PowerSystemTableData,\n category;\n na_to_nothing\n) -> Channel{Any}\n\n\nReturn a NamedTuple of parameters from the descriptor file for each row of a dataframe, making type conversions as necessary.\n\nRefer to the PowerSystems descriptor file for field names that will be created.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.load_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internal API Reference","title":"PowerSystems.load_csv_parser!","text":"load_csv_parser!(sys::System, data::PowerSystemTableData)\n\n\nload_csv_parser!(sys::System, data::PowerSystemTableData)\n\nAdd loads to the System from the raw load data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.loadzone_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internal API Reference","title":"PowerSystems.loadzone_csv_parser!","text":"loadzone_csv_parser!(\n sys::System,\n data::PowerSystemTableData\n)\n\n\nloadzone_csv_parser!(sys::System, data::PowerSystemTableData)\n\nAdd branches to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_bus-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.make_bus","text":"make_bus(bus_dict::Dict{String, Any}) -> ACBus\n\n\nCreates a PowerSystems.ACBus from a PowerSystems bus dictionary\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_generator-Tuple{PowerSystemTableData, Vararg{Any, 4}}","page":"Internal API Reference","title":"PowerSystems.make_generator","text":"make_generator(\n data::PowerSystemTableData,\n gen,\n cost_colnames,\n bus,\n gen_storage\n) -> Any\n\n\nCreates a generator of any type.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_mixed_units!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.make_mixed_units!","text":"make_mixed_units!(data::Dict{String})\n\n\nTransforms network data into mixed-units (inverse of per-unit)\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_per_unit!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.make_per_unit!","text":"make_per_unit!(data::Dict{String})\n\n\nTransforms network data into per-unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.make_thermal_gen-Tuple{AbstractString, Dict, ACBus, Number}","page":"Internal API Reference","title":"PowerSystems.make_thermal_gen","text":"make_thermal_gen(\n gen_name::AbstractString,\n d::Dict,\n bus::ACBus,\n sys_mbase::Number\n) -> ThermalStandard\n\n\nThe polynomial term follows the convention that for an n-degree polynomial, at least n + 1 components are needed. c(p) = cn*p^n+...+c1p+c0 co is stored in the field in of the Econ Struct\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.move_genfuel_and_gentype!-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.move_genfuel_and_gentype!","text":"move_genfuel_and_gentype!(data::Dict{String, Any})\n\n\nMove gentype and genfuel fields to be subfields of gen\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_matpower-Tuple{IO}","page":"Internal API Reference","title":"PowerSystems.parse_matpower","text":"parse_matpower(io::IO; validate) -> Dict{String, Any}\n\n\nParses the matpwer data from either a filename or an IO object\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_psse-Tuple{IO}","page":"Internal API Reference","title":"PowerSystems.parse_psse","text":"parse_psse(io::IO; kwargs...) -> Dict{String, Any}\n\n\nfunction parse_psse(io::IO; kwargs...)::Dict\n\nParses directly from iostream\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_psse-Tuple{String}","page":"Internal API Reference","title":"PowerSystems.parse_psse","text":"parse_psse(filename::String; kwargs...) -> Dict{String, Any}\n\n\nparse_psse(filename::String; kwargs...)::Dict\n\nParses directly from file\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_pti-Tuple{IO}","page":"Internal API Reference","title":"PowerSystems.parse_pti","text":"parse_pti(io::IO) -> Dict{String, Array{Dict}}\n\n\nparse_pti(io::IO)\n\nReads PTI data in io::IO, returning a Dict of the data parsed into the proper types.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.parse_pti-Tuple{String}","page":"Internal API Reference","title":"PowerSystems.parse_pti","text":"parse_pti(filename::String) -> Dict{String, Array{Dict}}\n\n\nparse_pti(filename::String)\n\nOpen PTI raw file given by filename, returning a Dict of the data parsed into the proper types.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.propagate_topology_status!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.propagate_topology_status!","text":"propagate_topology_status!(\n data::Dict{String}\n) -> Union{Nothing, Bool}\n\n\nfinds active network buses and branches that are not necessary for the computation and sets their status to off.\n\nWorks on a PowerModels data dict, so that a it can be used without a GenericPowerModel object\n\nWarning: this implementation has quadratic complexity, in the worst case\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.read_gen!-Tuple{System, Dict, Dict{Int64, ACBus}}","page":"Internal API Reference","title":"PowerSystems.read_gen!","text":"read_gen!(\n sys::System,\n data::Dict,\n bus_number_to_bus::Dict{Int64, ACBus};\n kwargs...\n)\n\n\nTransfer generators to ps_dict according to their classification\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.replicate-Tuple{Dict{String}, Int64}","page":"Internal API Reference","title":"PowerSystems.replicate","text":"replicate(\n sn_data::Dict{String},\n count::Int64;\n global_keys\n) -> Dict{String, Any}\n\n\nTurns in given single network data in multinetwork data with a count replicate of the given network. Note that this function performs a deepcopy of the network data. Significant multinetwork space savings can often be achieved by building application specific methods of building multinetwork with minimal data replication.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.resolve_swithces!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.resolve_swithces!","text":"resolve_swithces!(data::Dict{String})\n\n\ngiven a network data dict merges buses that are connected by closed switches converting the dataset into a pure bus-branch model.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.row_to_dict-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems.row_to_dict","text":"row_to_dict(row_data, columns) -> Dict{String, Any}\n\n\ntakes a row from a matrix and assigns the values names\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.row_to_typed_dict-Tuple{Any, Any}","page":"Internal API Reference","title":"PowerSystems.row_to_typed_dict","text":"row_to_typed_dict(row_data, columns) -> Dict{String, Any}\n\n\ntakes a row from a matrix and assigns the values names and types\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.select_largest_component-Tuple{Dict{String, Any}}","page":"Internal API Reference","title":"PowerSystems.select_largest_component","text":"select_largest_component(data::Dict{String, Any}) -> Any\n\n\ndetermines the largest connected component of the network and turns everything else off\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.serialize_uuid_handling-Tuple{Any}","page":"Internal API Reference","title":"PowerSystems.serialize_uuid_handling","text":"serialize_uuid_handling(val) -> Any\n\n\nSerialize the value, encoding as UUIDs where necessary.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.services_csv_parser!-Tuple{System, PowerSystemTableData}","page":"Internal API Reference","title":"PowerSystems.services_csv_parser!","text":"services_csv_parser!(\n sys::System,\n data::PowerSystemTableData\n)\n\n\nAdd services to the System from the raw data.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_branch!-Tuple{DynamicBranch, ACBranch}","page":"Internal API Reference","title":"PowerSystems.set_branch!","text":"set_branch!(value::DynamicBranch, val::ACBranch) -> ACBranch\n\n\nSet branch\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_electric_load!-Tuple{HybridSystem, ElectricLoad}","page":"Internal API Reference","title":"PowerSystems.set_electric_load!","text":"set_electric_load!(hybrid::HybridSystem, val::ElectricLoad)\n\n\nSet HybridSystem load\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_interconnection_impedance!-Tuple{HybridSystem, Any}","page":"Internal API Reference","title":"PowerSystems.set_interconnection_impedance!","text":"set_interconnection_impedance!(\n value::HybridSystem,\n val\n) -> Any\n\n\nset HybridSystem interconnection impedance\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_interconnection_rating!-Tuple{HybridSystem, Any}","page":"Internal API Reference","title":"PowerSystems.set_interconnection_rating!","text":"set_interconnection_rating!(value::HybridSystem, val) -> Any\n\n\nSet HybridSystem rating.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_renewable_unit!-Tuple{HybridSystem, RenewableGen}","page":"Internal API Reference","title":"PowerSystems.set_renewable_unit!","text":"set_renewable_unit!(hybrid::HybridSystem, val::RenewableGen)\n\n\nSet HybridSystem renewable unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_storage!-Tuple{HybridSystem, Storage}","page":"Internal API Reference","title":"PowerSystems.set_storage!","text":"set_storage!(hybrid::HybridSystem, val::Storage)\n\n\nSet HybridSystem storage unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.set_thermal_unit!-Tuple{HybridSystem, ThermalGen}","page":"Internal API Reference","title":"PowerSystems.set_thermal_unit!","text":"set_thermal_unit!(hybrid::HybridSystem, val::ThermalGen)\n\n\nSet HybridSystem thermal unit\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.simplify_cost_terms!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.simplify_cost_terms!","text":"simplify_cost_terms!(\n data::Dict{String}\n) -> Tuple{Set{Int64}, Set{Int64}}\n\n\ntrims zeros from higher order cost terms\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.simplify_network!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.simplify_network!","text":"simplify_network!(data::Dict{String}) -> Bool\n\n\nattempts to deactive components that are not needed in the network by repeated calls to propagate_topology_status! and deactivate_isolated_components!\n\nwarning: this implementation has quadratic complexity, in the worst case\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.split_line-Tuple{AbstractString}","page":"Internal API Reference","title":"PowerSystems.split_line","text":"split_line(mp_line::AbstractString) -> Vector{Any}\n\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.standardize_cost_terms!-Tuple{Dict{String}}","page":"Internal API Reference","title":"PowerSystems.standardize_cost_terms!","text":"standardize_cost_terms!(data::Dict{String}; order)\n\n\nensures all polynomial costs functions have the same number of terms\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.throw_if_not_attached-Tuple{Component, System}","page":"Internal API Reference","title":"PowerSystems.throw_if_not_attached","text":"throw_if_not_attached(component::Component, sys::System)\n\n\nThrows ArgumentError if the component is not attached to the system.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.total_capacity_rating-Tuple{System}","page":"Internal API Reference","title":"PowerSystems.total_capacity_rating","text":"total_capacity_rating(sys::System) -> Any\n\n\ntotal_capacity_rating(sys::System)\n\nSum of system generator and storage ratings.\n\nArguments\n\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.total_load_rating-Tuple{System}","page":"Internal API Reference","title":"PowerSystems.total_load_rating","text":"total_load_rating(sys::System) -> Any\n\n\ntotal_load_rating(sys::System)\n\nChecks the system for sum(generator ratings) >= sum(load ratings).\n\nArguments\n\nsys::System: system\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.update_bus_ids!-Tuple{Dict{String}, Dict{Int64, Int64}}","page":"Internal API Reference","title":"PowerSystems.update_bus_ids!","text":"update_bus_ids!(\n data::Dict{String},\n bus_id_map::Dict{Int64, Int64};\n injective\n)\n\n\ngiven a network data dict and a mapping of current-bus-ids to new-bus-ids modifies the data dict to reflect the proposed new bus ids.\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.update_data!-Tuple{Dict{String}, Dict{String}}","page":"Internal API Reference","title":"PowerSystems.update_data!","text":"update_data!(data::Dict{String}, new_data::Dict{String})\n\n\nrecursively applies new_data to data, overwriting information\n\n\n\n\n\n","category":"method"},{"location":"api/internal/#PowerSystems.verify_device_eligibility-Tuple{System, StaticInjection, Service}","page":"Internal API Reference","title":"PowerSystems.verify_device_eligibility","text":"verify_device_eligibility(\n sys::System,\n component::StaticInjection,\n service::Service\n)\n\n\nValidates if a device is eligible to contribute to a service.\n\nArguments\n\nsys::System: PowerSystem System\ncomponent::StaticInjection: Static injection device\nservice::Service,: Service for which the device is eligible to contribute\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#FrequencyEstimator","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/#FixedFrequency","page":"FrequencyEstimator","title":"FixedFrequency","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"Modules = [PowerSystems]\nPages = [\"/FixedFrequency.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.FixedFrequency","page":"FrequencyEstimator","title":"PowerSystems.FixedFrequency","text":"mutable struct FixedFrequency <: FrequencyEstimator\n frequency::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Fixed Frequency Estimator (i.e. no PLL).\n\nArguments\n\nfrequency::Float64: Reference used\next::Dict{String, Any}\nstates::Vector{Symbol}: FixedFrequency has no states\nn_states::Int: FixedFrequency has no states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ext-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_ext","text":"get_ext(value::FixedFrequency) -> Dict{String, Any}\n\n\nGet FixedFrequency ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_frequency-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_frequency","text":"get_frequency(value::FixedFrequency) -> Float64\n\n\nGet FixedFrequency frequency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_n_states-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_n_states","text":"get_n_states(value::FixedFrequency) -> Int64\n\n\nGet FixedFrequency n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_states-Tuple{FixedFrequency}","page":"FrequencyEstimator","title":"PowerSystems.get_states","text":"get_states(value::FixedFrequency) -> Vector{Symbol}\n\n\nGet FixedFrequency states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ext!-Tuple{FixedFrequency, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ext!","text":"set_ext!(value::FixedFrequency, val) -> Any\n\n\nSet FixedFrequency ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_frequency!-Tuple{FixedFrequency, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_frequency!","text":"set_frequency!(value::FixedFrequency, val) -> Any\n\n\nSet FixedFrequency frequency.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#KauraPLL","page":"FrequencyEstimator","title":"KauraPLL","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"Modules = [PowerSystems]\nPages = [\"/KauraPLL.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.KauraPLL","page":"FrequencyEstimator","title":"PowerSystems.KauraPLL","text":"mutable struct KauraPLL <: FrequencyEstimator\n ω_lp::Float64\n kp_pll::Float64\n ki_pll::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Phase-Locked Loop (PLL) based on Kaura, Vikram, and Vladimir Blasko. \"Operation of a phase locked loop system under distorted utility conditions.\" IEEE Transactions on Industry applications 33.1 (1997): 58-63.\n\nArguments\n\nω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)\nkp_pll::Float64: PLL proportional gain, validation range: (0, nothing)\nki_pll::Float64: PLL integral gain, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the KauraPLL model are:\n\nvd_pll: d-axis of the measured voltage in the PLL synchronous reference frame (SRF),\nvq_pll: q-axis of the measured voltage in the PLL SRF,\nε_pll: Integrator state of the PI controller,\nθ_pll: Phase angle displacement in the PLL SRF\n\nn_states::Int: KauraPLL has 4 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ext-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ext","text":"get_ext(value::KauraPLL) -> Dict{String, Any}\n\n\nGet KauraPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ki_pll-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ki_pll","text":"get_ki_pll(value::KauraPLL) -> Float64\n\n\nGet KauraPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_kp_pll-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_kp_pll","text":"get_kp_pll(value::KauraPLL) -> Float64\n\n\nGet KauraPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_n_states-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_n_states","text":"get_n_states(value::KauraPLL) -> Int64\n\n\nGet KauraPLL n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_states-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_states","text":"get_states(value::KauraPLL) -> Vector{Symbol}\n\n\nGet KauraPLL states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ω_lp-Tuple{KauraPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ω_lp","text":"get_ω_lp(value::KauraPLL) -> Float64\n\n\nGet KauraPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ext!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ext!","text":"set_ext!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ki_pll!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ki_pll!","text":"set_ki_pll!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_kp_pll!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_kp_pll!","text":"set_kp_pll!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ω_lp!-Tuple{KauraPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ω_lp!","text":"set_ω_lp!(value::KauraPLL, val) -> Any\n\n\nSet KauraPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#ReducedOrderPLL","page":"FrequencyEstimator","title":"ReducedOrderPLL","text":"","category":"section"},{"location":"model_library/generated_FrequencyEstimator/","page":"FrequencyEstimator","title":"FrequencyEstimator","text":"Modules = [PowerSystems]\nPages = [\"/ReducedOrderPLL.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.ReducedOrderPLL","page":"FrequencyEstimator","title":"PowerSystems.ReducedOrderPLL","text":"mutable struct ReducedOrderPLL <: FrequencyEstimator\n ω_lp::Float64\n kp_pll::Float64\n ki_pll::Float64\n ext::Dict{String, Any}\n states::Vector{Symbol}\n n_states::Int\nend\n\nParameters of a Phase-Locked Loop (PLL) based on Purba, Dhople, Jafarpour, Bullo and Johnson. \"Reduced-order Structure-preserving Model for Parallel-connected Three-phase Grid-tied Inverters.\" 2017 IEEE 18th Workshop on Control and Modeling for Power Electronics (COMPEL): 1-7.\n\nArguments\n\nω_lp::Float64: PLL low-pass filter frequency (rad/sec), validation range: (0, nothing)\nkp_pll::Float64: PLL proportional gain, validation range: (0, nothing)\nki_pll::Float64: PLL integral gain, validation range: (0, nothing)\next::Dict{String, Any}\nstates::Vector{Symbol}: The states of the ReducedOrderPLL model are:\n\nvq_pll: q-axis of the measured voltage in the PLL synchronous reference frame (SRF),\nε_pll: Integrator state of the PI controller,\nθ_pll: Phase angle displacement in the PLL SRF\n\nn_states::Int: ReducedOrderPLL has 3 states\n\n\n\n\n\n","category":"type"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ext-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ext","text":"get_ext(value::ReducedOrderPLL) -> Dict{String, Any}\n\n\nGet ReducedOrderPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ki_pll-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ki_pll","text":"get_ki_pll(value::ReducedOrderPLL) -> Float64\n\n\nGet ReducedOrderPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_kp_pll-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_kp_pll","text":"get_kp_pll(value::ReducedOrderPLL) -> Float64\n\n\nGet ReducedOrderPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_n_states-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_n_states","text":"get_n_states(value::ReducedOrderPLL) -> Int64\n\n\nGet ReducedOrderPLL n_states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_states-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_states","text":"get_states(value::ReducedOrderPLL) -> Vector{Symbol}\n\n\nGet ReducedOrderPLL states.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.get_ω_lp-Tuple{ReducedOrderPLL}","page":"FrequencyEstimator","title":"PowerSystems.get_ω_lp","text":"get_ω_lp(value::ReducedOrderPLL) -> Float64\n\n\nGet ReducedOrderPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ext!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ext!","text":"set_ext!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ki_pll!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ki_pll!","text":"set_ki_pll!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL ki_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_kp_pll!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_kp_pll!","text":"set_kp_pll!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL kp_pll.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_FrequencyEstimator/#PowerSystems.set_ω_lp!-Tuple{ReducedOrderPLL, Any}","page":"FrequencyEstimator","title":"PowerSystems.set_ω_lp!","text":"set_ω_lp!(value::ReducedOrderPLL, val) -> Any\n\n\nSet ReducedOrderPLL ω_lp.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#ExponentialLoad","page":"ExponentialLoad","title":"ExponentialLoad","text":"","category":"section"},{"location":"model_library/generated_ExponentialLoad/","page":"ExponentialLoad","title":"ExponentialLoad","text":"Modules = [PowerSystems]\nPages = [\"generated/ExponentialLoad.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"model_library/generated_ExponentialLoad/#InfrastructureSystems.get_name-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"InfrastructureSystems.get_name","text":"get_name(value::PowerSystems.ExponentialLoad) -> String\n\n\nGet ExponentialLoad name.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#InfrastructureSystems.get_time_series_container-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"InfrastructureSystems.get_time_series_container","text":"get_time_series_container(\n value::PowerSystems.ExponentialLoad\n) -> InfrastructureSystems.TimeSeriesContainer\n\n\nGet ExponentialLoad time_series_container.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_active_power-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_active_power","text":"get_active_power(value::PowerSystems.ExponentialLoad) -> Any\n\n\nGet ExponentialLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_active_power_coefficient-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_active_power_coefficient","text":"get_active_power_coefficient(\n value::PowerSystems.ExponentialLoad\n) -> Float64\n\n\nGet ExponentialLoad active_power_coefficient.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_available-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_available","text":"get_available(value::PowerSystems.ExponentialLoad) -> Bool\n\n\nGet ExponentialLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_base_power-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_base_power","text":"get_base_power(\n value::PowerSystems.ExponentialLoad\n) -> Float64\n\n\nGet ExponentialLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_bus-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_bus","text":"get_bus(value::PowerSystems.ExponentialLoad) -> ACBus\n\n\nGet ExponentialLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_dynamic_injector-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_dynamic_injector","text":"get_dynamic_injector(\n value::PowerSystems.ExponentialLoad\n) -> Union{Nothing, DynamicInjection}\n\n\nGet ExponentialLoad dynamic_injector.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_ext-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_ext","text":"get_ext(\n value::PowerSystems.ExponentialLoad\n) -> Dict{String, Any}\n\n\nGet ExponentialLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_max_active_power-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_max_active_power","text":"get_max_active_power(\n value::PowerSystems.ExponentialLoad\n) -> Any\n\n\nGet ExponentialLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_max_reactive_power-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_max_reactive_power","text":"get_max_reactive_power(\n value::PowerSystems.ExponentialLoad\n) -> Any\n\n\nGet ExponentialLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_reactive_power-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_reactive_power","text":"get_reactive_power(\n value::PowerSystems.ExponentialLoad\n) -> Any\n\n\nGet ExponentialLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_reactive_power_coefficient-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_reactive_power_coefficient","text":"get_reactive_power_coefficient(\n value::PowerSystems.ExponentialLoad\n) -> Float64\n\n\nGet ExponentialLoad reactive_power_coefficient.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.get_services-Tuple{PowerSystems.ExponentialLoad}","page":"ExponentialLoad","title":"PowerSystems.get_services","text":"get_services(\n value::PowerSystems.ExponentialLoad\n) -> Vector{Service}\n\n\nGet ExponentialLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_active_power!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_active_power!","text":"set_active_power!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_active_power_coefficient!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_active_power_coefficient!","text":"set_active_power_coefficient!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad active_power_coefficient.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_available!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_available!","text":"set_available!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad available.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_base_power!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_base_power!","text":"set_base_power!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad base_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_bus!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_bus!","text":"set_bus!(value::PowerSystems.ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad bus.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_ext!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_ext!","text":"set_ext!(value::PowerSystems.ExponentialLoad, val) -> Any\n\n\nSet ExponentialLoad ext.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_max_active_power!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_max_active_power!","text":"set_max_active_power!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad max_active_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_max_reactive_power!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_max_reactive_power!","text":"set_max_reactive_power!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad max_reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_reactive_power!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_reactive_power!","text":"set_reactive_power!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad reactive_power.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_reactive_power_coefficient!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_reactive_power_coefficient!","text":"set_reactive_power_coefficient!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad reactive_power_coefficient.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_services!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_services!","text":"set_services!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad services.\n\n\n\n\n\n","category":"method"},{"location":"model_library/generated_ExponentialLoad/#PowerSystems.set_time_series_container!-Tuple{PowerSystems.ExponentialLoad, Any}","page":"ExponentialLoad","title":"PowerSystems.set_time_series_container!","text":"set_time_series_container!(\n value::PowerSystems.ExponentialLoad,\n val\n) -> Any\n\n\nSet ExponentialLoad time_series_container.\n\n\n\n\n\n","category":"method"}] +} diff --git a/v3.3.0/siteinfo.js b/v3.3.0/siteinfo.js new file mode 100644 index 0000000000..1b9b0a61d1 --- /dev/null +++ b/v3.3.0/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "v3.3.0"; diff --git a/v3.3.0/tutorials/add_forecasts/index.html b/v3.3.0/tutorials/add_forecasts/index.html new file mode 100644 index 0000000000..9b65701378 --- /dev/null +++ b/v3.3.0/tutorials/add_forecasts/index.html @@ -0,0 +1,159 @@ + +Add Forecasts · PowerSystems.jl

      Add time series to System

      Originally Contributed by: Clayton Barrows

      Introduction

      An example of how to parse add time series data to a System using PowerSystems.jl

      For example, a System created by parsing a MATPOWER file doesn't contain any time series data. So a user may want to add time series to the System.

      Dependencies

      Let's use the 5-bus dataset we parsed in the MATPOWER example

      julia> using PowerSystems
      julia> using JSON3
      julia> sys = System(joinpath(file_dir, "case5_re.m"))┌ Error: Matlab parser skipping line number 85 consisting of: +│ }; +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: extending matpower format with data: gen_name 7x4 +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 3 cost terms from generator 6: Float64[] +[ Info: removing 3 cost terms from generator 7: Float64[] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "nesta_case5_pjm" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 30 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ false │ false │ +│ RenewableDispatch │ 2 │ false │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘

      Define pointers to time series files

      For example, if we want to add a bunch of time series files, say one for each load and one for each renewable generator, we need to define pointers to each .csv file containing the time series in the following format (PowerSystems.jl also supports a CSV format for this file). We will use Artifacts for the following data.


      julia> fname = joinpath(FORECASTS_DIR, "timeseries_pointers_da.json")"/home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0/5-Bus/5bus_ts/timeseries_pointers_da.json"
      julia> open(fname, "r") do f + JSON3.@pretty JSON3.read(f) + end[ + { + "simulation": "DAY_AHEAD", + "resolution": 3600, + "category": "Generator", + "component_name": "SolarBusC", + "module": "PowerSystems", + "type": "SingleTimeSeries", + "name": "max_active_power", + "scaling_factor_multiplier": "get_max_active_power", + "scaling_factor_multiplier_module": "PowerSystems", + "normalization_factor": 1, + "data_file": "./gen/Renewable/PV/da_solar5.csv" + }, + { + "simulation": "DAY_AHEAD", + "resolution": 3600, + "category": "Generator", + "component_name": "WindBusA", + "module": "PowerSystems", + "type": "SingleTimeSeries", + "name": "max_active_power", + "scaling_factor_multiplier": "get_max_active_power", + "scaling_factor_multiplier_module": "PowerSystems", + "normalization_factor": 1, + "data_file": "./gen/Renewable/WIND/da_wind5.csv" + }, + { + "simulation": "DAY_AHEAD", + "resolution": 3600, + "category": "ElectricLoad", + "component_name": "bus2", + "module": "PowerSystems", + "type": "SingleTimeSeries", + "name": "max_active_power", + "scaling_factor_multiplier": "get_max_active_power", + "scaling_factor_multiplier_module": "PowerSystems", + "normalization_factor": 1, + "data_file": "./load/da_load5.csv" + }, + { + "simulation": "DAY_AHEAD", + "resolution": 3600, + "category": "ElectricLoad", + "component_name": "bus3", + "module": "PowerSystems", + "type": "SingleTimeSeries", + "name": "max_active_power", + "scaling_factor_multiplier": "get_max_active_power", + "scaling_factor_multiplier_module": "PowerSystems", + "normalization_factor": 1, + "data_file": "./load/da_load5.csv" + }, + { + "simulation": "DAY_AHEAD", + "resolution": 3600, + "category": "ElectricLoad", + "component_name": "bus4", + "module": "PowerSystems", + "type": "SingleTimeSeries", + "name": "max_active_power", + "scaling_factor_multiplier": "get_max_active_power", + "scaling_factor_multiplier_module": "PowerSystems", + "normalization_factor": 1, + "data_file": "./load/da_load5.csv" + } +]

      Read and assign time series to System using these parameters.

      julia> add_time_series!(sys, fname)
      julia> sysSystem +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 30 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ true │ false │ +│ RenewableDispatch │ 2 │ true │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘ + +Time Series Summary +┌──────────────────────────────────┬────────────┐ +│ Property │ Value │ +├──────────────────────────────────┼────────────┤ +│ Components with time series data │ 5 │ +│ Total StaticTimeSeries │ 5 │ +│ Total Forecasts │ 0 │ +│ Resolution │ 60 minutes │ +└──────────────────────────────────┴────────────┘
      diff --git a/v3.3.0/tutorials/basics/index.html b/v3.3.0/tutorials/basics/index.html new file mode 100644 index 0000000000..370d387c5b --- /dev/null +++ b/v3.3.0/tutorials/basics/index.html @@ -0,0 +1,247 @@ + +Introduction · PowerSystems.jl

      Basics

      This tutorial shows some basic operations that you can do in PowerSystems.jl with your data.

      Load Packages

      julia> using PowerSystems
      +       # For displaying subtypes
      julia> import TypeTree: tt
      julia> docs_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "utils");

      Types in PowerSystems

      PowerSystems.jl provides a type hierarchy for specifying power system data. Data that describes infrastructure components is held in structs. For example, a Bus is defined as follows with fields for the parameters required to describe a bus (along with an internal field used by InfrastructureSystems to improve the efficiency of handling data).

      julia> print_struct(ACBus)mutable struct ACBus
      +    number::Int64
      +    name::String
      +    bustype::Union{Nothing, ACBusTypes}
      +    angle::Union{Nothing, Float64}
      +    magnitude::Union{Nothing, Float64}
      +    voltage_limits::Union{Nothing, @NamedTuple{min::Float64, max::Float64}}
      +    base_voltage::Union{Nothing, Float64}
      +    area::Union{Nothing, Area}
      +    load_zone::Union{Nothing, LoadZone}
      +    ext::Dict{String, Any}
      +    internal::InfrastructureSystems.InfrastructureSystemsInternal
      +end

      Type Hierarchy

      PowerSystems is intended to organize data containers by the behavior of the devices that the data represents. To that end, a type hierarchy has been defined with several levels of abstract types starting with InfrastructureSystemsType. There are a bunch of subtypes of InfrastructureSystemsType, but the important ones to know about are:

      • Component: includes all elements of power system data
        • Topology: includes non physical elements describing network connectivity
        • Service: includes descriptions of system requirements (other than energy balance)
        • Device: includes descriptions of all the physical devices in a power system
      • InfrastructureSystems.DeviceParameter: includes structs that hold data describing the

      dynamic, or economic capabilities of Device.

      • TimeSeriesData: Includes all time series types
        • Forecast: includes structs to define time series of forecasted data where multiple

      values can represent each time stamp

      • StaticTimeSeries: includes structs to define time series with a single value for each

      time stamp

      • System: collects all of the Components

      The following code displays the hierarchy, but concrete types are omitted for brevity:

      julia> print(join(tt(PowerSystems.IS.InfrastructureSystemsType, concrete = false), ""))InfrastructureSystems.InfrastructureSystemsType
      + ├─ InfrastructureSystems.DeviceParameter
      + │   ├─ DynamicComponent
      + │   │   ├─ PowerSystems.DynamicGeneratorComponent
      + │   │   │   ├─ AVR
      + │   │   │   ├─ Machine
      + │   │   │   ├─ PSS
      + │   │   │   ├─ Shaft
      + │   │   │   └─ TurbineGov
      + │   │   ├─ PowerSystems.DynamicInverterComponent
      + │   │   │   ├─ Converter
      + │   │   │   ├─ DCSource
      + │   │   │   ├─ Filter
      + │   │   │   ├─ FrequencyEstimator
      + │   │   │   ├─ InnerControl
      + │   │   │   └─ PowerSystems.InverterLimiter
      + │   │   └─ PowerSystems.InverterComponent
      + │   ├─ PowerSystems.ActivePowerControl
      + │   ├─ PowerSystems.OperationalCost
      + │   └─ PowerSystems.ReactivePowerControl
      + ├─ InfrastructureSystems.InfrastructureSystemsComponent
      + │   ├─ Component
      + │   │   ├─ Device
      + │   │   │   ├─ Branch
      + │   │   │   │   ├─ ACBranch
      + │   │   │   │   └─ DCBranch
      + │   │   │   ├─ DynamicInjection
      + │   │   │   └─ StaticInjection
      + │   │   │       ├─ ElectricLoad
      + │   │   │       │   ├─ ControllableLoad
      + │   │   │       │   └─ StaticLoad
      + │   │   │       ├─ Generator
      + │   │   │       │   ├─ HydroGen
      + │   │   │       │   ├─ RenewableGen
      + │   │   │       │   └─ ThermalGen
      + │   │   │       ├─ StaticInjectionSubsystem
      + │   │   │       └─ Storage
      + │   │   ├─ Service
      + │   │   │   └─ AbstractReserve
      + │   │   │       ├─ Reserve
      + │   │   │       └─ ReserveNonSpinning
      + │   │   └─ Topology
      + │   │       ├─ AggregationTopology
      + │   │       └─ Bus
      + │   └─ TimeSeriesData
      + │       ├─ Forecast
      + │       │   └─ AbstractDeterministic
      + │       └─ StaticTimeSeries
      + ├─ InfrastructureSystems.TimeSeriesMetadata
      + │   ├─ InfrastructureSystems.ForecastMetadata
      + │   └─ InfrastructureSystems.StaticTimeSeriesMetadata
      + └─ PowerSystemCaseBuilder.PowerSystemCaseBuilderType
      +     └─ PowerSystemCaseBuilder.SystemCategory

      TimeSeriesData

      Read the Docs! Every Component has a time_series_container::InfrastructureSystems.TimeSeriesContainer field. TimeSeriesData are used to hold time series information that describes the temporally dependent data of fields within the same struct. For example, the ThermalStandard.time_series_container field can describe other fields in the struct (available, activepower, reactivepower).

      TimeSeriesDatas themselves can take the form of the following:

      julia> print(join(tt(TimeSeriesData), ""))TimeSeriesData
      + ├─ Forecast
      + │   ├─ AbstractDeterministic
      + │   │   ├─ Deterministic
      + │   │   └─ DeterministicSingleTimeSeries
      + │   ├─ Probabilistic
      + │   └─ Scenarios
      + └─ StaticTimeSeries
      +     └─ SingleTimeSeries

      In each case, the time series contains fields for scaling_factor_multiplier and data to identify the details of th Component field that the time series describes, and the time series data. For example: we commonly want to use a time series to describe the maximum active power capability of a renewable generator. In this case, we can create a SingleTimeSeries with a TimeArray and an accessor function to the maximum active power field in the struct describing the generator. In this way, we can store a scaling factor time series that will get multiplied by the maximum active power rather than the magnitudes of the maximum active power time series.

      julia> print_struct(Deterministic)mutable struct Deterministic
      +    name::String
      +    data::Union{DataStructures.SortedDict{Dates.DateTime, Vector{Vector{Tuple{Float64, Float64}}}}, DataStructures.SortedDict{Dates.DateTime, Vector{Float64}}, DataStructures.SortedDict{Dates.DateTime, Vector{Tuple{Float64, Float64}}}}
      +    resolution::Dates.Period
      +    scaling_factor_multiplier::Union{Nothing, Function}
      +    internal::InfrastructureSystems.InfrastructureSystemsInternal
      +end

      Examples of how to create and add time series to system can be found in the Add Time Series Example

      System

      The System object collects all of the individual components into a single struct along with some metadata about the system itself (e.g. base_power)

      julia> print_struct(System)mutable struct System
      +    data::InfrastructureSystems.SystemData
      +    frequency::Float64
      +    bus_numbers::Set{Int64}
      +    runchecks::Base.RefValue{Bool}
      +    units_settings::InfrastructureSystems.SystemUnitsSettings
      +    time_series_directory::Union{Nothing, String}
      +    metadata::PowerSystems.SystemMetadata
      +    internal::InfrastructureSystems.InfrastructureSystemsInternal
      +end

      Example Code

      PowerSystems contains a few basic data files (mostly for testing and demonstration). These can be found here:


      julia> include(joinpath(BASE_DIR, "test", "data_5bus_pu.jl")); #.jl file containing 5-bus system data
      julia> nodes_5 = nodes5() # function to create 5-bus buses5-element Vector{ACBus}: + ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()) + ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()) + ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()) + ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()) + ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())
      julia> thermal_generators5(nodes_5) # function to create thermal generators in 5-bus buses5-element Vector{ThermalStandard}: + ThermalStandard(Alta, true, true, ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 0.4, 0.01, 0.5, (min = 0.0, max = 0.4), (min = -0.3, max = 0.3), nothing, ThreePartCost(VariableCost{Tuple{Float64, Float64}}((0.0, 1400.0)), 0.0, 4.0, 2.0), 100.0, nothing, false, PrimeMovers.ST = 20, ThermalFuels.COAL = 1, Service[], 10000.0, nothing, Dict{String, Any}()) + ThermalStandard(Park City, true, true, ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 1.7, 0.2, 2.2125, (min = 0.0, max = 1.7), (min = -1.275, max = 1.275), (up = 2.0, down = 1.0), ThreePartCost(VariableCost{Tuple{Float64, Float64}}((0.0, 1500.0)), 0.0, 1.5, 0.75), 100.0, (up = 0.02, down = 0.02), false, PrimeMovers.ST = 20, ThermalFuels.COAL = 1, Service[], 10000.0, nothing, Dict{String, Any}()) + ThermalStandard(Solitude, true, true, ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 5.2, 1.0, 5.2, (min = 0.0, max = 5.2), (min = -3.9, max = 3.9), (up = 3.0, down = 2.0), ThreePartCost(VariableCost{Tuple{Float64, Float64}}((0.0, 3000.0)), 0.0, 3.0, 1.5), 100.0, (up = 0.012, down = 0.012), false, PrimeMovers.ST = 20, ThermalFuels.COAL = 1, Service[], 10000.0, nothing, Dict{String, Any}()) + ThermalStandard(Sundance, true, true, ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 2.0, 0.4, 2.5, (min = 0.0, max = 2.0), (min = -1.5, max = 1.5), (up = 2.0, down = 1.0), ThreePartCost(VariableCost{Tuple{Float64, Float64}}((0.0, 4000.0)), 0.0, 4.0, 2.0), 100.0, (up = 0.015, down = 0.015), false, PrimeMovers.ST = 20, ThermalFuels.COAL = 1, Service[], 10000.0, nothing, Dict{String, Any}()) + ThermalStandard(Brighton, true, true, ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 6.0, 1.5, 0.75, (min = 0.0, max = 6.0), (min = -4.5, max = 4.5), (up = 5.0, down = 3.0), ThreePartCost(VariableCost{Tuple{Float64, Float64}}((0.0, 1000.0)), 0.0, 1.5, 0.75), 100.0, (up = 0.015, down = 0.015), false, PrimeMovers.ST = 20, ThermalFuels.COAL = 1, Service[], 10000.0, nothing, Dict{String, Any}())
      julia> renewable_generators5(nodes_5) # function to create renewable generators in 5-bus buses3-element Vector{RenewableDispatch}: + RenewableDispatch(WindBusA, true, ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 2.0, 1.0, 1.2, PrimeMovers.WT = 22, (min = 0.0, max = 0.0), 1.0, TwoPartCost(VariableCost{Float64}(22.0), 0.0), 100.0, Service[], nothing, Dict{String, Any}()) + RenewableDispatch(WindBusB, true, ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 2.0, 1.0, 1.2, PrimeMovers.WT = 22, (min = 0.0, max = 0.0), 1.0, TwoPartCost(VariableCost{Float64}(22.0), 0.0), 100.0, Service[], nothing, Dict{String, Any}()) + RenewableDispatch(WindBusC, true, ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 1.0, 0.0, 1.2, PrimeMovers.WT = 22, (min = -0.8, max = 0.8), 1.0, TwoPartCost(VariableCost{Float64}(22.0), 0.0), 100.0, Service[], nothing, Dict{String, Any}())
      julia> loads5(nodes_5) # function to create the loads3-element Vector{PowerLoad}: + PowerLoad(Bus2, true, ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 3.0, 0.9861, 100.0, 3.0, 0.9861, Service[], nothing, Dict{String, Any}()) + PowerLoad(Bus3, true, ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 3.0, 0.9861, 100.0, 3.0, 0.9861, Service[], nothing, Dict{String, Any}()) + PowerLoad(Bus4, true, ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 4.0, 1.3147, 100.0, 4.0, 1.3147, Service[], nothing, Dict{String, Any}())
      julia> branches5(nodes_5) # function to create the branches6-element Vector{Line}: + Line(1, true, 0.0, 0.0, Arc(ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00281, 0.0281, (from = 0.00356, to = 0.00356), 2.0, (min = -0.7, max = 0.7), Service[], Dict{String, Any}()) + Line(2, true, 0.0, 0.0, Arc(ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00304, 0.0304, (from = 0.00329, to = 0.00329), 2.0, (min = -0.7, max = 0.7), Service[], Dict{String, Any}()) + Line(3, true, 0.0, 0.0, Arc(ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00064, 0.0064, (from = 0.01563, to = 0.01563), 18.812, (min = -0.7, max = 0.7), Service[], Dict{String, Any}()) + Line(4, true, 0.0, 0.0, Arc(ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00108, 0.0108, (from = 0.00926, to = 0.00926), 11.148, (min = -0.7, max = 0.7), Service[], Dict{String, Any}()) + Line(5, true, 0.0, 0.0, Arc(ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00297, 0.0297, (from = 0.00337, to = 0.00337), 40.53, (min = -0.7, max = 0.7), Service[], Dict{String, Any}()) + Line(6, true, 0.0, 0.0, Arc(ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00297, 0.0297, (from = 0.00337, to = 0.00337), 2.0, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())

      Create a System

      julia> sys = System(
      +           100.0,
      +           nodes_5,
      +           vcat(
      +             thermal_generators5(nodes_5),
      +             renewable_generators5(nodes_5)),
      +             loads5(nodes_5),
      +             branches5(nodes_5),
      +       )System
      +┌───────────────────┬─────────────┐
      +│ Property          │ Value       │
      +├───────────────────┼─────────────┤
      +│ Name              │             │
      +│ Description       │             │
      +│ System Units Base │ SYSTEM_BASE │
      +│ Base Power        │ 100.0       │
      +│ Base Frequency    │ 60.0        │
      +│ Num Components    │ 28          │
      +└───────────────────┴─────────────┘
      +
      +Static Components
      +┌───────────────────┬───────┬────────────────────────┬───────────────┐
      +│ Type              │ Count │ Has Static Time Series │ Has Forecasts │
      +├───────────────────┼───────┼────────────────────────┼───────────────┤
      +│ ACBus             │ 5     │ false                  │ false         │
      +│ Arc               │ 6     │ false                  │ false         │
      +│ Line              │ 6     │ false                  │ false         │
      +│ PowerLoad         │ 3     │ false                  │ false         │
      +│ RenewableDispatch │ 3     │ false                  │ false         │
      +│ ThermalStandard   │ 5     │ false                  │ false         │
      +└───────────────────┴───────┴────────────────────────┴───────────────┘

      Accessing System Data

      PowerSystems provides functional interfaces to all data. The following examples outline the intended approach to accessing data expressed using PowerSystems.

      PowerSystems enforces unique name fields between components of a particular concrete type. So, in order to retrieve a specific component, the user must specify the type of the component along with the name and system

      Accessing components

      julia> get_component(ACBus, sys, "nodeA")nodeA (ACBus):
      +   number: 1
      +   name: nodeA
      +   bustype: ACBusTypes.PV = 2
      +   angle: 0.0
      +   magnitude: 1.0
      +   voltage_limits: (min = 0.9, max = 1.05)
      +   base_voltage: 230.0
      +   area: nothing
      +   load_zone: nothing
      +   ext: Dict{String, Any}()
      +   InfrastructureSystems.SystemUnitsSettings:
      +      base_value: 100.0
      +      unit_system: UnitSystem.SYSTEM_BASE = 0
      julia> get_component(Line, sys, "1")1 (Line): + name: 1 + available: true + active_power_flow: 0.0 + reactive_power_flow: 0.0 + arc: nodeA -> nodeB (Arc) + r: 0.00281 + x: 0.0281 + b: (from = 0.00356, to = 0.00356) + rate: 2.0 + angle_limits: (min = -0.7, max = 0.7) + services: 0-element Vector{Service} + ext: Dict{String, Any}() + time_series_container: + InfrastructureSystems.SystemUnitsSettings: + base_value: 100.0 + unit_system: UnitSystem.SYSTEM_BASE = 0

      Similarly, you can access all the components of a particular type: *note: the return type of get_components is a FlattenIteratorWrapper, so call collect to get an Array

      julia> get_components(ACBus, sys) |> collect5-element Vector{ACBus}:
      + ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())
      + ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())
      + ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())
      + ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())
      + ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())

      get_components also works on abstract types:

      julia> get_components(Branch, sys) |> collect6-element Vector{Branch}:
      + Line(4, true, 0.0, 0.0, Arc(ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00108, 0.0108, (from = 0.00926, to = 0.00926), 11.148, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())
      + Line(1, true, 0.0, 0.0, Arc(ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00281, 0.0281, (from = 0.00356, to = 0.00356), 2.0, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())
      + Line(5, true, 0.0, 0.0, Arc(ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00297, 0.0297, (from = 0.00337, to = 0.00337), 40.53, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())
      + Line(2, true, 0.0, 0.0, Arc(ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00304, 0.0304, (from = 0.00329, to = 0.00329), 2.0, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())
      + Line(6, true, 0.0, 0.0, Arc(ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00297, 0.0297, (from = 0.00337, to = 0.00337), 2.0, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())
      + Line(3, true, 0.0, 0.0, Arc(ACBus(1, nodeA, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), ACBus(5, nodeE, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}())), 0.00064, 0.0064, (from = 0.01563, to = 0.01563), 18.812, (min = -0.7, max = 0.7), Service[], Dict{String, Any}())

      The fields within a component can be accessed using the get_* functions: It's highly recommended that users avoid using the . to access fields since we make no guarantees on the stability field names and locations. We do however promise to keep the accessor functions stable.

      julia> bus1 = get_component(ACBus, sys, "nodeA")nodeA (ACBus):
      +   number: 1
      +   name: nodeA
      +   bustype: ACBusTypes.PV = 2
      +   angle: 0.0
      +   magnitude: 1.0
      +   voltage_limits: (min = 0.9, max = 1.05)
      +   base_voltage: 230.0
      +   area: nothing
      +   load_zone: nothing
      +   ext: Dict{String, Any}()
      +   InfrastructureSystems.SystemUnitsSettings:
      +      base_value: 100.0
      +      unit_system: UnitSystem.SYSTEM_BASE = 0
      julia> @show get_name(bus1);get_name(bus1) = "nodeA"
      julia> @show get_magnitude(bus1);get_magnitude(bus1) = 1.0

      Accessing TimeSeries

      First we need to add some time series to the System

      julia> loads = collect(get_components(PowerLoad, sys))3-element Vector{PowerLoad}:
      + PowerLoad(Bus2, true, ACBus(2, nodeB, ACBusTypes.PQ = 1, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 3.0, 0.9861, 100.0, 3.0, 0.9861, Service[], nothing, Dict{String, Any}())
      + PowerLoad(Bus3, true, ACBus(3, nodeC, ACBusTypes.PV = 2, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 3.0, 0.9861, 100.0, 3.0, 0.9861, Service[], nothing, Dict{String, Any}())
      + PowerLoad(Bus4, true, ACBus(4, nodeD, ACBusTypes.REF = 3, 0.0, 1.0, (min = 0.9, max = 1.05), 230.0, nothing, nothing, Dict{String, Any}()), 4.0, 1.3147, 100.0, 4.0, 1.3147, Service[], nothing, Dict{String, Any}())
      julia> for (l, ts) in zip(loads, load_timeseries_DA[2]) + add_time_series!( + sys, + l, + Deterministic( + "activepower", + Dict(TimeSeries.timestamp(load_timeseries_DA[2][1])[1] => ts), + ), + ) + end

      If we want to access a specific time series for a specific component, we need to specify:

      • time series type
      • component
      • initial_time
      • label

      We can find the initial time of all the time series in the system:

      julia> get_forecast_initial_times(sys)1-element Vector{Dates.DateTime}:
      + 2024-01-02T00:00:00

      We can find the names of all time series attached to a component:

      julia> ts_names = get_time_series_names(Deterministic, loads[1])1-element Vector{String}:
      + "activepower"

      We can access a specific time series for a specific component:

      julia> ta = get_time_series_array(Deterministic, loads[1], ts_names[1])24×1 TimeSeries.TimeArray{Float64, 1, Dates.DateTime, SubArray{Float64, 1, Vector{Float64}, Tuple{UnitRange{Int64}}, true}} 2024-01-02T00:00:00 to 2024-01-02T23:00:00
      +│                     │ A      │
      +├─────────────────────┼────────┤
      +│ 2024-01-02T00:00:00 │ 0.8619 │
      +│ 2024-01-02T01:00:00 │ 0.7563 │
      +│ 2024-01-02T02:00:00 │ 0.7213 │
      +│ 2024-01-02T03:00:00 │ 0.7556 │
      +│ 2024-01-02T04:00:00 │ 0.742  │
      +│ 2024-01-02T05:00:00 │ 0.7371 │
      +│ 2024-01-02T06:00:00 │ 0.6978 │
      +│ 2024-01-02T07:00:00 │ 0.7316 │
      +│ ⋮                   │ ⋮      │
      +│ 2024-01-02T17:00:00 │ 0.9628 │
      +│ 2024-01-02T18:00:00 │ 1.0884 │
      +│ 2024-01-02T19:00:00 │ 1.0053 │
      +│ 2024-01-02T20:00:00 │ 1.0273 │
      +│ 2024-01-02T21:00:00 │ 0.9785 │
      +│ 2024-01-02T22:00:00 │ 0.9881 │
      +│ 2024-01-02T23:00:00 │ 0.8704 │

      Or, we can just get the values of the time series:

      julia> ts = get_time_series_values(Deterministic, loads[1], ts_names[1])24-element view(::Vector{Float64}, 1:24) with eltype Float64:
      + 0.8619091900311191
      + 0.7562615234872668
      + 0.7213328704450518
      + 0.7555911493370774
      + 0.7420403391756877
      + 0.7371278883554542
      + 0.6978020623521924
      + 0.7315918736631096
      + 0.8548315961829335
      + 0.8117383836194924
      + ⋮
      + 0.8452107796521597
      + 0.8685974347470509
      + 0.9627865304180159
      + 1.0883621760908393
      + 1.0053077576959464
      + 1.0272819142080896
      + 0.9784521624551457
      + 0.9881302191756894
      + 0.870399605523601
      diff --git a/v3.3.0/tutorials/dynamic_data/index.html b/v3.3.0/tutorials/dynamic_data/index.html new file mode 100644 index 0000000000..5ef51ea98f --- /dev/null +++ b/v3.3.0/tutorials/dynamic_data/index.html @@ -0,0 +1,2 @@ + +Use Dynamic Data · PowerSystems.jl
      diff --git a/v3.3.0/tutorials/modifying_data/index.html b/v3.3.0/tutorials/modifying_data/index.html new file mode 100644 index 0000000000..744bd5a6e5 --- /dev/null +++ b/v3.3.0/tutorials/modifying_data/index.html @@ -0,0 +1,55 @@ + +- · PowerSystems.jl
      using PowerSystems
      +using PowerSystemCaseBuilder
      +
      +c_sys5_pjm_da = build_system(PSITestSystems, "c_sys5_pjm")
      +transform_single_time_series!(c_sys5_pjm_da, 24, Hour(24))
      +c_sys5_pjm_rt = build_system(PSITestSystems, "c_sys5_pjm_rt")
      +transform_single_time_series!(c_sys5_pjm_rt, 24, Hour(1))
      +
      +for sys in [c_sys5_pjm_da, c_sys5_pjm_rt]
      +    th = get_component(ThermalStandard, sys, "Park City")
      +    set_active_power_limits!(th, (min = 0.1, max = 1.7))
      +    set_status!(th, false)
      +    set_active_power!(th, 0.0)
      +    c = get_operation_cost(th)
      +    c.start_up = 1500
      +    c.shut_down = 75
      +    set_time_at_status!(th, 1)
      +
      +    th = get_component(ThermalStandard, sys, "Alta")
      +    set_time_limits!(th, (up = 5, down = 1))
      +    set_active_power_limits!(th, (min = 0.05, max = 0.4))
      +    set_active_power!(th, 0.05)
      +    c = get_operation_cost(th)
      +    c.start_up = 400
      +    c.shut_down = 200
      +    set_time_at_status!(th, 2)
      +
      +    th = get_component(ThermalStandard, sys, "Brighton")
      +    set_active_power_limits!(th, (min = 2.0, max = 6.0))
      +    c = get_operation_cost(th)
      +    set_active_power!(th, 4.88041)
      +    c.start_up = 5000
      +    c.shut_down = 3000
      +
      +    th = get_component(ThermalStandard, sys, "Sundance")
      +    set_active_power_limits!(th, (min = 1.0, max = 2.0))
      +    set_time_limits!(th, (up = 5, down = 1))
      +    set_active_power!(th, 2.0)
      +    c = get_operation_cost(th)
      +    c.start_up = 4000
      +    c.shut_down = 2000
      +    set_time_at_status!(th, 1)
      +
      +    th = get_component(ThermalStandard, sys, "Solitude")
      +    set_active_power_limits!(th, (min = 1.0, max = 5.2))
      +    set_ramp_limits!(th, (up = 0.0052, down = 0.0052))
      +    set_active_power!(th, 2.0)
      +    c = get_operation_cost(th)
      +    c.start_up = 3000
      +    c.shut_down = 1500
      +end
      +
      +to_json(c_sys5_pjm_da, "c_sys5_pjm_da.json")
      +to_json(c_sys5_pjm_rt, "c_sys5_pjm_rt.json")
      diff --git a/v3.3.0/tutorials/parse_powerflow_cases/index.html b/v3.3.0/tutorials/parse_powerflow_cases/index.html new file mode 100644 index 0000000000..70de29c4db --- /dev/null +++ b/v3.3.0/tutorials/parse_powerflow_cases/index.html @@ -0,0 +1,271 @@ + +Parsing PowerFlow Data · PowerSystems.jl

      Parsing Files

      Originally Contributed by: Clayton Barrows

      Introduction

      An example of how to parse MATPOWER and PSSe raw files and create a System using PowerSystems.jl

      Create a System from a Matpower File

      julia> # Load directory
      +       using PowerSystems
      julia> sys = System(joinpath(file_dir, "case5_re.m"))┌ Error: Matlab parser skipping line number 85 consisting of: +│ }; +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: extending matpower format with data: gen_name 7x4 +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 3 cost terms from generator 6: Float64[] +[ Info: removing 3 cost terms from generator 7: Float64[] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "nesta_case5_pjm" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 30 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ false │ false │ +│ RenewableDispatch │ 2 │ false │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘

      Create a System a PSS/e File


      julia> sys = System(joinpath(file_dir, "RTS-GMLC.RAW"))[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines +[ Info: The PSS(R)E parser currently supports buses, loads, shunts, generators, branches, transformers, and dc lines +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: The following fields in LOAD are missing: INTRPT +[ Info: Parsing PSS(R)E Bus data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Load data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Shunt data into a PowerModels Dict... +[ Info: Switched shunt converted to fixed shunt, with default value gs=0.0 +[ Info: Parsing PSS(R)E Generator data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Branch data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Transformer data into a PowerModels Dict... +[ Info: Parsing PSS(R)E Two-Terminal and VSC DC line data into a PowerModels Dict... +┌ Warning: This PSS(R)E parser currently doesn't support Storage data parsing... +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:985 +┌ Warning: This PSS(R)E parser currently doesn't support Switch data parsing... +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/pm_io/psse.jl:991 +[ Info: angmin and angmax values are 0, widening these values on branch 32 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 29 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 1 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 54 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 78 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 81 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 101 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 2 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 105 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 109 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 74 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 41 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 65 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 51 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 53 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 106 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 119 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 27 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 75 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 42 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 33 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 28 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 50 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 52 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 111 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 63 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 115 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 92 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 88 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 93 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 26 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 10 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 120 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 77 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 24 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 87 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 117 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 58 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 25 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 114 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 23 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 49 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 59 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 5 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 31 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 89 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 62 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 43 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 90 to +/- 60.0 deg. +[ Info: angmin and angmax values are 0, widening these values on branch 39 to +/- 60.0 deg. +[ Info: no active generators found at bus 309, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 320, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 119, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 303, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 310, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 104, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 308, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 319, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 212, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 312, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 317, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 324, updating to bus type from 2 to 1 +[ Info: no active generators found at bus 103, updating to bus type from 2 to 1 +[ Info: the voltage setpoint on generator 32 does not match the value at bus 118 +[ Info: the voltage setpoint on generator 29 does not match the value at bus 118 +[ Info: the voltage setpoint on generator 1 does not match the value at bus 101 +[ Info: the voltage setpoint on generator 54 does not match the value at bus 201 +[ Info: the voltage setpoint on generator 78 does not match the value at bus 221 +[ Info: the voltage setpoint on generator 81 does not match the value at bus 222 +[ Info: the voltage setpoint on generator 101 does not match the value at bus 307 +[ Info: the voltage setpoint on generator 2 does not match the value at bus 101 +[ Info: the voltage setpoint on generator 105 does not match the value at bus 310 +[ Info: the voltage setpoint on generator 109 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 74 does not match the value at bus 215 +[ Info: the voltage setpoint on generator 41 does not match the value at bus 121 +[ Info: the voltage setpoint on generator 132 does not match the value at bus 315 +[ Info: the voltage setpoint on generator 153 does not match the value at bus 322 +[ Info: the voltage setpoint on generator 65 does not match the value at bus 213 +[ Info: the voltage setpoint on generator 155 does not match the value at bus 322 +[ Info: the voltage setpoint on generator 51 does not match the value at bus 123 +[ Info: the voltage setpoint on generator 53 does not match the value at bus 123 +[ Info: the voltage setpoint on generator 106 does not match the value at bus 312 +[ Info: the voltage setpoint on generator 119 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 27 does not match the value at bus 115 +[ Info: the voltage setpoint on generator 75 does not match the value at bus 215 +[ Info: the voltage setpoint on generator 42 does not match the value at bus 122 +[ Info: the voltage setpoint on generator 33 does not match the value at bus 118 +[ Info: the voltage setpoint on generator 28 does not match the value at bus 116 +[ Info: the voltage setpoint on generator 50 does not match the value at bus 123 +[ Info: the voltage setpoint on generator 52 does not match the value at bus 123 +[ Info: the voltage setpoint on generator 159 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 111 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 63 does not match the value at bus 207 +[ Info: the voltage setpoint on generator 121 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 115 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 141 does not match the value at bus 319 +[ Info: the voltage setpoint on generator 92 does not match the value at bus 301 +[ Info: the voltage setpoint on generator 88 does not match the value at bus 223 +[ Info: the voltage setpoint on generator 93 does not match the value at bus 301 +[ Info: the voltage setpoint on generator 26 does not match the value at bus 115 +[ Info: the voltage setpoint on generator 10 does not match the value at bus 102 +[ Info: the voltage setpoint on generator 120 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 77 does not match the value at bus 218 +[ Info: the voltage setpoint on generator 24 does not match the value at bus 114 +[ Info: the voltage setpoint on generator 87 does not match the value at bus 223 +[ Info: the voltage setpoint on generator 117 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 58 does not match the value at bus 202 +[ Info: the voltage setpoint on generator 25 does not match the value at bus 115 +[ Info: the voltage setpoint on generator 114 does not match the value at bus 313 +[ Info: the voltage setpoint on generator 23 does not match the value at bus 113 +[ Info: the voltage setpoint on generator 160 does not match the value at bus 324 +[ Info: the voltage setpoint on generator 154 does not match the value at bus 322 +[ Info: the voltage setpoint on generator 149 does not match the value at bus 321 +┌ Info: Constructing System from Power Models +│ data["name"] = "rts-gmlc" +└ data["source_type"] = "pti" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 539 │ +└───────────────────┴─────────────┘ + +Static Components +┌─────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├─────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 73 │ false │ false │ +│ Arc │ 108 │ false │ false │ +│ Area │ 3 │ false │ false │ +│ FixedAdmittance │ 3 │ false │ false │ +│ Line │ 105 │ false │ false │ +│ LoadZone │ 21 │ false │ false │ +│ StandardLoad │ 51 │ false │ false │ +│ TapTransformer │ 15 │ false │ false │ +│ ThermalStandard │ 160 │ false │ false │ +└─────────────────┴───────┴────────────────────────┴───────────────┘

      This data set does not contain any time series data. For this, check the next tutorial.

      diff --git a/v3.3.0/tutorials/parse_tabular_data/index.html b/v3.3.0/tutorials/parse_tabular_data/index.html new file mode 100644 index 0000000000..74a54d58c7 --- /dev/null +++ b/v3.3.0/tutorials/parse_tabular_data/index.html @@ -0,0 +1,233 @@ + +Parsing Tabular Data · PowerSystems.jl

      Parsing Tabular Data

      Originally Contributed by: Clayton Barrows

      Introduction

      An example of how to parse tabular files (CSV) files similar to the format established in the RTS-GMLC and create a System using PowerSystems.jl

      Dependencies

      julia> using PowerSystems
      julia> using TimeSeries
      julia> using Dates

      Fetch Data

      PowerSystems.jl links to some test data that is suitable for this example. Let's get the test data using Artifacts. You can find the repository of the data of the GMLC system here:


      julia> # include download methods"/home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0"
      julia> RTS_GMLC_DIR = joinpath(DATA_DIR, "RTS_GMLC")"/home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0/RTS_GMLC"

      The tabular data format relies on a folder containing *.csv files and a user_descriptors.yaml file

      First, we'll read the tabular data

      julia> rawsys = PowerSystems.PowerSystemTableData(
      +           RTS_GMLC_DIR,
      +           100.0,
      +           joinpath(RTS_GMLC_DIR, "user_descriptors.yaml"),
      +           timeseries_metadata_file = joinpath(RTS_GMLC_DIR, "timeseries_pointers.json"),
      +           generator_mapping_file = joinpath(RTS_GMLC_DIR, "generator_mapping_multi_start.yaml"),
      +       )[ Info: Parsing csv files in Reserves ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Flex_Down.csv ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Flex_Up.csv ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Reg_Down.csv ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Reg_Up.csv ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Spin_Up_R1.csv ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Spin_Up_R2.csv ...
      +[ Info: Parsing csv data in DAY_AHEAD_regional_Spin_Up_R3.csv ...
      +[ Info: Parsing csv data in REAL_TIME_regional_Reg_Down.csv ...
      +[ Info: Parsing csv data in REAL_TIME_regional_Reg_Up.csv ...
      +[ Info: Parsing csv data in REAL_TIME_regional_Spin_Up_R1.csv ...
      +[ Info: Parsing csv data in REAL_TIME_regional_Spin_Up_R2.csv ...
      +[ Info: Parsing csv data in REAL_TIME_regional_Spin_Up_R3.csv ...
      +[ Info: Successfully parsed Reserves
      +[ Info: Parsing csv data in branch.csv ...
      +[ Info: Successfully parsed branch.csv
      +[ Info: Parsing csv data in bus.csv ...
      +[ Info: Successfully parsed bus.csv
      +[ Info: Parsing csv data in dc_branch.csv ...
      +[ Info: Successfully parsed dc_branch.csv
      +[ Info: Parsing csv data in gen.csv ...
      +[ Info: Successfully parsed gen.csv
      +[ Info: Parsing csv data in reserves.csv ...
      +[ Info: Successfully parsed reserves.csv
      +[ Info: Parsing csv data in simulation_objects.csv ...
      +[ Info: Successfully parsed simulation_objects.csv
      +[ Info: Parsing csv data in storage.csv ...
      +[ Info: Successfully parsed storage.csv
      +[ Info: Parsing csv data in timeseries_pointers.csv ...
      +[ Info: Successfully parsed timeseries_pointers.csv
      +PowerSystemTableData:
      +  directory:  /home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0/RTS_GMLC
      +  timeseries_metadata_file:  /home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0/RTS_GMLC/timeseries_pointers.json
      +  base_power:  100.0
      +  PowerSystems.InputCategoryModule.InputCategory.DC_BRANCH = 3:  1×60 DataFrame
      +  PowerSystems.InputCategoryModule.InputCategory.STORAGE = 8:  22×8 DataFrame
      +  PowerSystems.InputCategoryModule.InputCategory.RESERVE = 6:  7×7 DataFrame
      +  PowerSystems.InputCategoryModule.InputCategory.BRANCH = 1:  120×14 DataFrame
      +  PowerSystems.InputCategoryModule.InputCategory.BUS = 2:  73×15 DataFrame
      +  PowerSystems.InputCategoryModule.InputCategory.GENERATOR = 4:  158×58 DataFrame

      Create a System

      Next, we'll create a System from the rawsys data. Since a System is predicated on a time series resolution and the rawsys data includes both 5-minute and 1-hour resolution time series, we also need to specify which time series we want to include in the System. The time_series_resolution kwarg filters to only include time series with a matching resolution.

      julia> sys = System(rawsys; time_series_resolution = Dates.Hour(1));[ Info: Unit System changed to UnitSystem.DEVICE_BASE = 1
      +┌ Warning: Missing PowerSystems.InputCategoryModule.InputCategory.LOAD = 5 data.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:212
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: Missing PowerSystems.InputCategoryModule.InputCategory.LOAD = 5 data.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:212
      +[ Info: Adding contributing generators for Spin_Up_R1 by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +[ Info: Adding contributing generators for Spin_Up_R2 by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +[ Info: Adding contributing generators for Spin_Up_R3 by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +[ Info: Adding contributing generators for Flex_Up by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +[ Info: Adding contributing generators for Flex_Down by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +[ Info: Adding contributing generators for Reg_Up by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +[ Info: Adding contributing generators for Reg_Down by category
      +┌ Warning: User-defined column name Startup Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Shutdown Ramp Rate MW/min is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Status at Start is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Time at Status is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Cold is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Warm is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Start Cost Hot is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      +┌ Warning: User-defined column name Must Run is not in dataframe.
      +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/power_system_table_data.jl:1413
      julia> horizon = 24;
      julia> interval = Dates.Hour(24);
      julia> transform_single_time_series!(sys, horizon, interval);┌ Warning: There is only one forecast window. Setting interval = 0 seconds +└ @ InfrastructureSystems ~/.julia/packages/InfrastructureSystems/9btGb/src/component.jl:779
      julia> sysSystem +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ DEVICE_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 525 │ +└───────────────────┴─────────────┘ + +Static Components +┌─────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├─────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 73 │ false │ false │ +│ Arc │ 109 │ false │ false │ +│ Area │ 3 │ false │ false │ +│ GenericBattery │ 1 │ false │ false │ +│ HydroDispatch │ 20 │ true │ true │ +│ Line │ 105 │ false │ false │ +│ LoadZone │ 3 │ true │ true │ +│ PowerLoad │ 51 │ true │ true │ +│ RenewableDispatch │ 30 │ true │ true │ +│ RenewableFix │ 31 │ true │ true │ +│ TapTransformer │ 15 │ false │ false │ +│ ThermalMultiStart │ 76 │ false │ false │ +│ TwoTerminalHVDCLine │ 1 │ false │ false │ +│ VariableReserve │ 5 │ true │ true │ +│ VariableReserve │ 2 │ true │ true │ +└─────────────────────┴───────┴────────────────────────┴───────────────┘ + +Time Series Summary +┌──────────────────────────────────┬─────────────────────┐ +│ Property │ Value │ +├──────────────────────────────────┼─────────────────────┤ +│ Components with time series data │ 142 │ +│ Total StaticTimeSeries │ 182 │ +│ Total Forecasts │ 182 │ +│ Resolution │ 60 minutes │ +│ First initial time │ 2020-01-01T00:00:00 │ +│ Last initial time │ 2020-01-01T00:00:00 │ +│ Horizon │ 24 │ +│ Interval │ 0 minutes │ +│ Forecast window count │ 1 │ +└──────────────────────────────────┴─────────────────────┘
      diff --git a/v3.3.0/tutorials/powersystembuilder/index.html b/v3.3.0/tutorials/powersystembuilder/index.html new file mode 100644 index 0000000000..f545bfedd2 --- /dev/null +++ b/v3.3.0/tutorials/powersystembuilder/index.html @@ -0,0 +1,265 @@ + +PowerSystemCaseBuilder · PowerSystems.jl

      PowerSystemCaseBuilder

      Originally Contributed by: Clayton Barrows

      Introduction

      PowerSystemCaseBuilder.jl provides a utility to manage a library of Systems. The package has utilities to list the available system data and to create instances of each system. By keeping track of which systems have been constructed locally, it makes the re-instantiation of systems efficient by utilizing the serialization features and avoiding the parsing process for systems that have been previously constructed.

      Dependencies

      julia> using PowerSystemCaseBuilder

      List all systems in library

      julia> show_systems()
      +Category: PowerSystemCaseBuilder.MatpowerTestSystems
      +
      +┌──────────────────────────────┬───────────────────────────────────┐
      +│ Name                         │ Descriptor                        │
      +├──────────────────────────────┼───────────────────────────────────┤
      +│ matpower_ACTIVSg10k_sys      │ ACTIVSg10k Test system            │
      +│ matpower_ACTIVSg2000_sys     │ MATPOWER ACTIVSg2000 Test system  │
      +│ matpower_RTS_GMLC_sys        │ Matpower RTS-GMLC Test system     │
      +│ matpower_case14_sys          │ Matpower Test system              │
      +│ matpower_case24_sys          │ Matpower Test system              │
      +│ matpower_case2_sys           │ Matpower Test system              │
      +│ matpower_case30_sys          │ Matpower Test system              │
      +│ matpower_case3_tnep_sys      │ Matpower Test system              │
      +│ matpower_case5_asym_sys      │ Matpower Test system              │
      +│ matpower_case5_dc_sys        │ Matpower Test system              │
      +│ matpower_case5_gap_sys       │ Matpower Test system              │
      +│ matpower_case5_pwlc_sys      │ Matpower Test system              │
      +│ matpower_case5_re_sys        │ Matpower Test system              │
      +│ matpower_case5_re_uc_pwl_sys │ Matpower Test system              │
      +│ matpower_case5_re_uc_sys     │ Matpower Test system              │
      +│ matpower_case5_strg_sys      │ Matpower Test system              │
      +│ matpower_case5_sys           │ Matpower Test system              │
      +│ matpower_case5_tnep_sys      │ Matpower Test system              │
      +│ matpower_case6_sys           │ Matpower Test system              │
      +│ matpower_case7_tplgy_sys     │ Matpower Test system              │
      +│ matpower_frankenstein_00_sys │ Matpower Frankenstein Test system │
      +└──────────────────────────────┴───────────────────────────────────┘
      +
      +Category: PowerSystemCaseBuilder.PSIDSystems
      +
      +┌───────────────────────────────────────┬──────────────────────────────────────────────────────────┐
      +│ Name                                  │ Descriptor                                               │
      +├───────────────────────────────────────┼──────────────────────────────────────────────────────────┤
      +│ 14 Bus Base Case                      │ 14 Bus Dynamic Test System Case                          │
      +│ 2 Bus Load Tutorial                   │ 2 Bus Base System for load tutorials                     │
      +│ 2 Bus Load Tutorial Droop             │ 2 Bus Base System for load tutorials with Droop Inverter │
      +│ 2 Bus Load Tutorial GENROU            │ 2 Bus Base System for load tutorials with GENROU         │
      +│ 3 Bus Inverter Base                   │ 3 Bus Base System for tutorials                          │
      +│ OMIB System                           │ OMIB case with 2 state machine for examples              │
      +│ Three Bus Dynamic data Example System │ Three Bus case for examples                              │
      +│ WECC 240 Bus                          │ WECC 240 Bus case dynamic data with some modifications   │
      +│ psid_11bus_andes                      │ PSID 11-bus Kundur System compared against Andes         │
      +│ psid_4bus_multigen                    │ PSID Multiple Generators in Single-Bus Test Case         │
      +└───────────────────────────────────────┴──────────────────────────────────────────────────────────┘
      +
      +Category: PowerSystemCaseBuilder.PSIDTestSystems
      +
      +┌──────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────────┐
      +│ Name                                     │ Descriptor                                                                           │
      +├──────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────────┤
      +│ psid_psse_test_avr                       │ PSID AVR Test Cases for PSSE Validation                                              │
      +│ psid_psse_test_constantI_load            │ PSID Constant Current Load Test Case                                                 │
      +│ psid_psse_test_constantP_load            │ PSID Constant Power Load Test Case                                                   │
      +│ psid_psse_test_exp_load                  │ PSID Exponential Load Test Case                                                      │
      +│ psid_psse_test_gen                       │ PSID GEN Test Cases for PSSE Validation                                              │
      +│ psid_psse_test_pss                       │ PSID PSS Test Cases for PSSE Validation                                              │
      +│ psid_psse_test_tg                        │ PSID TG Test Cases for PSSE Validation                                               │
      +│ psid_test_3rd_indmotor                   │ PSID System with 3rd-order Induction Motor Test Case                                 │
      +│ psid_test_5th_indmotor                   │ PSID System with 5th-order Induction Motor Test Case                                 │
      +│ psid_test_droop_inverter                 │ PSID Two Bus Droop GFM Inverter Test Case                                            │
      +│ psid_test_gfoll_inverter                 │ PSID Two Bus Grid Following Inverter Test Case                                       │
      +│ psid_test_ieee_9bus                      │ PSID IEEE 9-bus system with Anderson-Fouad Machine Test Case                         │
      +│ psid_test_indmotor                       │ PSID System without Induction Motor Test Case                                        │
      +│ psid_test_omib                           │ PSID OMIB Test Case                                                                  │
      +│ psid_test_pvs                            │ PSID OMIB with Periodic Variable Source Test Case                                    │
      +│ psid_test_threebus_5shaft                │ PSID Three Bus 5-shaft Test Case                                                     │
      +│ psid_test_threebus_anderson              │ PSID Three Bus Anderson-Fouad Test Case                                              │
      +│ psid_test_threebus_genrou_avr            │ PSID Three Bus GENROU with PSAT AVRs Test Case                                       │
      +│ psid_test_threebus_machine_vsm           │ PSID Three Bus One-d-One-q Machine against VSM Inverter Test Case                    │
      +│ psid_test_threebus_machine_vsm_dynlines  │ PSID Three Bus One-d-One-q Machine against VSM Inverter Test Case with Dynamic Lines │
      +│ psid_test_threebus_marconato             │ PSID Three Bus Simple Marconato Test Case                                            │
      +│ psid_test_threebus_multimachine          │ PSID Three Bus Multi-Machine Test Case                                               │
      +│ psid_test_threebus_multimachine_dynlines │ PSID Three Bus Multi-Machine with Dynamic Lines Test Case                            │
      +│ psid_test_threebus_oneDoneQ              │ PSID Three Bus One-d-One-q Test Case                                                 │
      +│ psid_test_threebus_psat_avrs             │ PSID Three Bus TG Type I and AVR Type II Test Case                                   │
      +│ psid_test_threebus_simple_anderson       │ PSID Three Bus Simple Anderson-Fouad Test Case                                       │
      +│ psid_test_threebus_simple_marconato      │ PSID Three Bus Simple Marconato Test Case                                            │
      +│ psid_test_threebus_vsm_reference         │ PSID Three Bus Inverter Reference Test Case                                          │
      +│ psid_test_vsm_inverter                   │ PSID Two Bus D'Arco VSM Inverter Test Case                                           │
      +└──────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────┘
      +
      +Category: PowerSystemCaseBuilder.PSISystems
      +
      +┌─────────────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
      +│ Name                                │ Descriptor                                                                                                                            │
      +├─────────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
      +│ 2Area 5 Bus System                  │ PSI test system with two areas connected with an HVDC Line                                                                            │
      +│ 5_bus_hydro_ed_sys                  │ 5-Bus hydro economic dispatch data                                                                                                    │
      +│ 5_bus_hydro_ed_sys_with_targets     │ 5-Bus hydro economic dispatch data with energy targets                                                                                │
      +│ 5_bus_hydro_uc_sys                  │ 5-Bus hydro unit commitment data                                                                                                      │
      +│ 5_bus_hydro_uc_sys_with_targets     │ 5-Bus hydro unit commitment data with energy targets                                                                                  │
      +│ 5_bus_hydro_wk_sys                  │ 5-Bus hydro system for weekly dispatch                                                                                                │
      +│ 5_bus_hydro_wk_sys_with_targets     │ 5-Bus hydro system for weekly dispatch with energy targets                                                                            │
      +│ 5_bus_matpower_AGC                  │ matpower 5-Bus system with AGC time series                                                                                            │
      +│ 5_bus_matpower_DA                   │ matpower 5-Bus system with DA time series                                                                                             │
      +│ 5_bus_matpower_RT                   │ matpower 5-Bus system with RT time series                                                                                             │
      +│ AC_TWO_RTO_RTS_1Hr_sys              │ Two Area RTO System Connected via AC with 1-hour resolution                                                                           │
      +│ AC_TWO_RTO_RTS_5min_sys             │ Two Area RTO System Connected via AC with 5-min resolution                                                                            │
      +│ HVDC_TWO_RTO_RTS_1Hr_sys            │ Two Area RTO System Connected via HVDC with 1-hour resolution                                                                         │
      +│ HVDC_TWO_RTO_RTS_5min_sys           │ Two Area RTO System Connected via HVDC with 5-min resolution                                                                          │
      +│ RTS_GMLC_DA_sys                     │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
      +│ RTS_GMLC_DA_sys_noForecast          │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
      +│ RTS_GMLC_RT_sys                     │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
      +│ RTS_GMLC_RT_sys_noForecast          │ RTS-GMLC Full system from git repo for day-ahead simulations                                                                          │
      +│ c_sys5_pjm                          │ 5-Bus system                                                                                                                          │
      +│ c_sys5_pjm_rt                       │ 5-Bus system                                                                                                                          │
      +│ modified_RTS_GMLC_DA_sys            │ Modified RTS-GMLC Full system for day-ahead simulations\n            with modifications to reserve definitions to improve feasibility │
      +│ modified_RTS_GMLC_DA_sys_noForecast │ Modified RTS-GMLC Full system for day-ahead simulations\n            with modifications to reserve definitions to improve feasibility │
      +│ modified_RTS_GMLC_RT_sys            │ Modified RTS-GMLC Full system for real-time simulations\n            with modifications to reserve definitions to improve feasibility │
      +│ modified_RTS_GMLC_RT_sys_noForecast │ Modified RTS-GMLC Full system for real-time simulations\n            with modifications to reserve definitions to improve feasibility │
      +│ modified_RTS_GMLC_realization_sys   │ Modified RTS-GMLC Full system for real-time simulations\n            with modifications to reserve definitions to improve feasibility │
      +│ modified_tamu_ercot_da_system       │ Modified tamu ercot day ahead system                                                                                                  │
      +│ sys10_pjm_ac_dc                     │ 10-bus system (duplicate 5-bus PJM) with 4-DC bus system                                                                              │
      +└─────────────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
      +
      +Category: PowerSystemCaseBuilder.PSITestSystems
      +
      +┌───────────────────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
      +│ Name                          │ Descriptor                                                                                                        │
      +├───────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
      +│ batt_test_case_b_sys          │ test system for Storage Energy Target formulation(case-b)                                                         │
      +│ batt_test_case_c_sys          │ test system for Storage Energy Target formulation(case-c)                                                         │
      +│ batt_test_case_d_sys          │ test system for Storage Energy Target formulation(case-d)                                                         │
      +│ batt_test_case_e_sys          │ test system for Storage Energy Target formulation(case-e)                                                         │
      +│ batt_test_case_f_sys          │ test system for Storage Energy Target formulation(case-f)                                                         │
      +│ c_duration_test               │ 1 Bus for duration testing                                                                                        │
      +│ c_linear_pwl_test             │ 1 Bus lineal PWL linear testing                                                                                   │
      +│ c_market_bid_cost             │ 1 bus system with MarketBidCost Model                                                                             │
      +│ c_ramp_test                   │ 1-bus for ramp testing                                                                                            │
      +│ c_sos_pwl_test                │ 1 Bus lineal PWL sos testing                                                                                      │
      +│ c_sys14                       │ 14-bus system                                                                                                     │
      +│ c_sys14_dc                    │ 14-bus system with DC line                                                                                        │
      +│ c_sys5                        │ 5-Bus system                                                                                                      │
      +│ c_sys5_all_components         │ 5-Bus system with 5-Bus system with Renewable Energy, Hydro Energy Reservoir, and both StandardLoad and PowerLoad │
      +│ c_sys5_bat                    │ 5-Bus system with Storage Device                                                                                  │
      +│ c_sys5_bat_ems                │ 5-Bus system with Storage Device with EMS                                                                         │
      +│ c_sys5_dc                     │ Systems with HVDC data in the branches                                                                            │
      +│ c_sys5_ed                     │ 5-Bus System for Economic Dispatch Simulations                                                                    │
      +│ c_sys5_hy                     │ 5-Bus system with HydroDispatch                                                                                   │
      +│ c_sys5_hy_ed                  │ 5-Bus system with Hydro-Power for Economic Dispatch Simulations                                                   │
      +│ c_sys5_hy_ems_ed              │ 5-Bus system with Hydro-Power for Economic Dispatch Simulations                                                   │
      +│ c_sys5_hy_ems_uc              │ 5-Bus system with Hydro-Power for Unit Commitment Simulations                                                     │
      +│ c_sys5_hy_uc                  │ 5-Bus system with Hydro-Power for Unit Commitment Simulations                                                     │
      +│ c_sys5_hybrid                 │ 5-Bus system with Hybrid devices                                                                                  │
      +│ c_sys5_hybrid_ed              │ 5-Bus system with Hybrid devices and thermal devices for ED.                                                      │
      +│ c_sys5_hybrid_uc              │ 5-Bus system with Hybrid devices and thermal UC devices                                                           │
      +│ c_sys5_hyd                    │ 5-Bus system with Hydro Energy Reservoir                                                                          │
      +│ c_sys5_hyd_ems                │ 5-Bus system with Hydro Energy Reservoir                                                                          │
      +│ c_sys5_il                     │ System with Interruptible Load                                                                                    │
      +│ c_sys5_ml                     │ Test System with Monitored Line                                                                                   │
      +│ c_sys5_pglib                  │ 5-Bus with ThermalMultiStart                                                                                      │
      +│ c_sys5_pglib_sim              │ 5-Bus with ThermalMultiStart for simulation                                                                       │
      +│ c_sys5_phes_ed                │ 5-Bus system with Hydro Pumped Energy Storage for Economic Dispatch Simulations                                   │
      +│ c_sys5_pwl_ed                 │ 5-Bus with pwl cost function                                                                                      │
      +│ c_sys5_pwl_ed_nonconvex       │ 5-Bus with SOS cost function for Economic Dispatch Simulations                                                    │
      +│ c_sys5_pwl_uc                 │ 5-Bus with SOS cost function for Unit Commitment Simulations                                                      │
      +│ c_sys5_radial                 │ 5-Bus with a radial branches                                                                                      │
      +│ c_sys5_re                     │ 5-Bus system with Renewable Energy                                                                                │
      +│ c_sys5_re_only                │ 5-Bus system with only Renewable Energy                                                                           │
      +│ c_sys5_reg                    │ 5-Bus with regulation devices and AGC                                                                             │
      +│ c_sys5_uc                     │ 5-Bus system for Unit Commitment Simulations                                                                      │
      +│ c_sys5_uc_non_spin            │ 5-Bus system for Unit Commitment with Non-Spinning Reserve Simulations                                            │
      +│ c_sys5_uc_re                  │ 5-Bus system for Unit Commitment Simulations with Renewable Units                                                 │
      +│ hydro_test_case_b_sys         │ test system for HydroGen Energy Target formulation(case-b)                                                        │
      +│ hydro_test_case_c_sys         │ test system for HydroGen Energy Target formulation(case-c)                                                        │
      +│ hydro_test_case_d_sys         │ test system for HydroGen Energy Target formulation(case-d)                                                        │
      +│ hydro_test_case_e_sys         │ test system for HydroGen Energy Target formulation(case-e)                                                        │
      +│ hydro_test_case_f_sys         │ test system for HydroGen  Energy Target formulation(case-f)                                                       │
      +│ test_RTS_GMLC_sys             │ RTS-GMLC test system with day-ahead forecast                                                                      │
      +│ test_RTS_GMLC_sys_with_hybrid │ RTS-GMLC test system with day-ahead forecast and HybridSystem                                                     │
      +└───────────────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
      +
      +Category: PowerSystemCaseBuilder.PSSEParsingTestSystems
      +
      +┌────────────────────────────────┬───────────────────────────────┐
      +│ Name                           │ Descriptor                    │
      +├────────────────────────────────┼───────────────────────────────┤
      +│ PSSE 30 Test System            │ PSSE 30 Test system           │
      +│ psse_ACTIVSg2000_sys           │ PSSE ACTIVSg2000 Test system  │
      +│ psse_RTS_GMLC_sys              │ PSSE .raw RTS-GMLC system     │
      +│ pti_case14_sys                 │ PSSE 14-bus Test system       │
      +│ pti_case24_sys                 │ PSSE 24-bus Test system       │
      +│ pti_case30_sys                 │ PSSE 30-bus Test system       │
      +│ pti_case3_sys                  │ PSSE 3-bus Test system        │
      +│ pti_case5_alc_sys              │ PSSE 5-Bus alc Test system    │
      +│ pti_case5_sys                  │ PSSE 5-Bus Test system        │
      +│ pti_case73_sys                 │ PSSE 73-bus Test system       │
      +│ pti_case7_tplgy_sys            │ PSSE 7-bus Test system        │
      +│ pti_frankenstein_00_2_sys      │ PSSE frankenstein Test system │
      +│ pti_frankenstein_00_sys        │ PSSE frankenstein Test system │
      +│ pti_frankenstein_20_sys        │ PSSE frankenstein Test system │
      +│ pti_frankenstein_70_sys        │ PSSE frankenstein Test system │
      +│ pti_parser_test_a_sys          │ PSSE Test system              │
      +│ pti_three_winding_mag_test_sys │ PSSE Test system              │
      +│ pti_three_winding_test_2_sys   │ PSSE Test system              │
      +│ pti_three_winding_test_sys     │ PSSE Test system              │
      +│ pti_two_terminal_hvdc_test_sys │ PSSE Test system              │
      +│ pti_two_winding_mag_test_sys   │ PSSE Test system              │
      +│ pti_vsc_hvdc_test_sys          │ PSSE Test system              │
      +└────────────────────────────────┴───────────────────────────────┘
      +
      +Category: PowerSystemCaseBuilder.PSYTestSystems
      +
      +┌─────────────────────────────────┬─────────────────────────────────────────────────────────────────┐
      +│ Name                            │ Descriptor                                                      │
      +├─────────────────────────────────┼─────────────────────────────────────────────────────────────────┤
      +│ dynamic_inverter_sys            │ PSY test dynamic inverter system                                │
      +│ psse_240_parsing_sys            │ Test parsing of PSSE 240 Bus Case system                        │
      +│ psse_3bus_SEXS_sys              │ Test parsing of PSSE 3-bus Test system with SEXS                │
      +│ psse_3bus_gen_cls_sys           │ Test parsing of PSSE 3-bus Test system with CLS                 │
      +│ psse_3bus_no_cls_sys            │ Test parsing of PSSE 3-bus Test system without CLS              │
      +│ psse_Benchmark_4ger_33_2015_sys │ Test parsing of PSSE Benchmark system                           │
      +│ psse_OMIB_sys                   │ Test parsing of PSSE OMIB Test system                           │
      +│ psse_renewable_parsing_1        │ Test parsing PSSE 3-bus Test system with REPCA, REECB and REGCA │
      +│ tamu_ACTIVSg2000_sys            │ TAMU ACTIVSg2000 Test system                                    │
      +└─────────────────────────────────┴─────────────────────────────────────────────────────────────────┘

      Systems can be listed by category

      The available categories can be displayed with:

      julia> show_categories()PowerSystemCaseBuilder.MatpowerTestSystems
      +PowerSystemCaseBuilder.PSIDSystems
      +PowerSystemCaseBuilder.PSIDTestSystems
      +PowerSystemCaseBuilder.PSISystems
      +PowerSystemCaseBuilder.PSITestSystems
      +PowerSystemCaseBuilder.PSSEParsingTestSystems
      +PowerSystemCaseBuilder.PSYTestSystems

      Create a System

      The first time this is run, it will parse csv data. Subsequent executions will rely on serialized data and will execute much faster since the employ deserialization

      julia> sys = build_system(PSITestSystems, "c_sys5_uc")┌ Info: Building new system c_sys5_uc from raw data
      +└   sys_descriptor.raw_data = "/home/runner/.julia/artifacts/2b7013812a985ce5884696ce276ca17b2719a57a/PowerSystemsTestData-2.0/psy_data/data_5bus_pu.jl"
      +[ Info: Serialized time series data to /home/runner/.julia/packages/PowerSystemCaseBuilder/8GyJc/data/serialized_system/ForecastOnly/c_sys5_uc_time_series_storage.h5.
      +[ Info: Serialized System to /home/runner/.julia/packages/PowerSystemCaseBuilder/8GyJc/data/serialized_system/ForecastOnly/c_sys5_uc.json
      +[ Info: Serialized System metadata to /home/runner/.julia/packages/PowerSystemCaseBuilder/8GyJc/data/serialized_system/ForecastOnly/c_sys5_uc_metadata.json
      +System
      +┌───────────────────┬─────────────┐
      +│ Property          │ Value       │
      +├───────────────────┼─────────────┤
      +│ Name              │             │
      +│ Description       │             │
      +│ System Units Base │ SYSTEM_BASE │
      +│ Base Power        │ 100.0       │
      +│ Base Frequency    │ 60.0        │
      +│ Num Components    │ 25          │
      +└───────────────────┴─────────────┘
      +
      +Static Components
      +┌─────────────────┬───────┬────────────────────────┬───────────────┐
      +│ Type            │ Count │ Has Static Time Series │ Has Forecasts │
      +├─────────────────┼───────┼────────────────────────┼───────────────┤
      +│ ACBus           │ 5     │ false                  │ false         │
      +│ Arc             │ 6     │ false                  │ false         │
      +│ Line            │ 6     │ false                  │ false         │
      +│ PowerLoad       │ 3     │ false                  │ true          │
      +│ ThermalStandard │ 5     │ false                  │ false         │
      +└─────────────────┴───────┴────────────────────────┴───────────────┘
      +
      +Time Series Summary
      +┌──────────────────────────────────┬─────────────────────┐
      +│ Property                         │ Value               │
      +├──────────────────────────────────┼─────────────────────┤
      +│ Components with time series data │ 3                   │
      +│ Total StaticTimeSeries           │ 0                   │
      +│ Total Forecasts                  │ 3                   │
      +│ Resolution                       │ 60 minutes          │
      +│ First initial time               │ 2024-01-01T00:00:00 │
      +│ Last initial time                │ 2024-01-02T00:00:00 │
      +│ Horizon                          │ 24                  │
      +│ Interval                         │ 1440 minutes        │
      +│ Forecast window count            │ 2                   │
      +└──────────────────────────────────┴─────────────────────┘
      diff --git a/v3.3.0/tutorials/serialize_data/index.html b/v3.3.0/tutorials/serialize_data/index.html new file mode 100644 index 0000000000..562e2e7d01 --- /dev/null +++ b/v3.3.0/tutorials/serialize_data/index.html @@ -0,0 +1,82 @@ + +Serialize Data · PowerSystems.jl

      Serializing PowerSystem Data

      Originally Contributed by: Clayton Barrows

      Introduction

      PowerSystems.jl supports serializing/deserializing data with JSON. This provides an example of how to write and read a System to/from disk.

      Dependencies

      Let's use a dataset from the tabular data parsing tutorial:

      julia> using PowerSystems
      julia> file_dir = joinpath(pkgdir(PowerSystems), "docs", "src", "tutorials", "tutorials_data"); #hide
      julia> sys = System(joinpath(file_dir, "case5_re.m"))┌ Error: Matlab parser skipping line number 85 consisting of: +│ }; +└ @ PowerSystems ~/work/PowerSystems.jl/PowerSystems.jl/src/parsers/im_io/matlab.jl:64 +[ Info: Correcting vm in bus 1 to 1.07762 to match generator set-point +[ Info: Correcting vm in bus 3 to 1.1 to match generator set-point +[ Info: Correcting vm in bus 4 to 1.06414 to match generator set-point +[ Info: Correcting vm in bus 10 to 1.06907 to match generator set-point +[ Info: extending matpower format with data: areas 1x3 +[ Info: extending matpower format with data: gen_name 7x4 +[ Info: extending matpower format by appending matrix "gen_name" in to "gen" +[ Info: reversing the orientation of branch 6 (4, 3) to be consistent with other parallel branches +[ Info: removing 1 cost terms from generator 4: [4000.0, 0.0] +[ Info: removing 1 cost terms from generator 1: [1400.0, 0.0] +[ Info: removing 1 cost terms from generator 5: [1000.0, 0.0] +[ Info: removing 1 cost terms from generator 2: [1500.0, 0.0] +[ Info: removing 3 cost terms from generator 6: Float64[] +[ Info: removing 3 cost terms from generator 7: Float64[] +[ Info: removing 1 cost terms from generator 3: [3000.0, 0.0] +┌ Info: Constructing System from Power Models +│ data["name"] = "nesta_case5_pjm" +└ data["source_type"] = "matpower" +[ Info: Reading bus data +[ Info: Reading Load data in PowerModels dict to populate System ... +[ Info: Reading LoadZones data in PowerModels dict to populate System ... +[ Info: Reading generator data +[ Info: Reading branch data +[ Info: Reading branch data +[ Info: Reading DC Line data +[ Info: Reading storage data +System +┌───────────────────┬─────────────┐ +│ Property │ Value │ +├───────────────────┼─────────────┤ +│ Name │ │ +│ Description │ │ +│ System Units Base │ SYSTEM_BASE │ +│ Base Power │ 100.0 │ +│ Base Frequency │ 60.0 │ +│ Num Components │ 30 │ +└───────────────────┴─────────────┘ + +Static Components +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐ +│ Type │ Count │ Has Static Time Series │ Has Forecasts │ +├──────────────────────────┼───────┼────────────────────────┼───────────────┤ +│ ACBus │ 5 │ false │ false │ +│ Arc │ 6 │ false │ false │ +│ Area │ 1 │ false │ false │ +│ Line │ 5 │ false │ false │ +│ LoadZone │ 1 │ false │ false │ +│ PhaseShiftingTransformer │ 2 │ false │ false │ +│ PowerLoad │ 3 │ false │ false │ +│ RenewableDispatch │ 2 │ false │ false │ +│ ThermalStandard │ 5 │ false │ false │ +└──────────────────────────┴───────┴────────────────────────┴───────────────┘

      Write data to a temporary directory

      julia> folder = mktempdir();
      julia> path = joinpath(folder, "system.json")"/tmp/jl_XHqnFe/system.json"
      julia> println("Serializing to $path")Serializing to /tmp/jl_XHqnFe/system.json
      julia> to_json(sys, path)[ Info: Serialized System to /tmp/jl_XHqnFe/system.json +[ Info: Serialized System metadata to /tmp/jl_XHqnFe/system_metadata.json

      Read the JSON file and create a new System

      julia> sys2 = System(path)System
      +┌───────────────────┬─────────────┐
      +│ Property          │ Value       │
      +├───────────────────┼─────────────┤
      +│ Name              │             │
      +│ Description       │             │
      +│ System Units Base │ SYSTEM_BASE │
      +│ Base Power        │ 100.0       │
      +│ Base Frequency    │ 60.0        │
      +│ Num Components    │ 30          │
      +└───────────────────┴─────────────┘
      +
      +Static Components
      +┌──────────────────────────┬───────┬────────────────────────┬───────────────┐
      +│ Type                     │ Count │ Has Static Time Series │ Has Forecasts │
      +├──────────────────────────┼───────┼────────────────────────┼───────────────┤
      +│ ACBus                    │ 5     │ false                  │ false         │
      +│ Arc                      │ 6     │ false                  │ false         │
      +│ Area                     │ 1     │ false                  │ false         │
      +│ Line                     │ 5     │ false                  │ false         │
      +│ LoadZone                 │ 1     │ false                  │ false         │
      +│ PhaseShiftingTransformer │ 2     │ false                  │ false         │
      +│ PowerLoad                │ 3     │ false                  │ false         │
      +│ RenewableDispatch        │ 2     │ false                  │ false         │
      +│ ThermalStandard          │ 5     │ false                  │ false         │
      +└──────────────────────────┴───────┴────────────────────────┴───────────────┘
      diff --git a/v3.3.0/tutorials/tutorials_data/OMIB.raw b/v3.3.0/tutorials/tutorials_data/OMIB.raw new file mode 100644 index 0000000000..ff7d8bdfff --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/OMIB.raw @@ -0,0 +1,27 @@ +0, 100, 33, 0, 0, 60 / 24-Apr-2020 17:05:49 - MATPOWER 7.0.1-dev + + + 101, 'BUS 1 ', 230, 3, 1, 1, 1, 1.05, 0, 1.06, 0.94, 1.06, 0.94 + 102, 'BUS 2 ', 230, 2, 1, 1, 1, 1.04, 0, 1.06, 0.94, 1.06, 0.94 +0 / END OF BUS DATA, BEGIN LOAD DATA +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 102, 1, 50, 0, 100, -100, 1.00, 0, 100, 0, 1, 0, 0, 1, 1, 100, 100, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 102, 1, 0.00, 0.05, 0.000, 100, 100, 100, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 +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 VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA +0 / END OF INDUCTION MACHINE DATA +Q \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/RTS-GMLC.RAW b/v3.3.0/tutorials/tutorials_data/RTS-GMLC.RAW new file mode 100644 index 0000000000..a5834841a1 --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/RTS-GMLC.RAW @@ -0,0 +1,500 @@ + 0, 100.00, 33, 0, 0, 60.00 / November 07, 2017 19:41:38; Simulator Version 19; BuildDate 2017_9_5 + + + 101,'ABEL ', 138.0000,2, 1, 11, 1,1.04777002, -7.741520, 1.10000, 0.90000, 1.10000, 0.90000 + 102,'ADAMS ', 138.0000,2, 1, 12, 1,1.04782999, -7.817840, 1.10000, 0.90000, 1.10000, 0.90000 + 103,'ADLER ', 138.0000,2, 1, 11, 1,1.01084995, -7.210900, 1.10000, 0.90000, 1.10000, 0.90000 + 104,'AGRICOLA ', 138.0000,2, 1, 11, 1,1.01765001, -10.566140, 1.10000, 0.90000, 1.10000, 0.90000 + 105,'AIKEN ', 138.0000,1, 1, 11, 1,1.03568006, -10.708870, 1.10000, 0.90000, 1.10000, 0.90000 + 106,'ALBER ', 138.0000,1, 1, 12, 1,1.03242004, -13.279440, 1.10000, 0.90000, 1.10000, 0.90000 + 107,'ALDER ', 138.0000,2, 1, 12, 1,1.03744996, -11.276730, 1.10000, 0.90000, 1.10000, 0.90000 + 108,'ALGER ', 138.0000,1, 1, 12, 1,1.01023996, -13.749670, 1.10000, 0.90000, 1.10000, 0.90000 + 109,'ALI ', 138.0000,1, 1, 13, 1,1.02610004, -8.815240, 1.10000, 0.90000, 1.10000, 0.90000 + 110,'ALLEN ', 138.0000,1, 1, 13, 1,1.04999995, -10.620630, 1.10000, 0.90000, 1.10000, 0.90000 + 111,'ANNA ', 230.0000,1, 1, 13, 1,1.02763999, -3.916740, 1.10000, 0.90000, 1.10000, 0.90000 + 112,'ARCHER ', 230.0000,1, 1, 13, 1,1.02023995, -2.424240, 1.10000, 0.90000, 1.10000, 0.90000 + 113,'ARNE ', 230.0000,3, 1, 14, 1,1.03470004, 0.000000, 1.10000, 0.90000, 1.10000, 0.90000 + 114,'ARNOLD ', 230.0000,2, 1, 16, 1,1.04401004, -1.730560, 1.10000, 0.90000, 1.10000, 0.90000 + 115,'ARTHUR ', 230.0000,2, 1, 16, 1,1.04334998, 7.959700, 1.10000, 0.90000, 1.10000, 0.90000 + 116,'ASSER ', 230.0000,2, 1, 16, 1,1.04565001, 7.569290, 1.10000, 0.90000, 1.10000, 0.90000 + 117,'ASTON ', 230.0000,1, 1, 17, 1,1.04782999, 11.434170, 1.10000, 0.90000, 1.10000, 0.90000 + 118,'ASTOR ', 230.0000,2, 1, 17, 1,1.04999995, 12.524570, 1.10000, 0.90000, 1.10000, 0.90000 + 119,'ATTAR ', 230.0000,2, 1, 15, 1,1.03962004, 6.657770, 1.10000, 0.90000, 1.10000, 0.90000 + 120,'ATTILA ', 230.0000,1, 1, 15, 1,1.04399002, 7.740600, 1.10000, 0.90000, 1.10000, 0.90000 + 121,'ATTLEE ', 230.0000,2, 1, 17, 1,1.04999995, 13.086530, 1.10000, 0.90000, 1.10000, 0.90000 + 122,'AUBREY ', 230.0000,2, 1, 17, 1,1.04999995, 18.949779, 1.10000, 0.90000, 1.10000, 0.90000 + 123,'AUSTEN ', 230.0000,2, 1, 15, 1,1.04999995, 9.056170, 1.10000, 0.90000, 1.10000, 0.90000 + 124,'AVERY ', 230.0000,1, 1, 16, 1,1.01154995, 2.383390, 1.10000, 0.90000, 1.10000, 0.90000 + 201,'BACH ', 138.0000,2, 2, 21, 1,1.04841006, -10.689730, 1.10000, 0.90000, 1.10000, 0.90000 + 202,'BACON ', 138.0000,2, 2, 22, 1,1.04843998, -10.759060, 1.10000, 0.90000, 1.10000, 0.90000 + 203,'BAFFIN ', 138.0000,1, 2, 21, 1,1.01885998, -10.474530, 1.10000, 0.90000, 1.10000, 0.90000 + 204,'BAILEY ', 138.0000,1, 2, 21, 1,1.01890004, -13.484790, 1.10000, 0.90000, 1.10000, 0.90000 + 205,'BAIN ', 138.0000,1, 2, 21, 1,1.03603005, -13.611870, 1.10000, 0.90000, 1.10000, 0.90000 + 206,'BAJER ', 138.0000,1, 2, 22, 1,1.03259003, -16.156720, 1.10000, 0.90000, 1.10000, 0.90000 + 207,'BAKER ', 138.0000,2, 2, 22, 1,1.03972995, -13.466060, 1.10000, 0.90000, 1.10000, 0.90000 + 208,'BALCH ', 138.0000,1, 2, 22, 1,1.01203001, -16.223590, 1.10000, 0.90000, 1.10000, 0.90000 + 209,'BALZAC ', 138.0000,1, 2, 23, 1,1.02780998, -11.724090, 1.10000, 0.90000, 1.10000, 0.90000 + 210,'BANKS ', 138.0000,1, 2, 23, 1,1.04999995, -13.479860, 1.10000, 0.90000, 1.10000, 0.90000 + 211,'BARDEEN ', 230.0000,1, 2, 23, 1,1.02734995, -6.933360, 1.10000, 0.90000, 1.10000, 0.90000 + 212,'BARKLA ', 230.0000,2, 2, 23, 1,1.01920998, -5.253340, 1.10000, 0.90000, 1.10000, 0.90000 + 213,'BARLOW ', 230.0000,2, 2, 24, 1,1.03752005, -3.215100, 1.10000, 0.90000, 1.10000, 0.90000 + 214,'BARRY ', 230.0000,2, 2, 26, 1,1.04334998, -4.685190, 1.10000, 0.90000, 1.10000, 0.90000 + 215,'BARTON ', 230.0000,2, 2, 26, 1,1.04326999, 4.633510, 1.10000, 0.90000, 1.10000, 0.90000 + 216,'BASOV ', 230.0000,2, 2, 26, 1,1.04556000, 4.700090, 1.10000, 0.90000, 1.10000, 0.90000 + 217,'BATES ', 230.0000,1, 2, 27, 1,1.04847002, 8.818390, 1.10000, 0.90000, 1.10000, 0.90000 + 218,'BAYLE ', 230.0000,2, 2, 27, 1,1.04999995, 9.994730, 1.10000, 0.90000, 1.10000, 0.90000 + 219,'BEDE ', 230.0000,1, 2, 25, 1,1.03945994, 4.212330, 1.10000, 0.90000, 1.10000, 0.90000 + 220,'BEETHOVEN ', 230.0000,1, 2, 25, 1,1.04380000, 5.664490, 1.10000, 0.90000, 1.10000, 0.90000 + 221,'BEHRING ', 230.0000,2, 2, 27, 1,1.04999995, 10.632090, 1.10000, 0.90000, 1.10000, 0.90000 + 222,'BELL ', 230.0000,2, 2, 27, 1,1.04999995, 16.432030, 1.10000, 0.90000, 1.10000, 0.90000 + 223,'BLOCH ', 230.0000,2, 2, 25, 1,1.04999995, 7.181510, 1.10000, 0.90000, 1.10000, 0.90000 + 224,'BORDET ', 230.0000,1, 2, 26, 1,1.01455998, -0.960050, 1.10000, 0.90000, 1.10000, 0.90000 + 301,'CABELL ', 138.0000,2, 3, 31, 1,1.04859996, -9.348210, 1.10000, 0.90000, 1.10000, 0.90000 + 302,'CABOT ', 138.0000,2, 3, 32, 1,1.04864001, -9.431000, 1.10000, 0.90000, 1.10000, 0.90000 + 303,'CAESAR ', 138.0000,2, 3, 31, 1,1.01045001, -8.576890, 1.10000, 0.90000, 1.10000, 0.90000 + 304,'CAINE ', 138.0000,1, 3, 31, 1,1.01785004, -12.187840, 1.10000, 0.90000, 1.10000, 0.90000 + 305,'CALVIN ', 138.0000,1, 3, 31, 1,1.03609002, -12.350050, 1.10000, 0.90000, 1.10000, 0.90000 + 306,'CAMUS ', 138.0000,1, 3, 32, 1,1.03260005, -14.942050, 1.10000, 0.90000, 1.10000, 0.90000 + 307,'CAREW ', 138.0000,2, 3, 32, 1,1.03804004, -12.547950, 1.10000, 0.90000, 1.10000, 0.90000 + 308,'CARREL ', 138.0000,2, 3, 32, 1,1.01056004, -15.182870, 1.10000, 0.90000, 1.10000, 0.90000 + 309,'CARTER ', 138.0000,2, 3, 33, 1,1.02578998, -10.446170, 1.10000, 0.90000, 1.10000, 0.90000 + 310,'CARUSO ', 138.0000,2, 3, 33, 1,1.04999995, -12.301170, 1.10000, 0.90000, 1.10000, 0.90000 + 311,'CARY ', 230.0000,1, 3, 33, 1,1.02830005, -5.740690, 1.10000, 0.90000, 1.10000, 0.90000 + 312,'CAXTON ', 230.0000,2, 3, 33, 1,1.01900005, -4.146040, 1.10000, 0.90000, 1.10000, 0.90000 + 313,'CECIL ', 230.0000,2, 3, 34, 1,1.03802001, -2.415130, 1.10000, 0.90000, 1.10000, 0.90000 + 314,'CHAIN ', 230.0000,2, 3, 36, 1,1.04630995, -3.207930, 1.10000, 0.90000, 1.10000, 0.90000 + 315,'CHASE ', 230.0000,2, 3, 36, 1,1.04299998, 7.050880, 1.10000, 0.90000, 1.10000, 0.90000 + 316,'CHIFA ', 230.0000,2, 3, 36, 1,1.04558003, 6.598750, 1.10000, 0.90000, 1.10000, 0.90000 + 317,'CHUHSI ', 230.0000,2, 3, 37, 1,1.04785001, 10.344180, 1.10000, 0.90000, 1.10000, 0.90000 + 318,'CLARK ', 230.0000,2, 3, 37, 1,1.04999995, 11.342620, 1.10000, 0.90000, 1.10000, 0.90000 + 319,'CLAY ', 230.0000,2, 3, 35, 1,1.03953004, 5.915390, 1.10000, 0.90000, 1.10000, 0.90000 + 320,'CLIVE ', 230.0000,2, 3, 35, 1,1.04389000, 7.197090, 1.10000, 0.90000, 1.10000, 0.90000 + 321,'COBB ', 230.0000,2, 3, 37, 1,1.04999995, 12.341220, 1.10000, 0.90000, 1.10000, 0.90000 + 322,'COLE ', 230.0000,2, 3, 37, 1,1.04999995, 18.069141, 1.10000, 0.90000, 1.10000, 0.90000 + 323,'COMTE ', 230.0000,2, 3, 35, 1,1.04999995, 8.621120, 1.10000, 0.90000, 1.10000, 0.90000 + 324,'CURIE ', 230.0000,2, 3, 36, 1,1.01046002, 1.306060, 1.10000, 0.90000, 1.10000, 0.90000 + 325,'CURTISS ', 230.0000,1, 3, 35, 1,1.04986000, 8.993320, 1.10000, 0.90000, 1.10000, 0.90000 +0 / END OF BUS DATA, BEGIN LOAD DATA + 101,'1 ',1, 1, 1, 108.000, 22.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 102,'1 ',1, 1, 1, 97.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 103,'1 ',1, 1, 1, 180.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 104,'1 ',1, 1, 1, 74.000, 15.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 105,'1 ',1, 1, 1, 71.000, 14.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 106,'1 ',1, 1, 1, 136.000, 28.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 107,'1 ',1, 1, 1, 125.000, 25.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 108,'1 ',1, 1, 1, 171.000, 35.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 109,'1 ',1, 1, 1, 175.000, 36.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 110,'1 ',1, 1, 1, 195.000, 40.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 113,'1 ',1, 1, 1, 265.000, 54.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 114,'1 ',1, 1, 1, 194.000, 39.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 115,'1 ',1, 1, 1, 317.000, 64.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 116,'1 ',1, 1, 1, 100.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 118,'1 ',1, 1, 1, 333.000, 68.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 119,'1 ',1, 1, 1, 181.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 120,'1 ',1, 1, 1, 128.000, 26.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 201,'1 ',1, 2, 1, 108.000, 22.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 202,'1 ',1, 2, 1, 97.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 203,'1 ',1, 2, 1, 180.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 204,'1 ',1, 2, 1, 74.000, 15.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 205,'1 ',1, 2, 1, 71.000, 14.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 206,'1 ',1, 2, 1, 136.000, 28.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 207,'1 ',1, 2, 1, 125.000, 25.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 208,'1 ',1, 2, 1, 171.000, 35.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 209,'1 ',1, 2, 1, 175.000, 36.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 210,'1 ',1, 2, 1, 195.000, 40.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 213,'1 ',1, 2, 1, 265.000, 54.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 214,'1 ',1, 2, 1, 194.000, 39.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 215,'1 ',1, 2, 1, 317.000, 64.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 216,'1 ',1, 2, 1, 100.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 218,'1 ',1, 2, 1, 333.000, 68.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 219,'1 ',1, 2, 1, 181.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 220,'1 ',1, 2, 1, 128.000, 26.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 301,'1 ',1, 3, 1, 108.000, 22.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 302,'1 ',1, 3, 1, 97.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 303,'1 ',1, 3, 1, 180.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 304,'1 ',1, 3, 1, 74.000, 15.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 305,'1 ',1, 3, 1, 71.000, 14.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 306,'1 ',1, 3, 1, 136.000, 28.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 307,'1 ',1, 3, 1, 125.000, 25.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 308,'1 ',1, 3, 1, 171.000, 35.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 309,'1 ',1, 3, 1, 175.000, 36.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 310,'1 ',1, 3, 1, 195.000, 40.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 313,'1 ',1, 3, 1, 265.000, 54.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 314,'1 ',1, 3, 1, 194.000, 39.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 315,'1 ',1, 3, 1, 317.000, 64.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 316,'1 ',1, 3, 1, 100.000, 20.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 318,'1 ',1, 3, 1, 333.000, 68.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 319,'1 ',1, 3, 1, 181.000, 37.000, 0.000, 0.000, 0.000, 0.000, 1,1 + 320,'1 ',1, 3, 1, 128.000, 26.000, 0.000, 0.000, 0.000, 0.000, 1,1 +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 101,'1 ', 8.000, 4.960, 10.000, 0.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'2 ', 8.000, 4.960, 10.000, 0.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'3 ', 76.000, 0.140, 30.000, -25.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'4 ', 76.000, 0.140, 30.000, -25.000,1.04680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.900, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 26.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 26.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 101,'8 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'1 ', 8.000, 4.880, 10.000, 0.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'2 ', 8.000, 4.880, 10.000, 0.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'3 ', 76.000, -2.310, 30.000, -25.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'4 ', 76.000, -2.310, 30.000, -25.000,1.04670, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 102,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 25.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 103,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 61.500, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 104,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 26.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 107,'1 ', 355.000, 49.510, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'1 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'2 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'3 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'4 ', 55.000, 19.000, 19.000, -15.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 93.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 113,'DC', 0.000, 0.000, 0.000, 0.000,1.03470, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 114,'1 ', 0.000, 103.320, 200.000, -50.000,1.04410, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 115,'1 ', 5.000, 6.000, 6.000, 0.000,1.04280, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 115,'2 ', 5.000, 6.000, 6.000, 0.000,1.04280, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 115,'3 ', 155.000, 80.000, 80.000, -50.000,1.04280, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 116,'1 ', 155.000, 80.000, 80.000, -50.000,1.04610, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'1 ', 355.000, 68.430, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'8 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 11.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'9 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 11.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'A ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 10.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 118,'B ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 4.500, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 119,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 66.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 121,'1 ', 400.000, -21.870, 200.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 400.000, 396.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'1 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'2 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'3 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'4 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'5 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'6 ', 50.000, -6.790, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 122,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 713.500, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'1 ', 155.000, -5.190, 80.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'2 ', 350.000, 28.410, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 350.000, 140.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'3 ', 55.000, 0.620, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'4 ', 55.000, 0.620, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 123,'5 ', 55.000, 0.620, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'1 ', 8.000, 5.290, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'2 ', 8.000, 5.290, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'3 ', 76.000, 6.990, 30.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 201,'4 ', 50.000, 4.150, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'1 ', 8.000, 5.130, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'2 ', 8.000, 5.130, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'3 ', 76.000, 2.010, 30.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 202,'4 ', 76.000, 2.010, 30.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 76.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 207,'1 ', 55.000, 19.000, 19.000, -15.000,0.96990, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 207,'2 ', 55.000, 19.000, 19.000, -15.000,0.96990, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 212,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 200.000, 30.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'1 ', 355.000, 135.800, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'2 ', 55.000, 9.230, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'3 ', 55.000, 9.230, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 213,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 13.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 214,'1 ', 0.000, 125.280, 200.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'1 ', 55.000, 19.000, 19.000, -15.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'2 ', 55.000, 19.000, 19.000, -15.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'3 ', 50.000, 16.000, 16.000, -10.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'4 ', 50.000, 16.000, 16.000, -10.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'5 ', 50.000, 16.000, 16.000, -10.000,1.04370, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 215,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 125.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 216,'1 ', 155.000, 80.000, 80.000, -50.000,1.04730, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 218,'1 ', 355.000, 60.300, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 221,'1 ', 296.970, -7.520, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'1 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'2 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'3 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'4 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'5 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 222,'6 ', 50.000, -6.970, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'1 ', 155.000, -10.310, 80.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'2 ', 155.000, -10.310, 80.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'3 ', 350.000, 20.590, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 350.000, 140.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'4 ', 22.000, 0.240, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'5 ', 22.000, 0.240, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 223,'6 ', 22.000, 0.240, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'1 ', 8.000, 7.950, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'2 ', 8.000, 7.950, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'3 ', 44.000, 16.530, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 301,'4 ', 44.000, 16.530, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'1 ', 8.000, 6.160, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'2 ', 8.000, 6.160, 10.000, 0.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 20.000, 8.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'3 ', 55.000, 10.990, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 302,'4 ', 55.000, 10.990, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 303,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 847.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 307,'1 ', 55.000, 19.000, 19.000, -15.000,0.95680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 307,'2 ', 55.000, 19.000, 19.000, -15.000,0.95680, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 308,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 100.900, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 309,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 148.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 310,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 310,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 312,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 94.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'1 ', 355.000, 150.000, 150.000, -25.000,1.03500, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 95.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 93.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 101.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 63.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 65.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 67.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'8 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 64.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'9 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 63.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'A ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 64.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'B ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 66.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'C ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 62.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'D ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 66.900, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'E ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 65.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'F ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.800, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'G ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 313,'H ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'1 ', 0.000, 166.630, 200.000, -50.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 92.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 314,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'1 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'2 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'3 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'4 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'5 ', 5.000, 6.000, 6.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 12.000, 5.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'6 ', 55.000, 19.000, 19.000, -15.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'7 ', 55.000, 19.000, 19.000, -15.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 315,'8 ', 55.000, 60.000, 60.000, 0.000,1.04220, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 316,'1 ', 155.000, 80.000, 80.000, -50.000,1.04490, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 155.000, 62.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 316,'DC', 0.000, 0.000, 0.000, 0.000,1.04490, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 0.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 317,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 799.100, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 318,'1 ', 355.000, 63.120, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 319,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 188.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'4 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 28.300, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'5 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 27.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'6 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 28.200, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 320,'7 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 9.400, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 321,'1 ', 355.000, -3.340, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'1 ', 55.000, -9.730, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'2 ', 55.000, -9.730, 19.000, -15.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 55.000, 22.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'3 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'4 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'5 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 322,'6 ', 50.000, -5.130, 16.000, -10.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 50.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 323,'1 ', 355.000, 37.410, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 323,'2 ', 355.000, 37.410, 150.000, -25.000,1.05000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,1, 100.0, 355.000, 170.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 324,'1 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 49.700, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 324,'2 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.600, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 + 324,'3 ', 0.000, 0.000, 0.000, 0.000,1.00000, 0, 100.000, 0.00000, 1.00000, 0.00000, 0.00000,1.00000,0, 100.0, 51.000, 0.000, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,0, 1.0000 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 102,'1 ',3.00000E-3,1.40000E-2,4.61000E-1, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 3.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 101, 103,'1 ',5.50000E-2,2.11000E-1,5.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 55.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 101, 105,'1 ',2.20000E-2,8.50000E-2,2.30000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 22.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 102, 104,'1 ',3.30000E-2,1.27000E-1,3.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 102, 106,'1 ',5.00000E-2,1.92000E-1,5.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 50.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 103, 109,'1 ',3.10000E-2,1.19000E-1,3.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 31.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 104, 109,'1 ',2.70000E-2,1.04000E-1,2.80000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 105, 110,'1 ',2.30000E-2,8.80000E-2,2.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 23.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 106, 110,'1 ',1.40000E-2,6.10000E-2,2.45900E-0, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 107, 108,'1 ',1.60000E-2,6.10000E-2,1.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 107, 203,'1 ',4.20000E-2,1.61000E-1,4.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 42.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 108, 109,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 108, 110,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 111, 113,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 111, 114,'1 ',5.00000E-3,4.20000E-2,8.80000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 29.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 112, 113,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 112, 123,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 113, 123,'1 ',1.10000E-2,8.70000E-2,1.82000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 60.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 113, 215,'1 ',1.00000E-2,7.50000E-2,1.58000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 52.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 114, 116,'1 ',5.00000E-3,5.90000E-2,8.20000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 116,'1 ',2.00000E-3,1.70000E-2,3.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 12.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 121,'1 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 121,'2 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 115, 124,'1 ',7.00000E-3,5.20000E-2,1.09000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 36.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 116, 117,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 116, 119,'1 ',3.00000E-3,2.30000E-2,4.90000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 117, 118,'1 ',2.00000E-3,1.40000E-2,3.00000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 10.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 117, 122,'1 ',1.40000E-2,1.05000E-1,2.21000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 73.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 118, 121,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 118, 121,'2 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 119, 120,'1 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 119, 120,'2 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 120, 123,'1 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 120, 123,'2 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 121, 122,'1 ',9.00000E-3,6.80000E-2,1.42000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 47.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 123, 217,'1 ',1.00000E-2,7.40000E-2,1.55000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 51.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 201, 202,'1 ',3.00000E-3,1.40000E-2,4.61000E-1, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 3.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 201, 203,'1 ',5.50000E-2,2.11000E-1,5.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 55.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 201, 205,'1 ',2.20000E-2,8.50000E-2,2.30000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 22.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 202, 204,'1 ',3.30000E-2,1.27000E-1,3.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 202, 206,'1 ',5.00000E-2,1.92000E-1,5.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 50.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 203, 209,'1 ',3.10000E-2,1.19000E-1,3.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 31.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 204, 209,'1 ',2.70000E-2,1.04000E-1,2.80000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 205, 210,'1 ',2.30000E-2,8.80000E-2,2.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 23.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 206, 210,'1 ',1.40000E-2,6.10000E-2,2.45900E-0, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 207, 208,'1 ',1.60000E-2,6.10000E-2,1.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 208, 209,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 208, 210,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 211, 213,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 211, 214,'1 ',5.00000E-3,4.20000E-2,8.80000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 29.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 212, 213,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 212, 223,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 213, 223,'1 ',1.10000E-2,8.70000E-2,1.82000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 60.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 214, 216,'1 ',5.00000E-3,5.90000E-2,8.20000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 216,'1 ',2.00000E-3,1.70000E-2,3.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 12.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 221,'1 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 221,'2 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 215, 224,'1 ',7.00000E-3,5.20000E-2,1.09000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 36.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 216, 217,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 216, 219,'1 ',3.00000E-3,2.30000E-2,4.90000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 217, 218,'1 ',2.00000E-3,1.40000E-2,3.00000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 10.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 217, 222,'1 ',1.40000E-2,1.05000E-1,2.21000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 73.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 218, 221,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 218, 221,'2 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 219, 220,'1 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 219, 220,'2 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 220, 223,'1 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 220, 223,'2 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 221, 222,'1 ',9.00000E-3,6.80000E-2,1.42000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 47.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 301, 302,'1 ',3.00000E-3,1.40000E-2,4.61000E-1, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 3.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 301, 303,'1 ',5.50000E-2,2.11000E-1,5.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 55.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 301, 305,'1 ',2.20000E-2,8.50000E-2,2.30000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 22.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 302, 304,'1 ',3.30000E-2,1.27000E-1,3.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 302, 306,'1 ',5.00000E-2,1.92000E-1,5.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 50.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 303, 309,'1 ',3.10000E-2,1.19000E-1,3.20000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 31.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 304, 309,'1 ',2.70000E-2,1.04000E-1,2.80000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 305, 310,'1 ',2.30000E-2,8.80000E-2,2.40000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 23.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 306, 310,'1 ',1.40000E-2,6.10000E-2,2.45900E-0, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 307, 308,'1 ',1.60000E-2,6.10000E-2,1.70000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 308, 309,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 308, 310,'1 ',4.30000E-2,1.65000E-1,4.50000E-2, 175.00, 175.00, 175.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 43.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 311, 313,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 311, 314,'1 ',5.00000E-3,4.20000E-2,8.80000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 29.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 312, 313,'1 ',6.00000E-3,4.80000E-2,1.00000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 33.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 312, 323,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 313, 323,'1 ',1.10000E-2,8.70000E-2,1.82000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 60.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 314, 316,'1 ',5.00000E-3,5.90000E-2,8.20000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 316,'1 ',2.00000E-3,1.70000E-2,3.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 12.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 321,'1 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 321,'2 ',6.00000E-3,4.90000E-2,1.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 34.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 315, 324,'1 ',7.00000E-3,5.20000E-2,1.09000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 36.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 316, 317,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 316, 319,'1 ',3.00000E-3,2.30000E-2,4.90000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 16.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 317, 318,'1 ',2.00000E-3,1.40000E-2,3.00000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 10.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 317, 322,'1 ',1.40000E-2,1.05000E-1,2.21000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 73.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 318, 223,'1 ',1.30000E-2,1.04000E-1,2.18000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 72.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 318, 321,'1 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 318, 321,'2 ',3.00000E-3,2.60000E-2,5.50000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 18.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 319, 320,'1 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 319, 320,'2 ',5.00000E-3,4.00000E-2,8.30000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 27.50, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 320, 323,'1 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 320, 323,'2 ',3.00000E-3,2.20000E-2,4.60000E-2, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 15.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 321, 322,'1 ',9.00000E-3,6.80000E-2,1.42000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 47.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 323, 325,'1 ',1.00000E-7,9.00000E-3,0.00000E-0, 722.00, 722.00, 722.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 0.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 + 325, 121,'1 ',1.20000E-2,9.70000E-2,2.03000E-1, 500.00, 500.00, 500.00, 0.00000, 0.00000, 0.00000, 0.00000,1,1, 67.00, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000 +0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA + 103, 124, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 109, 111, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 109, 112, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 110, 111, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 110, 112, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 203, 224, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 209, 211, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 209, 212, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 210, 211, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 210, 212, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 303, 324, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 309, 311, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 309, 312, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.030000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 310, 311, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 + 310, 312, 0,'1 ',1,1,1,0.00000E0,0.00000E0,2,' ',1, 1,1.0000, 0,1.0000, 0,1.0000, 0,1.0000,' ' +2.00000E-3,8.40000E-2, 100.00 +1.015000,138.000, 0.000, 400.00, 400.00, 400.00,-1, 0,1.500000,0.510000,1.500000,0.510000,159, 0, 0.00000, 0.00000, 0.000 +1.000000,230.000 +0 / END OF TRANSFORMER DATA, BEGIN AREA DATA + 1, 0, 0.000, 1.000,'1 ' + 2, 0, 0.000, 1.000,'2 ' + 3, 0, 0.000, 1.000,'3 ' +0 / END OF AREA DATA, BEGIN TWO-TERMINAL DC DATA +0 / END OF TWO-TERMINAL DC DATA, BEGIN VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA + 1,'1 ' + 11,'11 ' + 12,'12 ' + 13,'13 ' + 14,'14 ' + 15,'15 ' + 16,'16 ' + 17,'17 ' + 21,'21 ' + 22,'22 ' + 23,'23 ' + 24,'24 ' + 25,'25 ' + 26,'26 ' + 27,'27 ' + 31,'31 ' + 32,'32 ' + 33,'33 ' + 34,'34 ' + 35,'35 ' + 36,'36 ' + 37,'37 ' +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA + 1,'1' +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA + 106,0,0,1,1.05000,0.95000, 0,100.0,' ', -100.00, 1,-100.00 + 206,0,0,1,1.05000,0.95000, 0,100.0,' ', -100.00, 1,-100.00 + 306,0,0,1,1.05000,0.95000, 0,100.0,' ', -100.00, 1,-100.00 +0 /END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 /END OF GNE DEVICE DATA +Q \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/RTS_GMLC.m b/v3.3.0/tutorials/tutorials_data/RTS_GMLC.m new file mode 100644 index 0000000000..11294de5de --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/RTS_GMLC.m @@ -0,0 +1,802 @@ +function mpc = RTS_GMLC + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% RTS-GMLC Test Case %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%% By: Clayton Barrows, Ali Ehlen, Matt O Connell, %%%%%%%%%%%%%%%% + %%%%%%%%%% Dheepak Krishnamurthy, Brendan McBennett, and Aaron Bloom %%%%%%%%%%% + %%%%%%%%%%%%%%%%%%% National Renewable Energy Lab, Golden CO %%%%%%%%%%%%%%%%%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %% MATPOWER Case Format : Version 2 + mpc.version = '2'; + + %%----- Power Flow Data -----%% + %% system MVA base + mpc.baseMVA = 100.0; + + %% area data + % area refbus + mpc.areas = [ + 1 101; + 2 201; + 3 301; + ]; + + %% bus data + % bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin + mpc.bus = [ + 101 2 108.0 22.0 0.0 0.0 1 1.04777 -7.74152 138.0 11 1.05 0.95 + 102 2 97.0 20.0 0.0 0.0 1 1.04783 -7.81784 138.0 12 1.05 0.95 + 103 1 180.0 37.0 0.0 0.0 1 1.01085 -7.21090 138.0 11 1.05 0.95 + 104 1 74.0 15.0 0.0 0.0 1 1.01765 -10.56614 138.0 11 1.05 0.95 + 105 1 71.0 14.0 0.0 0.0 1 1.03568 -10.70887 138.0 11 1.05 0.95 + 106 1 136.0 28.0 0.0 -100.0 1 1.03242 -13.27944 138.0 12 1.05 0.95 + 107 2 125.0 25.0 0.0 0.0 1 1.03745 -11.27673 138.0 12 1.05 0.95 + 108 1 171.0 35.0 0.0 0.0 1 1.01024 -13.74967 138.0 12 1.05 0.95 + 109 1 175.0 36.0 0.0 0.0 1 1.02610 -8.81524 138.0 13 1.05 0.95 + 110 1 195.0 40.0 0.0 0.0 1 1.05000 -10.62063 138.0 13 1.05 0.95 + 111 1 0.0 0.0 0.0 0.0 1 1.02764 -3.91674 230.0 13 1.05 0.95 + 112 1 0.0 0.0 0.0 0.0 1 1.02024 -2.42424 230.0 13 1.05 0.95 + 113 3 265.0 54.0 0.0 0.0 1 1.03943 0.00000 230.0 14 1.05 0.95 + 114 2 194.0 39.0 0.0 0.0 1 1.04401 -1.73056 230.0 16 1.05 0.95 + 115 2 317.0 64.0 0.0 0.0 1 1.04335 7.95970 230.0 16 1.05 0.95 + 116 2 100.0 20.0 0.0 0.0 1 1.04565 7.56929 230.0 16 1.05 0.95 + 117 1 0.0 0.0 0.0 0.0 1 1.04783 11.43417 230.0 17 1.05 0.95 + 118 2 333.0 68.0 0.0 0.0 1 1.05000 12.52457 230.0 17 1.05 0.95 + 119 1 181.0 37.0 0.0 0.0 1 1.03962 6.65777 230.0 15 1.05 0.95 + 120 1 128.0 26.0 0.0 0.0 1 1.04399 7.74060 230.0 15 1.05 0.95 + 121 2 0.0 0.0 0.0 0.0 1 1.05000 13.08653 230.0 17 1.05 0.95 + 122 2 0.0 0.0 0.0 0.0 1 1.05000 18.94978 230.0 17 1.05 0.95 + 123 2 0.0 0.0 0.0 0.0 1 1.05000 9.05617 230.0 15 1.05 0.95 + 124 1 0.0 0.0 0.0 0.0 1 1.01155 2.38339 230.0 16 1.05 0.95 + 201 2 108.0 22.0 0.0 0.0 2 1.04841 -10.68973 138.0 21 1.05 0.95 + 202 2 97.0 20.0 0.0 0.0 2 1.04844 -10.75906 138.0 22 1.05 0.95 + 203 1 180.0 37.0 0.0 0.0 2 1.01886 -10.47453 138.0 21 1.05 0.95 + 204 1 74.0 15.0 0.0 0.0 2 1.01890 -13.48479 138.0 21 1.05 0.95 + 205 1 71.0 14.0 0.0 0.0 2 1.03603 -13.61187 138.0 21 1.05 0.95 + 206 1 136.0 28.0 0.0 -100.0 2 1.03259 -16.15672 138.0 22 1.05 0.95 + 207 2 125.0 25.0 0.0 0.0 2 1.03973 -13.46606 138.0 22 1.05 0.95 + 208 1 171.0 35.0 0.0 0.0 2 1.01203 -16.22359 138.0 22 1.05 0.95 + 209 1 175.0 36.0 0.0 0.0 2 1.02781 -11.72409 138.0 23 1.05 0.95 + 210 1 195.0 40.0 0.0 0.0 2 1.05000 -13.47986 138.0 23 1.05 0.95 + 211 1 0.0 0.0 0.0 0.0 2 1.02735 -6.93336 230.0 23 1.05 0.95 + 212 1 0.0 0.0 0.0 0.0 2 1.01921 -5.25334 230.0 23 1.05 0.95 + 213 2 265.0 54.0 0.0 0.0 2 1.03752 -3.21510 230.0 24 1.05 0.95 + 214 2 194.0 39.0 0.0 0.0 2 1.04335 -4.68519 230.0 26 1.05 0.95 + 215 2 317.0 64.0 0.0 0.0 2 1.04327 4.63351 230.0 26 1.05 0.95 + 216 2 100.0 20.0 0.0 0.0 2 1.04556 4.70009 230.0 26 1.05 0.95 + 217 1 0.0 0.0 0.0 0.0 2 1.04847 8.81839 230.0 27 1.05 0.95 + 218 2 333.0 68.0 0.0 0.0 2 1.05000 9.99473 230.0 27 1.05 0.95 + 219 1 181.0 37.0 0.0 0.0 2 1.03946 4.21233 230.0 25 1.05 0.95 + 220 1 128.0 26.0 0.0 0.0 2 1.04380 5.66449 230.0 25 1.05 0.95 + 221 2 0.0 0.0 0.0 0.0 2 1.05000 10.63209 230.0 27 1.05 0.95 + 222 2 0.0 0.0 0.0 0.0 2 1.05000 16.43203 230.0 27 1.05 0.95 + 223 2 0.0 0.0 0.0 0.0 2 1.05000 7.18151 230.0 25 1.05 0.95 + 224 1 0.0 0.0 0.0 0.0 2 1.01456 -0.96005 230.0 26 1.05 0.95 + 301 2 108.0 22.0 0.0 0.0 3 1.04860 -9.34821 138.0 31 1.05 0.95 + 302 2 97.0 20.0 0.0 0.0 3 1.04864 -9.43100 138.0 32 1.05 0.95 + 303 1 180.0 37.0 0.0 0.0 3 1.01045 -8.57689 138.0 31 1.05 0.95 + 304 1 74.0 15.0 0.0 0.0 3 1.01785 -12.18784 138.0 31 1.05 0.95 + 305 1 71.0 14.0 0.0 0.0 3 1.03609 -12.35005 138.0 31 1.05 0.95 + 306 1 136.0 28.0 0.0 -100.0 3 1.03260 -14.94205 138.0 32 1.05 0.95 + 307 2 125.0 25.0 0.0 0.0 3 1.03804 -12.54795 138.0 32 1.05 0.95 + 308 1 171.0 35.0 0.0 0.0 3 1.01056 -15.18287 138.0 32 1.05 0.95 + 309 1 175.0 36.0 0.0 0.0 3 1.02579 -10.44617 138.0 33 1.05 0.95 + 310 1 195.0 40.0 0.0 0.0 3 1.05000 -12.30117 138.0 33 1.05 0.95 + 311 1 0.0 0.0 0.0 0.0 3 1.02830 -5.74069 230.0 33 1.05 0.95 + 312 1 0.0 0.0 0.0 0.0 3 1.01900 -4.14604 230.0 33 1.05 0.95 + 313 2 265.0 54.0 0.0 0.0 3 1.03802 -2.41513 230.0 34 1.05 0.95 + 314 2 194.0 39.0 0.0 0.0 3 1.04631 -3.20793 230.0 36 1.05 0.95 + 315 2 317.0 64.0 0.0 0.0 3 1.04300 7.05088 230.0 36 1.05 0.95 + 316 2 100.0 20.0 0.0 0.0 3 1.04558 6.59875 230.0 36 1.05 0.95 + 317 1 0.0 0.0 0.0 0.0 3 1.04785 10.34418 230.0 37 1.05 0.95 + 318 2 333.0 68.0 0.0 0.0 3 1.05000 11.34262 230.0 37 1.05 0.95 + 319 1 181.0 37.0 0.0 0.0 3 1.03953 5.91539 230.0 35 1.05 0.95 + 320 1 128.0 26.0 0.0 0.0 3 1.04389 7.19709 230.0 35 1.05 0.95 + 321 2 0.0 0.0 0.0 0.0 3 1.05000 12.34122 230.0 37 1.05 0.95 + 322 2 0.0 0.0 0.0 0.0 3 1.05000 18.06914 230.0 37 1.05 0.95 + 323 2 0.0 0.0 0.0 0.0 3 1.05000 8.62112 230.0 35 1.05 0.95 + 324 1 0.0 0.0 0.0 0.0 3 1.01046 1.30606 230.0 36 1.05 0.95 + 325 1 0.0 0.0 0.0 0.0 3 1.04986 8.99332 230.0 35 1.05 0.95 + ]; + + %% generator data + % bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf + mpc.gen = [ + 101 8.0 4.96 10 0 1.04680 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 101 8.0 4.96 10 0 1.04680 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 101 76.0 0.14 30 -25 1.04680 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 101 76.0 0.14 30 -25 1.04680 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 102 8.0 4.88 10 0 1.04670 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 102 8.0 4.88 10 0 1.04670 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 102 76.0 -2.31 30 -25 1.04670 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 102 76.0 -2.31 30 -25 1.04670 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 107 355.0 49.51 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 113 55.0 19.0 19 -15 1.03470 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 115 5.0 6.0 6 0 1.04280 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 115 5.0 6.0 6 0 1.04280 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 115 155.0 80.0 80 -50 1.04280 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 116 155.0 80.0 80 -50 1.04610 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 118 355.0 68.43 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 123 155.0 -5.19 80 -50 1.05000 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 123 350.0 28.41 150 -25 1.05000 100.0 1 350.0 140 0.0 0.0 0.0 0.0 0.0 0.0 4.0 4.0 4.0 4.0 0.0 + 123 55.0 0.62 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 123 55.0 0.62 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 123 55.0 0.62 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 201 8.0 5.29 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 201 8.0 5.29 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 201 76.0 6.99 30 -25 1.05000 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 202 8.0 5.13 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 202 8.0 5.13 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 202 76.0 2.01 30 -25 1.05000 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 202 76.0 2.01 30 -25 1.05000 100.0 1 76.0 30 0.0 0.0 0.0 0.0 0.0 0.0 2.0 2.0 2.0 2.0 0.0 + 207 55.0 19.0 19 -15 0.96990 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 207 55.0 19.0 19 -15 0.96990 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 213 355.0 135.8 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 213 55.0 9.23 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 213 55.0 9.23 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 215 55.0 19.0 19 -15 1.04370 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 215 55.0 19.0 19 -15 1.04370 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 216 155.0 80.0 80 -50 1.04730 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 218 355.0 60.3 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 221 296.97 -7.52 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 223 155.0 -10.31 80 -50 1.05000 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 223 155.0 -10.31 80 -50 1.05000 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 223 350.0 20.59 150 -25 1.05000 100.0 1 350.0 140 0.0 0.0 0.0 0.0 0.0 0.0 4.0 4.0 4.0 4.0 0.0 + 223 22.0 0.24 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 223 22.0 0.24 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 223 22.0 0.24 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 301 8.0 7.95 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 301 8.0 7.95 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 301 44.0 16.53 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 301 44.0 16.53 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 302 8.0 6.16 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 302 8.0 6.16 10 0 1.05000 100.0 1 20.0 8 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 302 55.0 10.99 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 302 55.0 10.99 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 307 55.0 19.0 19 -15 0.95680 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 307 55.0 19.0 19 -15 0.95680 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 313 355.0 150.0 150 -25 1.00000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 5.0 6.0 6 0 1.04220 100.0 1 12.0 5 0.0 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 0.0 + 315 55.0 19.0 19 -15 1.04220 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 315 55.0 19.0 19 -15 1.04220 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 315 55.0 60.0 60 0 1.04220 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 316 155.0 80.0 80 -50 1.04490 100.0 1 155.0 62 0.0 0.0 0.0 0.0 0.0 0.0 3.0 3.0 3.0 3.0 0.0 + 318 355.0 63.12 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 321 355.0 -3.34 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 322 55.0 -9.73 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 322 55.0 -9.73 19 -15 1.05000 100.0 1 55.0 22 0.0 0.0 0.0 0.0 0.0 0.0 3.7 3.7 3.7 3.7 0.0 + 323 355.0 37.41 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 323 355.0 37.41 150 -25 1.05000 100.0 1 355.0 170 0.0 0.0 0.0 0.0 0.0 0.0 4.14 4.14 4.14 4.14 0.0 + 114 0.0 103.32 200 -50 1.04410 100.0 1 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 121 400.0 -21.87 200 -50 1.05000 100.0 1 400.0 396 0.0 0.0 0.0 0.0 0.0 0.0 20.0 20.0 20.0 20.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 122 50.0 -6.79 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 201 50.0 4.15 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 214 0.0 125.28 200 -50 1.05000 100.0 1 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 215 50.0 16.0 16 -10 1.04370 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 215 50.0 16.0 16 -10 1.04370 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 215 50.0 16.0 16 -10 1.04370 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 222 50.0 -6.97 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 314 0.0 166.63 200 -50 1.00000 100.0 1 0.0 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 322 50.0 -5.13 16 -10 1.05000 100.0 1 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 95.1 0 0.0 0.0 0.0 0.0 0.0 0.0 95.1 95.1 95.1 95.1 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 92.7 0 0.0 0.0 0.0 0.0 0.0 0.0 92.7 92.7 92.7 92.7 0.0 + 314 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 93.3 0 0.0 0.0 0.0 0.0 0.0 0.0 93.3 93.3 93.3 93.3 0.0 + 310 0.0 0.0 0 0 1.00000 100.0 0 51.7 0 0.0 0.0 0.0 0.0 0.0 0.0 51.7 51.7 51.7 51.7 0.0 + 324 0.0 0.0 0 0 1.00000 100.0 0 49.7 0 0.0 0.0 0.0 0.0 0.0 0.0 49.7 49.7 49.7 49.7 0.0 + 312 0.0 0.0 0 0 1.00000 100.0 0 94.1 0 0.0 0.0 0.0 0.0 0.0 0.0 94.1 94.1 94.1 94.1 0.0 + 310 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 324 0.0 0.0 0 0 1.00000 100.0 0 51.6 0 0.0 0.0 0.0 0.0 0.0 0.0 51.6 51.6 51.6 51.6 0.0 + 324 0.0 0.0 0 0 1.00000 100.0 0 51.0 0 0.0 0.0 0.0 0.0 0.0 0.0 51.0 51.0 51.0 51.0 0.0 + 113 0.0 0.0 0 0 1.03470 100.0 0 93.6 0 0.0 0.0 0.0 0.0 0.0 0.0 93.6 93.6 93.6 93.6 0.0 + 319 0.0 0.0 0 0 1.00000 100.0 0 188.2 0 0.0 0.0 0.0 0.0 0.0 0.0 188.2 188.2 188.2 188.2 0.0 + 215 0.0 0.0 0 0 1.04370 100.0 0 125.1 0 0.0 0.0 0.0 0.0 0.0 0.0 125.1 125.1 125.1 125.1 0.0 + 102 0.0 0.0 0 0 1.04670 100.0 0 25.6 0 0.0 0.0 0.0 0.0 0.0 0.0 25.6 25.6 25.6 25.6 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 25.9 0 0.0 0.0 0.0 0.0 0.0 0.0 25.9 25.9 25.9 25.9 0.0 + 102 0.0 0.0 0 0 1.04670 100.0 0 25.3 0 0.0 0.0 0.0 0.0 0.0 0.0 25.3 25.3 25.3 25.3 0.0 + 104 0.0 0.0 0 0 1.00000 100.0 0 26.8 0 0.0 0.0 0.0 0.0 0.0 0.0 26.8 26.8 26.8 26.8 0.0 + 212 0.0 0.0 0 0 1.00000 100.0 0 200.0 30 0.0 0.0 0.0 0.0 0.0 0.0 20.0 20.0 20.0 20.0 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 26.7 0 0.0 0.0 0.0 0.0 0.0 0.0 26.7 26.7 26.7 26.7 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 26.2 0 0.0 0.0 0.0 0.0 0.0 0.0 26.2 26.2 26.2 26.2 0.0 + 101 0.0 0.0 0 0 1.04680 100.0 0 25.8 0 0.0 0.0 0.0 0.0 0.0 0.0 25.8 25.8 25.8 25.8 0.0 + 103 0.0 0.0 0 0 1.00000 100.0 0 61.5 0 0.0 0.0 0.0 0.0 0.0 0.0 61.5 61.5 61.5 61.5 0.0 + 119 0.0 0.0 0 0 1.00000 100.0 0 66.6 0 0.0 0.0 0.0 0.0 0.0 0.0 66.6 66.6 66.6 66.6 0.0 + 308 0.0 0.0 0 0 1.00000 100.0 0 100.9 0 0.0 0.0 0.0 0.0 0.0 0.0 100.9 100.9 100.9 100.9 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 101.7 0 0.0 0.0 0.0 0.0 0.0 0.0 101.7 101.7 101.7 101.7 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 63.1 0 0.0 0.0 0.0 0.0 0.0 0.0 63.1 63.1 63.1 63.1 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 65.4 0 0.0 0.0 0.0 0.0 0.0 0.0 65.4 65.4 65.4 65.4 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 67.0 0 0.0 0.0 0.0 0.0 0.0 0.0 67.0 67.0 67.0 67.0 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 64.8 0 0.0 0.0 0.0 0.0 0.0 0.0 64.8 64.8 64.8 64.8 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 63.8 0 0.0 0.0 0.0 0.0 0.0 0.0 63.8 63.8 63.8 63.8 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 64.1 0 0.0 0.0 0.0 0.0 0.0 0.0 64.1 64.1 64.1 64.1 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 66.6 0 0.0 0.0 0.0 0.0 0.0 0.0 66.6 66.6 66.6 66.6 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 62.4 0 0.0 0.0 0.0 0.0 0.0 0.0 62.4 62.4 62.4 62.4 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 66.9 0 0.0 0.0 0.0 0.0 0.0 0.0 66.9 66.9 66.9 66.9 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 65.2 0 0.0 0.0 0.0 0.0 0.0 0.0 65.2 65.2 65.2 65.2 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 27.8 0 0.0 0.0 0.0 0.0 0.0 0.0 27.8 27.8 27.8 27.8 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 27.3 0 0.0 0.0 0.0 0.0 0.0 0.0 27.3 27.3 27.3 27.3 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 27.0 0 0.0 0.0 0.0 0.0 0.0 0.0 27.0 27.0 27.0 27.0 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 28.3 0 0.0 0.0 0.0 0.0 0.0 0.0 28.3 28.3 28.3 28.3 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 27.2 0 0.0 0.0 0.0 0.0 0.0 0.0 27.2 27.2 27.2 27.2 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 27.0 0 0.0 0.0 0.0 0.0 0.0 0.0 27.0 27.0 27.0 27.0 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 28.2 0 0.0 0.0 0.0 0.0 0.0 0.0 28.2 28.2 28.2 28.2 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.3 0 0.0 0.0 0.0 0.0 0.0 0.0 9.3 9.3 9.3 9.3 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.7 0 0.0 0.0 0.0 0.0 0.0 0.0 9.7 9.7 9.7 9.7 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.4 0 0.0 0.0 0.0 0.0 0.0 0.0 9.4 9.4 9.4 9.4 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.1 0 0.0 0.0 0.0 0.0 0.0 0.0 9.1 9.1 9.1 9.1 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.1 0 0.0 0.0 0.0 0.0 0.0 0.0 9.1 9.1 9.1 9.1 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 9.7 0 0.0 0.0 0.0 0.0 0.0 0.0 9.7 9.7 9.7 9.7 0.0 + 320 0.0 0.0 0 0 1.00000 100.0 0 9.4 0 0.0 0.0 0.0 0.0 0.0 0.0 9.4 9.4 9.4 9.4 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 11.8 0 0.0 0.0 0.0 0.0 0.0 0.0 11.8 11.8 11.8 11.8 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 11.2 0 0.0 0.0 0.0 0.0 0.0 0.0 11.2 11.2 11.2 11.2 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 10.3 0 0.0 0.0 0.0 0.0 0.0 0.0 10.3 10.3 10.3 10.3 0.0 + 118 0.0 0.0 0 0 1.00000 100.0 0 4.5 0 0.0 0.0 0.0 0.0 0.0 0.0 4.5 4.5 4.5 4.5 0.0 + 213 0.0 0.0 0 0 1.05000 100.0 0 13.2 0 0.0 0.0 0.0 0.0 0.0 0.0 13.2 13.2 13.2 13.2 0.0 + 309 0.0 0.0 0 0 1.00000 100.0 0 148.3 0 0.0 0.0 0.0 0.0 0.0 0.0 148.3 148.3 148.3 148.3 0.0 + 317 0.0 0.0 0 0 1.00000 100.0 0 799.1 0 0.0 0.0 0.0 0.0 0.0 0.0 799.1 799.1 799.1 799.1 0.0 + 303 0.0 0.0 0 0 1.00000 100.0 0 847.0 0 0.0 0.0 0.0 0.0 0.0 0.0 847.0 847.0 847.0 847.0 0.0 + 122 0.0 0.0 0 0 1.00000 100.0 0 713.5 0 0.0 0.0 0.0 0.0 0.0 0.0 713.5 713.5 713.5 713.5 0.0 + 313 0.0 0.0 0 0 1.00000 100.0 0 50.0 0 0.0 0.0 0.0 0.0 0.0 0.0 50.0 50.0 50.0 50.0 0.0 + ]; + + %% branch data + % fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax + mpc.branch = [ + 101 102 0.00300 0.01400 0.46100 175 175 175 0.0 0.0 1 -90 90 + 101 103 0.05500 0.21100 0.05700 175 175 175 0.0 0.0 1 -90 90 + 101 105 0.02200 0.08500 0.02300 175 175 175 0.0 0.0 1 -90 90 + 102 104 0.03300 0.12700 0.03400 175 175 175 0.0 0.0 1 -90 90 + 102 106 0.05000 0.19200 0.05200 175 175 175 0.0 0.0 1 -90 90 + 103 109 0.03100 0.11900 0.03200 175 175 175 0.0 0.0 1 -90 90 + 103 124 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 104 109 0.02700 0.10400 0.02800 175 175 175 0.0 0.0 1 -90 90 + 105 110 0.02300 0.08800 0.02400 175 175 175 0.0 0.0 1 -90 90 + 106 110 0.01400 0.06100 2.45900 175 175 175 0.0 0.0 1 -90 90 + 107 108 0.01600 0.06100 0.01700 175 175 175 0.0 0.0 1 -90 90 + 107 203 0.04200 0.16100 0.04400 175 175 175 0.0 0.0 1 -90 90 + 108 109 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 108 110 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 109 111 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 109 112 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 110 111 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 110 112 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 111 113 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 111 114 0.00500 0.04200 0.08800 500 500 500 0.0 0.0 1 -90 90 + 112 113 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 112 123 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 113 123 0.01100 0.08700 0.18200 500 500 500 0.0 0.0 1 -90 90 + 113 215 0.01000 0.07500 0.15800 500 500 500 0.0 0.0 1 -90 90 + 114 116 0.00500 0.05900 0.08200 500 500 500 0.0 0.0 1 -90 90 + 115 116 0.00200 0.01700 0.03600 500 500 500 0.0 0.0 1 -90 90 + 115 121 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 115 121 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 115 124 0.00700 0.05200 0.10900 500 500 500 0.0 0.0 1 -90 90 + 116 117 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 116 119 0.00300 0.02300 0.04900 500 500 500 0.0 0.0 1 -90 90 + 117 118 0.00200 0.01400 0.03000 500 500 500 0.0 0.0 1 -90 90 + 117 122 0.01400 0.10500 0.22100 500 500 500 0.0 0.0 1 -90 90 + 118 121 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 118 121 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 119 120 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 119 120 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 120 123 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 120 123 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 121 122 0.00900 0.06800 0.14200 500 500 500 0.0 0.0 1 -90 90 + 123 217 0.01000 0.07400 0.15500 500 500 500 0.0 0.0 1 -90 90 + 201 202 0.00300 0.01400 0.46100 175 175 175 0.0 0.0 1 -90 90 + 201 203 0.05500 0.21100 0.05700 175 175 175 0.0 0.0 1 -90 90 + 201 205 0.02200 0.08500 0.02300 175 175 175 0.0 0.0 1 -90 90 + 202 204 0.03300 0.12700 0.03400 175 175 175 0.0 0.0 1 -90 90 + 202 206 0.05000 0.19200 0.05200 175 175 175 0.0 0.0 1 -90 90 + 203 209 0.03100 0.11900 0.03200 175 175 175 0.0 0.0 1 -90 90 + 203 224 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 204 209 0.02700 0.10400 0.02800 175 175 175 0.0 0.0 1 -90 90 + 205 210 0.02300 0.08800 0.02400 175 175 175 0.0 0.0 1 -90 90 + 206 210 0.01400 0.06100 2.45900 175 175 175 0.0 0.0 1 -90 90 + 207 208 0.01600 0.06100 0.01700 175 175 175 0.0 0.0 1 -90 90 + 208 209 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 208 210 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 209 211 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 209 212 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 210 211 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 210 212 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 211 213 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 211 214 0.00500 0.04200 0.08800 500 500 500 0.0 0.0 1 -90 90 + 212 213 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 212 223 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 213 223 0.01100 0.08700 0.18200 500 500 500 0.0 0.0 1 -90 90 + 214 216 0.00500 0.05900 0.08200 500 500 500 0.0 0.0 1 -90 90 + 215 216 0.00200 0.01700 0.03600 500 500 500 0.0 0.0 1 -90 90 + 215 221 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 215 221 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 215 224 0.00700 0.05200 0.10900 500 500 500 0.0 0.0 1 -90 90 + 216 217 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 216 219 0.00300 0.02300 0.04900 500 500 500 0.0 0.0 1 -90 90 + 217 218 0.00200 0.01400 0.03000 500 500 500 0.0 0.0 1 -90 90 + 217 222 0.01400 0.10500 0.22100 500 500 500 0.0 0.0 1 -90 90 + 218 221 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 218 221 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 219 220 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 219 220 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 220 223 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 220 223 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 221 222 0.00900 0.06800 0.14200 500 500 500 0.0 0.0 1 -90 90 + 301 302 0.00300 0.01400 0.46100 175 175 175 0.0 0.0 1 -90 90 + 301 303 0.05500 0.21100 0.05700 175 175 175 0.0 0.0 1 -90 90 + 301 305 0.02200 0.08500 0.02300 175 175 175 0.0 0.0 1 -90 90 + 302 304 0.03300 0.12700 0.03400 175 175 175 0.0 0.0 1 -90 90 + 302 306 0.05000 0.19200 0.05200 175 175 175 0.0 0.0 1 -90 90 + 303 309 0.03100 0.11900 0.03200 175 175 175 0.0 0.0 1 -90 90 + 303 324 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 304 309 0.02700 0.10400 0.02800 175 175 175 0.0 0.0 1 -90 90 + 305 310 0.02300 0.08800 0.02400 175 175 175 0.0 0.0 1 -90 90 + 306 310 0.01400 0.06100 2.45900 175 175 175 0.0 0.0 1 -90 90 + 307 308 0.01600 0.06100 0.01700 175 175 175 0.0 0.0 1 -90 90 + 308 309 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 308 310 0.04300 0.16500 0.04500 175 175 175 0.0 0.0 1 -90 90 + 309 311 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 309 312 0.00200 0.08400 0.00000 400 400 400 1.03 0.0 1 -90 90 + 310 311 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 310 312 0.00200 0.08400 0.00000 400 400 400 1.015 0.0 1 -90 90 + 311 313 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 311 314 0.00500 0.04200 0.08800 500 500 500 0.0 0.0 1 -90 90 + 312 313 0.00600 0.04800 0.10000 500 500 500 0.0 0.0 1 -90 90 + 312 323 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 313 323 0.01100 0.08700 0.18200 500 500 500 0.0 0.0 1 -90 90 + 314 316 0.00500 0.05900 0.08200 500 500 500 0.0 0.0 1 -90 90 + 315 316 0.00200 0.01700 0.03600 500 500 500 0.0 0.0 1 -90 90 + 315 321 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 315 321 0.00600 0.04900 0.10300 500 500 500 0.0 0.0 1 -90 90 + 315 324 0.00700 0.05200 0.10900 500 500 500 0.0 0.0 1 -90 90 + 316 317 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 316 319 0.00300 0.02300 0.04900 500 500 500 0.0 0.0 1 -90 90 + 317 318 0.00200 0.01400 0.03000 500 500 500 0.0 0.0 1 -90 90 + 317 322 0.01400 0.10500 0.22100 500 500 500 0.0 0.0 1 -90 90 + 318 321 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 318 321 0.00300 0.02600 0.05500 500 500 500 0.0 0.0 1 -90 90 + 319 320 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 319 320 0.00500 0.04000 0.08300 500 500 500 0.0 0.0 1 -90 90 + 320 323 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 320 323 0.00300 0.02200 0.04600 500 500 500 0.0 0.0 1 -90 90 + 321 322 0.00900 0.06800 0.14200 500 500 500 0.0 0.0 1 -90 90 + 325 121 0.01200 0.09700 0.20300 500 500 500 0.0 0.0 1 -90 90 + 318 223 0.01300 0.10400 0.21800 500 500 500 0.0 0.0 1 -90 90 + 323 325 0.00000 0.00900 0.00000 722 722 722 1.0 0.0 1 -90 90 + ]; + + %%----- OPF Data -----%% + %% generator cost data + % 1 startup shutdown n x1 y1 ... xn yn + % 2 startup shutdown n c(n-1) ... c0 + mpc.gencost = [ + 1 51.74700 51.74700 4 8.00000 1085.77625 12.00000 1477.23196 16.00000 1869.51562 20.00000 2298.06357 + 1 51.74700 51.74700 4 8.00000 1085.77625 12.00000 1477.23196 16.00000 1869.51562 20.00000 2298.06357 + 1 11172.01435 11172.01435 4 30.00000 841.57942 45.33333 1059.17805 60.66667 1319.40176 76.00000 1596.51343 + 1 11172.01435 11172.01435 4 30.00000 841.57942 45.33333 1059.17805 60.66667 1319.40176 76.00000 1596.51343 + 1 51.74700 51.74700 4 8.00000 1212.03893 12.00000 1567.93410 16.00000 1946.59795 20.00000 2344.92565 + 1 51.74700 51.74700 4 8.00000 1212.03893 12.00000 1567.93410 16.00000 1946.59795 20.00000 2344.92565 + 1 11172.01435 11172.01435 4 30.00000 735.09774 45.33333 1018.20610 60.66667 1337.84562 76.00000 1683.09260 + 1 11172.01435 11172.01435 4 30.00000 735.09774 45.33333 1018.20610 60.66667 1337.84562 76.00000 1683.09260 + 1 28046.68102 28046.68102 4 170.00000 4772.49548 231.66667 6203.57553 293.33333 7855.66994 355.00000 9738.36720 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 703.75920 703.75920 4 5.00000 897.29298 7.33333 1187.80064 9.66667 1479.58817 12.00000 1791.41904 + 1 703.75920 703.75920 4 5.00000 897.29298 7.33333 1187.80064 9.66667 1479.58817 12.00000 1791.41904 + 1 22784.79562 22784.79562 4 62.00000 1500.19723 93.00000 2132.59734 124.00000 2829.87580 155.00000 3668.44490 + 1 22784.79562 22784.79562 4 62.00000 1735.06998 93.00000 2345.31970 124.00000 3011.01092 155.00000 3751.14842 + 1 28046.68102 28046.68102 4 170.00000 4795.62444 231.66667 6187.87116 293.33333 7899.41412 355.00000 9901.24820 + 1 22784.79562 22784.79562 4 62.00000 1437.41596 93.00000 2039.73610 124.00000 2751.75964 155.00000 3775.85462 + 1 36749.81356 36749.81356 4 140.00000 3582.87481 210.00000 4981.72313 280.00000 6497.03117 350.00000 8137.67767 + 1 5665.23443 5665.23443 4 22.00000 1088.22724 33.00000 1377.15264 44.00000 1704.98911 55.00000 2046.97895 + 1 5665.23443 5665.23443 4 22.00000 1088.22724 33.00000 1377.15264 44.00000 1704.98911 55.00000 2046.97895 + 1 5665.23443 5665.23443 4 22.00000 1088.22724 33.00000 1377.15264 44.00000 1704.98911 55.00000 2046.97895 + 1 51.74700 51.74700 4 8.00000 1157.22851 12.00000 1487.12598 16.00000 1822.73633 20.00000 2269.08525 + 1 51.74700 51.74700 4 8.00000 1157.22851 12.00000 1487.12598 16.00000 1822.73633 20.00000 2269.08525 + 1 11172.01435 11172.01435 4 30.00000 823.75848 45.33333 1163.94880 60.66667 1523.42575 76.00000 1918.39660 + 1 51.74700 51.74700 4 8.00000 1131.23082 12.00000 1455.62241 16.00000 1805.10095 20.00000 2196.47386 + 1 51.74700 51.74700 4 8.00000 1131.23082 12.00000 1455.62241 16.00000 1805.10095 20.00000 2196.47386 + 1 11172.01435 11172.01435 4 30.00000 751.26977 45.33333 1075.05834 60.66667 1401.47249 76.00000 1819.68454 + 1 11172.01435 11172.01435 4 30.00000 751.26977 45.33333 1075.05834 60.66667 1401.47249 76.00000 1819.68454 + 1 5665.23443 5665.23443 4 22.00000 1116.10638 33.00000 1492.56031 44.00000 1897.96238 55.00000 2366.39182 + 1 5665.23443 5665.23443 4 22.00000 1116.10638 33.00000 1492.56031 44.00000 1897.96238 55.00000 2366.39182 + 1 28046.68102 28046.68102 4 170.00000 5170.31357 231.66667 6688.64875 293.33333 8361.59810 355.00000 10458.83751 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1122.43477 33.00000 1417.43201 44.00000 1742.48912 55.00000 2075.88432 + 1 5665.23443 5665.23443 4 22.00000 1216.84757 33.00000 1501.96739 44.00000 1800.72745 55.00000 2160.80453 + 1 5665.23443 5665.23443 4 22.00000 1216.84757 33.00000 1501.96739 44.00000 1800.72745 55.00000 2160.80453 + 1 22784.79562 22784.79562 4 62.00000 1426.14416 93.00000 2001.92316 124.00000 2679.08278 155.00000 3412.47031 + 1 28046.68102 28046.68102 4 170.00000 7523.51994 231.66667 8815.08767 293.33333 10151.48151 355.00000 11987.19523 + 1 28046.68102 28046.68102 4 170.00000 4551.11830 231.66667 5977.40411 293.33333 7600.73310 355.00000 9828.37578 + 1 22784.79562 22784.79562 4 62.00000 1422.99854 93.00000 2013.06389 124.00000 2623.44468 155.00000 3256.43459 + 1 22784.79562 22784.79562 4 62.00000 1422.99854 93.00000 2013.06389 124.00000 2623.44468 155.00000 3256.43459 + 1 36749.81356 36749.81356 4 140.00000 3323.31912 210.00000 4643.59043 280.00000 6258.48853 350.00000 7981.70748 + 1 5665.23443 5665.23443 4 22.00000 1692.75992 33.00000 2103.03655 44.00000 2540.25162 55.00000 2996.75119 + 1 5665.23443 5665.23443 4 22.00000 1692.75992 33.00000 2103.03655 44.00000 2540.25162 55.00000 2996.75119 + 1 5665.23443 5665.23443 4 22.00000 1692.75992 33.00000 2103.03655 44.00000 2540.25162 55.00000 2996.75119 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 5665.23443 5665.23443 4 22.00000 1119.44162 33.00000 1432.61161 44.00000 1754.76108 55.00000 2235.93283 + 1 5665.23443 5665.23443 4 22.00000 1119.44162 33.00000 1432.61161 44.00000 1754.76108 55.00000 2235.93283 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 51.74700 51.74700 4 8.00000 1208.23035 12.00000 1557.25352 16.00000 1956.03660 20.00000 2377.50557 + 1 5665.23443 5665.23443 4 22.00000 1316.56254 33.00000 1688.27018 44.00000 2110.47669 55.00000 2535.46257 + 1 5665.23443 5665.23443 4 22.00000 1316.56254 33.00000 1688.27018 44.00000 2110.47669 55.00000 2535.46257 + 1 5665.23443 5665.23443 4 22.00000 1141.93307 33.00000 1448.77467 44.00000 1770.19723 55.00000 2160.41970 + 1 5665.23443 5665.23443 4 22.00000 1141.93307 33.00000 1448.77467 44.00000 1770.19723 55.00000 2160.41970 + 1 28046.68102 28046.68102 4 170.00000 5243.00459 231.66667 6213.11865 293.33333 7863.05566 355.00000 9944.47408 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 703.75920 703.75920 4 5.00000 745.67427 7.33333 921.69342 9.66667 1155.95898 12.00000 1445.52485 + 1 5665.23443 5665.23443 4 22.00000 884.43584 33.00000 1174.85782 44.00000 1470.71025 55.00000 1821.12370 + 1 5665.23443 5665.23443 4 22.00000 884.43584 33.00000 1174.85782 44.00000 1470.71025 55.00000 1821.12370 + 1 5665.23443 5665.23443 4 22.00000 884.43584 33.00000 1174.85782 44.00000 1470.71025 55.00000 1821.12370 + 1 22784.79562 22784.79562 4 62.00000 1552.62418 93.00000 2207.24021 124.00000 2867.16447 155.00000 3712.68014 + 1 28046.68102 28046.68102 4 170.00000 5254.89948 231.66667 6910.34987 293.33333 8592.40827 355.00000 10536.71149 + 1 28046.68102 28046.68102 4 170.00000 4775.79962 231.66667 6177.63481 293.33333 7775.31462 355.00000 9868.71865 + 1 5665.23443 5665.23443 4 22.00000 1031.69929 33.00000 1288.38408 44.00000 1579.87505 55.00000 1886.71665 + 1 5665.23443 5665.23443 4 22.00000 1031.69929 33.00000 1288.38408 44.00000 1579.87505 55.00000 1886.71665 + 1 28046.68102 28046.68102 4 170.00000 4877.56703 231.66667 6507.36825 293.33333 8374.48424 355.00000 10331.01276 + 1 28046.68102 28046.68102 4 170.00000 4877.56703 231.66667 6507.36825 293.33333 8374.48424 355.00000 10331.01276 + 1 0.00000 0.00000 4 0.00000 0 0.33333 0 0.66667 0 1.00000 0 + 1 63999.82230 63999.82230 4 396.00000 3208.98600 397.33333 3219.79067 398.66667 3230.59533 400.00000 3241.40000 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 0.33333 0 0.66667 0 1.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 0.33333 0 0.66667 0 1.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 31.70000 0 63.40000 0 95.10000 0 + 1 0.00000 0.00000 4 0.00000 0 30.90000 0 61.80000 0 92.70000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 31.10000 0 62.20000 0 93.30000 0 + 1 0.00000 0.00000 4 0.00000 0 17.23333 0 34.46667 0 51.70000 0 + 1 0.00000 0.00000 4 0.00000 0 16.56667 0 33.13333 0 49.70000 0 + 1 0.00000 0.00000 4 0.00000 0 31.36667 0 62.73333 0 94.10000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.20000 0 34.40000 0 51.60000 0 + 1 0.00000 0.00000 4 0.00000 0 17.00000 0 34.00000 0 51.00000 0 + 1 0.00000 0.00000 4 0.00000 0 31.20000 0 62.40000 0 93.60000 0 + 1 0.00000 0.00000 4 0.00000 0 62.73333 0 125.46667 0 188.20000 0 + 1 0.00000 0.00000 4 0.00000 0 41.70000 0 83.40000 0 125.10000 0 + 1 0.00000 0.00000 4 0.00000 0 8.53333 0 17.06667 0 25.60000 0 + 1 0.00000 0.00000 4 0.00000 0 8.63333 0 17.26667 0 25.90000 0 + 1 0.00000 0.00000 4 0.00000 0 8.43333 0 16.86667 0 25.30000 0 + 1 0.00000 0.00000 4 0.00000 0 8.93333 0 17.86667 0 26.80000 0 + 1 10000.00000 0.00000 4 30.00000 0.00000 66.00000 0.00000 120.00000 0.00000 160.00000 0.00000 + 1 0.00000 0.00000 4 0.00000 0 8.90000 0 17.80000 0 26.70000 0 + 1 0.00000 0.00000 4 0.00000 0 8.73333 0 17.46667 0 26.20000 0 + 1 0.00000 0.00000 4 0.00000 0 8.60000 0 17.20000 0 25.80000 0 + 1 0.00000 0.00000 4 0.00000 0 20.50000 0 41.00000 0 61.50000 0 + 1 0.00000 0.00000 4 0.00000 0 22.20000 0 44.40000 0 66.60000 0 + 1 0.00000 0.00000 4 0.00000 0 33.63333 0 67.26667 0 100.90000 0 + 1 0.00000 0.00000 4 0.00000 0 33.90000 0 67.80000 0 101.70000 0 + 1 0.00000 0.00000 4 0.00000 0 21.03333 0 42.06667 0 63.10000 0 + 1 0.00000 0.00000 4 0.00000 0 21.80000 0 43.60000 0 65.40000 0 + 1 0.00000 0.00000 4 0.00000 0 22.33333 0 44.66667 0 67.00000 0 + 1 0.00000 0.00000 4 0.00000 0 21.60000 0 43.20000 0 64.80000 0 + 1 0.00000 0.00000 4 0.00000 0 21.26667 0 42.53333 0 63.80000 0 + 1 0.00000 0.00000 4 0.00000 0 21.36667 0 42.73333 0 64.10000 0 + 1 0.00000 0.00000 4 0.00000 0 22.20000 0 44.40000 0 66.60000 0 + 1 0.00000 0.00000 4 0.00000 0 20.80000 0 41.60000 0 62.40000 0 + 1 0.00000 0.00000 4 0.00000 0 22.30000 0 44.60000 0 66.90000 0 + 1 0.00000 0.00000 4 0.00000 0 21.73333 0 43.46667 0 65.20000 0 + 1 0.00000 0.00000 4 0.00000 0 9.26667 0 18.53333 0 27.80000 0 + 1 0.00000 0.00000 4 0.00000 0 9.10000 0 18.20000 0 27.30000 0 + 1 0.00000 0.00000 4 0.00000 0 9.00000 0 18.00000 0 27.00000 0 + 1 0.00000 0.00000 4 0.00000 0 9.43333 0 18.86667 0 28.30000 0 + 1 0.00000 0.00000 4 0.00000 0 9.06667 0 18.13333 0 27.20000 0 + 1 0.00000 0.00000 4 0.00000 0 9.00000 0 18.00000 0 27.00000 0 + 1 0.00000 0.00000 4 0.00000 0 9.40000 0 18.80000 0 28.20000 0 + 1 0.00000 0.00000 4 0.00000 0 3.10000 0 6.20000 0 9.30000 0 + 1 0.00000 0.00000 4 0.00000 0 3.23333 0 6.46667 0 9.70000 0 + 1 0.00000 0.00000 4 0.00000 0 3.13333 0 6.26667 0 9.40000 0 + 1 0.00000 0.00000 4 0.00000 0 3.03333 0 6.06667 0 9.10000 0 + 1 0.00000 0.00000 4 0.00000 0 3.03333 0 6.06667 0 9.10000 0 + 1 0.00000 0.00000 4 0.00000 0 3.23333 0 6.46667 0 9.70000 0 + 1 0.00000 0.00000 4 0.00000 0 3.13333 0 6.26667 0 9.40000 0 + 1 0.00000 0.00000 4 0.00000 0 3.93333 0 7.86667 0 11.80000 0 + 1 0.00000 0.00000 4 0.00000 0 3.73333 0 7.46667 0 11.20000 0 + 1 0.00000 0.00000 4 0.00000 0 3.43333 0 6.86667 0 10.30000 0 + 1 0.00000 0.00000 4 0.00000 0 1.50000 0 3.00000 0 4.50000 0 + 1 0.00000 0.00000 4 0.00000 0 4.40000 0 8.80000 0 13.20000 0 + 1 0.00000 0.00000 4 0.00000 0 49.43333 0 98.86667 0 148.30000 0 + 1 0.00000 0.00000 4 0.00000 0 266.36667 0 532.73333 0 799.10000 0 + 1 0.00000 0.00000 4 0.00000 0 282.33333 0 564.66667 0 847.00000 0 + 1 0.00000 0.00000 4 0.00000 0 237.83333 0 475.66667 0 713.50000 0 + 1 0.00000 0.00000 4 0.00000 0 16.66667 0 33.33333 0 50.00000 0 + ]; + + + % bus names + %column_names% name + mpc.bus_name = { + 'ABEL'; + 'ADAMS'; + 'ADLER'; + 'AGRICOLA'; + 'AIKEN'; + 'ALBER'; + 'ALDER'; + 'ALGER'; + 'ALI'; + 'ALLEN'; + 'ANNA'; + 'ARCHER'; + 'ARNE'; + 'ARNOLD'; + 'ARTHUR'; + 'ASSER'; + 'ASTON'; + 'ASTOR'; + 'ATTAR'; + 'ATTILA'; + 'ATTLEE'; + 'AUBREY'; + 'AUSTEN'; + 'AVERY'; + 'BACH'; + 'BACON'; + 'BAFFIN'; + 'BAILEY'; + 'BAIN'; + 'BAJER'; + 'BAKER'; + 'BALCH'; + 'BALZAC'; + 'BANKS'; + 'BARDEEN'; + 'BARKLA'; + 'BARLOW'; + 'BARRY'; + 'BARTON'; + 'BASOV'; + 'BATES'; + 'BAYLE'; + 'BEDE'; + 'BEETHOVEN'; + 'BEHRING'; + 'BELL'; + 'BLOCH'; + 'BORDET'; + 'CABELL'; + 'CABOT'; + 'CAESAR'; + 'CAINE'; + 'CALVIN'; + 'CAMUS'; + 'CAREW'; + 'CARREL'; + 'CARTER'; + 'CARUSO'; + 'CARY'; + 'CAXTON'; + 'CECIL'; + 'CHAIN'; + 'CHASE'; + 'CHIFA'; + 'CHUHSI'; + 'CLARK'; + 'CLAY'; + 'CLIVE'; + 'COBB'; + 'COLE'; + 'COMTE'; + 'CURIE'; + 'CURTISS'; + }; + + + % generator names types and fuels + %column_names% name type fuel + mpc.gen_name = { + '101_CT_1' 'CT' 'Oil'; + '101_CT_2' 'CT' 'Oil'; + '101_STEAM_3' 'STEAM' 'Coal'; + '101_STEAM_4' 'STEAM' 'Coal'; + '102_CT_1' 'CT' 'Oil'; + '102_CT_2' 'CT' 'Oil'; + '102_STEAM_3' 'STEAM' 'Coal'; + '102_STEAM_4' 'STEAM' 'Coal'; + '107_CC_1' 'CC' 'NG'; + '113_CT_1' 'CT' 'NG'; + '113_CT_2' 'CT' 'NG'; + '113_CT_3' 'CT' 'NG'; + '113_CT_4' 'CT' 'NG'; + '115_STEAM_1' 'STEAM' 'Oil'; + '115_STEAM_2' 'STEAM' 'Oil'; + '115_STEAM_3' 'STEAM' 'Coal'; + '116_STEAM_1' 'STEAM' 'Coal'; + '118_CC_1' 'CC' 'NG'; + '123_STEAM_2' 'STEAM' 'Coal'; + '123_STEAM_3' 'STEAM' 'Coal'; + '123_CT_1' 'CT' 'NG'; + '123_CT_4' 'CT' 'NG'; + '123_CT_5' 'CT' 'NG'; + '201_CT_1' 'CT' 'Oil'; + '201_CT_2' 'CT' 'Oil'; + '201_STEAM_3' 'STEAM' 'Coal'; + '202_CT_1' 'CT' 'Oil'; + '202_CT_2' 'CT' 'Oil'; + '202_STEAM_3' 'STEAM' 'Coal'; + '202_STEAM_4' 'STEAM' 'Coal'; + '207_CT_1' 'CT' 'NG'; + '207_CT_2' 'CT' 'NG'; + '213_CC_3' 'CC' 'NG'; + '213_CT_1' 'CT' 'NG'; + '213_CT_2' 'CT' 'NG'; + '215_CT_4' 'CT' 'NG'; + '215_CT_5' 'CT' 'NG'; + '216_STEAM_1' 'STEAM' 'Coal'; + '218_CC_1' 'CC' 'NG'; + '221_CC_1' 'CC' 'NG'; + '223_STEAM_1' 'STEAM' 'Coal'; + '223_STEAM_2' 'STEAM' 'Coal'; + '223_STEAM_3' 'STEAM' 'Coal'; + '223_CT_4' 'CT' 'NG'; + '223_CT_5' 'CT' 'NG'; + '223_CT_6' 'CT' 'NG'; + '301_CT_1' 'CT' 'Oil'; + '301_CT_2' 'CT' 'Oil'; + '301_CT_3' 'CT' 'NG'; + '301_CT_4' 'CT' 'NG'; + '302_CT_1' 'CT' 'Oil'; + '302_CT_2' 'CT' 'Oil'; + '302_CT_3' 'CT' 'NG'; + '302_CT_4' 'CT' 'NG'; + '307_CT_1' 'CT' 'NG'; + '307_CT_2' 'CT' 'NG'; + '313_CC_1' 'CC' 'NG'; + '315_STEAM_1' 'STEAM' 'Oil'; + '315_STEAM_2' 'STEAM' 'Oil'; + '315_STEAM_3' 'STEAM' 'Oil'; + '315_STEAM_4' 'STEAM' 'Oil'; + '315_STEAM_5' 'STEAM' 'Oil'; + '315_CT_6' 'CT' 'NG'; + '315_CT_7' 'CT' 'NG'; + '315_CT_8' 'CT' 'NG'; + '316_STEAM_1' 'STEAM' 'Coal'; + '318_CC_1' 'CC' 'NG'; + '321_CC_1' 'CC' 'NG'; + '322_CT_5' 'CT' 'NG'; + '322_CT_6' 'CT' 'NG'; + '323_CC_1' 'CC' 'NG'; + '323_CC_2' 'CC' 'NG'; + '114_SYNC_COND_1' 'SYNC_COND' 'Sync_Cond'; + '121_NUCLEAR_1' 'NUCLEAR' 'Nuclear'; + '122_HYDRO_1' 'HYDRO' 'Hydro'; + '122_HYDRO_2' 'HYDRO' 'Hydro'; + '122_HYDRO_3' 'HYDRO' 'Hydro'; + '122_HYDRO_4' 'HYDRO' 'Hydro'; + '122_HYDRO_5' 'HYDRO' 'Hydro'; + '122_HYDRO_6' 'HYDRO' 'Hydro'; + '201_HYDRO_4' 'HYDRO' 'Hydro'; + '214_SYNC_COND_1' 'SYNC_COND' 'Sync_Cond'; + '215_HYDRO_1' 'HYDRO' 'Hydro'; + '215_HYDRO_2' 'HYDRO' 'Hydro'; + '215_HYDRO_3' 'HYDRO' 'Hydro'; + '222_HYDRO_1' 'HYDRO' 'Hydro'; + '222_HYDRO_2' 'HYDRO' 'Hydro'; + '222_HYDRO_3' 'HYDRO' 'Hydro'; + '222_HYDRO_4' 'HYDRO' 'Hydro'; + '222_HYDRO_5' 'HYDRO' 'Hydro'; + '222_HYDRO_6' 'HYDRO' 'Hydro'; + '314_SYNC_COND_1' 'SYNC_COND' 'Sync_Cond'; + '322_HYDRO_1' 'HYDRO' 'Hydro'; + '322_HYDRO_2' 'HYDRO' 'Hydro'; + '322_HYDRO_3' 'HYDRO' 'Hydro'; + '322_HYDRO_4' 'HYDRO' 'Hydro'; + '320_PV_1' 'PV' 'Solar'; + '314_PV_1' 'PV' 'Solar'; + '314_PV_2' 'PV' 'Solar'; + '313_PV_1' 'PV' 'Solar'; + '314_PV_3' 'PV' 'Solar'; + '314_PV_4' 'PV' 'Solar'; + '313_PV_2' 'PV' 'Solar'; + '310_PV_1' 'PV' 'Solar'; + '324_PV_1' 'PV' 'Solar'; + '312_PV_1' 'PV' 'Solar'; + '310_PV_2' 'PV' 'Solar'; + '324_PV_2' 'PV' 'Solar'; + '324_PV_3' 'PV' 'Solar'; + '113_PV_1' 'PV' 'Solar'; + '319_PV_1' 'PV' 'Solar'; + '215_PV_1' 'PV' 'Solar'; + '102_PV_1' 'PV' 'Solar'; + '101_PV_1' 'PV' 'Solar'; + '102_PV_2' 'PV' 'Solar'; + '104_PV_1' 'PV' 'Solar'; + '212_CSP_1' 'CSP' 'Solar'; + '101_PV_2' 'PV' 'Solar'; + '101_PV_3' 'PV' 'Solar'; + '101_PV_4' 'PV' 'Solar'; + '103_PV_1' 'PV' 'Solar'; + '119_PV_1' 'PV' 'Solar'; + '308_RTPV_1' 'RTPV' 'Solar'; + '313_RTPV_1' 'RTPV' 'Solar'; + '313_RTPV_2' 'RTPV' 'Solar'; + '313_RTPV_3' 'RTPV' 'Solar'; + '313_RTPV_4' 'RTPV' 'Solar'; + '313_RTPV_5' 'RTPV' 'Solar'; + '313_RTPV_6' 'RTPV' 'Solar'; + '313_RTPV_7' 'RTPV' 'Solar'; + '313_RTPV_8' 'RTPV' 'Solar'; + '313_RTPV_9' 'RTPV' 'Solar'; + '313_RTPV_10' 'RTPV' 'Solar'; + '313_RTPV_11' 'RTPV' 'Solar'; + '313_RTPV_12' 'RTPV' 'Solar'; + '320_RTPV_1' 'RTPV' 'Solar'; + '320_RTPV_2' 'RTPV' 'Solar'; + '320_RTPV_3' 'RTPV' 'Solar'; + '313_RTPV_13' 'RTPV' 'Solar'; + '320_RTPV_4' 'RTPV' 'Solar'; + '320_RTPV_5' 'RTPV' 'Solar'; + '118_RTPV_1' 'RTPV' 'Solar'; + '118_RTPV_2' 'RTPV' 'Solar'; + '118_RTPV_3' 'RTPV' 'Solar'; + '118_RTPV_4' 'RTPV' 'Solar'; + '118_RTPV_5' 'RTPV' 'Solar'; + '118_RTPV_6' 'RTPV' 'Solar'; + '320_RTPV_6' 'RTPV' 'Solar'; + '118_RTPV_7' 'RTPV' 'Solar'; + '118_RTPV_8' 'RTPV' 'Solar'; + '118_RTPV_9' 'RTPV' 'Solar'; + '118_RTPV_10' 'RTPV' 'Solar'; + '213_RTPV_1' 'RTPV' 'Solar'; + '309_WIND_1' 'WIND' 'Wind'; + '317_WIND_1' 'WIND' 'Wind'; + '303_WIND_1' 'WIND' 'Wind'; + '122_WIND_1' 'WIND' 'Wind'; + '313_STORAGE_1' 'STORAGE' 'Storage'; + }; + + %%----- DC Line Data -----%% + % F_BUS T_BUS BR_STATUS PF PT QF QT VF VT PMIN PMAX QMINF QMAXF QMINT QMAXT LOSS0 LOSS1 MU_PMIN MU_PMAX MU_QMINF MU_QMAXF MU_QMINT MU_QMAXT + mpc.dcline = [ + 113 316 1 0 0 0 0 1 1 -100 100 -9999 9999 -9999 9999 0 0 0 0 0 0 0 0 + ]; \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/TestGENCLS.dyr b/v3.3.0/tutorials/tutorials_data/TestGENCLS.dyr new file mode 100644 index 0000000000..0787cf64c9 --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/TestGENCLS.dyr @@ -0,0 +1,5 @@ + 101 'GENROE' 1 8.000000 0.030000 0.400000 0.050000 6.500000 0.000000 1.800000 + 1.700000 0.300000 0.550000 0.250000 0.200000 0.039200 0.267200 / + 101 'ESST1A' 1 1 1 0.01 99 -99 1 10 1 1 200 0 4 -4 4 -4 0 0 1 0 3 / + 102 'GENCLS' 1 0.0 0.0 / + 103 'GENCLS' 1 3.1 2.0 / \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/ThreeBusInverter.raw b/v3.3.0/tutorials/tutorials_data/ThreeBusInverter.raw new file mode 100644 index 0000000000..bf19bf1b8b --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/ThreeBusInverter.raw @@ -0,0 +1,34 @@ +0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev + + + 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9 + 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9 + 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9 +0 / END OF BUS DATA, BEGIN LOAD DATA + 101, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0 + 102, 1, 1, 1, 1, 100, 30, 0, 0, 0, 0, 1, 1, 0 + 103, 1, 1, 1, 1, 30, 10, 0, 0, 0, 0, 1, 1, 0 +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 102, 1, 70, 0, 100, -100, 1.0142, 0, 100, 0, 1, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 + 103, 1, 80, 0, 100, -100, 1.0059, 0, 100, 0, 1, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 103, 1, 0.01000, 0.12, 0.2, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 101, 102, 1, 0.01000, 0.12, 0.2, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 102, 103, 1, 0.02000, 0.9, 1.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 +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 VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA +0 / END OF INDUCTION MACHINE DATA +Q \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/ThreeBusNetwork.raw b/v3.3.0/tutorials/tutorials_data/ThreeBusNetwork.raw new file mode 100644 index 0000000000..66101147cd --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/ThreeBusNetwork.raw @@ -0,0 +1,35 @@ +0, 100, 33, 0, 0, 60 / 24-Apr-2020 19:28:39 - MATPOWER 7.0.1-dev + + + 101, 'BUS 1 ', 138, 3, 1, 1, 1, 1.02, 0, 1.1, 0.9, 1.1, 0.9 + 102, 'BUS 2 ', 138, 2, 1, 1, 1, 1.0142, 0, 1.1, 0.9, 1.1, 0.9 + 103, 'BUS 3 ', 138, 2, 1, 1, 1, 1.0059, 0, 1.1, 0.9, 1.1, 0.9 +0 / END OF BUS DATA, BEGIN LOAD DATA + 101, 1, 1, 1, 1, 100, 20, 0, 0, 0, 0, 1, 1, 0 + 102, 1, 1, 1, 1, 70, 10, 0, 0, 0, 0, 1, 1, 0 + 103, 1, 1, 1, 1, 50, 10, 0, 0, 0, 0, 1, 1, 0 +0 / END OF LOAD DATA, BEGIN FIXED SHUNT DATA +0 / END OF FIXED SHUNT DATA, BEGIN GENERATOR DATA + 101, 1, 20, 0, 100, -100, 1.02, 0, 100, 0, 0, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 + 102, 1, 100, 0, 100, -100, 1.0142, 0, 100, 0, 0.7, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 + 103, 1, 100, 0, 100, -100, 1.0059, 0, 100, 0, 0.2, 0, 0, 1, 1, 100, 318, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 +0 / END OF GENERATOR DATA, BEGIN BRANCH DATA + 101, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 101, 102, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 + 102, 103, 1, 0.01000, 0.12, 0.0, 250, 250, 250, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 +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 VOLTAGE SOURCE CONVERTER DATA +0 / END OF VOLTAGE SOURCE CONVERTER DATA, BEGIN IMPEDANCE CORRECTION DATA +0 / END OF IMPEDANCE CORRECTION DATA, BEGIN MULTI-TERMINAL DC DATA +0 / END OF MULTI-TERMINAL DC DATA, BEGIN MULTI-SECTION LINE DATA +0 / END OF MULTI-SECTION LINE DATA, BEGIN ZONE DATA +0 / END OF ZONE DATA, BEGIN INTER-AREA TRANSFER DATA +0 / END OF INTER-AREA TRANSFER DATA, BEGIN OWNER DATA +0 / END OF OWNER DATA, BEGIN FACTS CONTROL DEVICE DATA +0 / END OF FACTS CONTROL DEVICE DATA, BEGIN SWITCHED SHUNT DATA +0 / END OF SWITCHED SHUNT DATA, BEGIN GNE DEVICE DATA +0 / END OF GNE DEVICE DATA, BEGIN INDUCTION MACHINE DATA +0 / END OF INDUCTION MACHINE DATA +Q \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/case5.m b/v3.3.0/tutorials/tutorials_data/case5.m new file mode 100644 index 0000000000..5a61622a50 --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/case5.m @@ -0,0 +1,59 @@ +% NESTA v0.6.0 +% used in tests of, +% - non-contiguous bus ids +% - tranformer orentation swapping +% - dual values +% + +function mpc = nesta_case5_pjm + mpc.version = '2'; + mpc.baseMVA = 100.0; + + %% area data + % area refbus + mpc.areas = [ + 1 4; + ]; + + %% bus data + % bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin + mpc.bus = [ + 1 2 0.0 0.0 0.0 0.0 1 1.00000 2.80377 230.0 1 1.10000 0.90000; + 2 1 300.0 98.61 0.0 0.0 1 1.08407 -0.73465 230.0 1 1.10000 0.90000; + 3 2 300.0 98.61 0.0 0.0 1 1.00000 -0.55972 230.0 1 1.10000 0.90000; + 4 3 400.0 131.47 0.0 0.0 1 1.00000 0.00000 230.0 1 1.10000 0.90000; + 10 2 0.0 0.0 0.0 0.0 1 1.00000 3.59033 230.0 1 1.10000 0.90000; + ]; + + %% generator data + % bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf + mpc.gen = [ + 1 40.0 30.0 30.0 -30.0 1.07762 100.0 1 40.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 1 170.0 127.5 127.5 -127.5 1.07762 100.0 1 170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 3 324.498 390.0 390.0 -390.0 1.1 100.0 1 520.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 4 0.0 -10.802 150.0 -150.0 1.06414 100.0 1 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 10 470.694 -165.039 450.0 -450.0 1.06907 100.0 1 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + ]; + + %% generator cost data + % 2 startup shutdown n c(n-1) ... c0 + mpc.gencost = [ + 2 0.0 0.0 3 0.000000 14.000000 0.000000; + 2 0.0 0.0 3 0.000000 15.000000 0.000000; + 2 0.0 0.0 3 0.000000 30.000000 0.000000; + 2 0.0 0.0 3 0.000000 40.000000 0.000000; + 2 0.0 0.0 3 0.000000 10.000000 0.000000; + ]; + + %% branch data + % fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax + mpc.branch = [ + 1 2 0.00281 0.0281 0.00712 400.0 400.0 400.0 0.0 0.0 1 -30.0 30.0; + 1 4 0.00304 0.0304 0.00658 426 426 426 0.0 0.0 1 -30.0 30.0; + 1 10 0.00064 0.0064 0.03126 426 426 426 0.0 0.0 1 -30.0 30.0; + 2 3 0.00108 0.0108 0.01852 426 426 426 0.0 0.0 1 -30.0 30.0; + 3 4 0.00297 0.0297 0.00674 426 426 426 1.05 1.0 1 -30.0 30.0; + 4 3 0.00297 0.0297 0.00674 426 426 426 1.05 -1.0 1 -30.0 30.0; + 4 10 0.00297 0.0297 0.00674 240.0 240.0 240.0 0.0 0.0 1 -30.0 30.0; + ]; + \ No newline at end of file diff --git a/v3.3.0/tutorials/tutorials_data/case5_re.m b/v3.3.0/tutorials/tutorials_data/case5_re.m new file mode 100644 index 0000000000..6358bcd614 --- /dev/null +++ b/v3.3.0/tutorials/tutorials_data/case5_re.m @@ -0,0 +1,85 @@ +% NESTA v0.6.0 +% extended to include renewable generators +% used in tests of, +% - non-contiguous bus ids +% - tranformer orentation swapping +% - dual values +% + +function mpc = nesta_case5_pjm + mpc.version = '2'; + mpc.baseMVA = 100.0; + + %% area data + % area refbus + mpc.areas = [ + 1 4; + ]; + + %% bus data + % bus_i type Pd Qd Gs Bs area Vm Va baseKV zone Vmax Vmin + mpc.bus = [ + 1 2 0.0 0.0 0.0 0.0 1 1.00000 2.80377 230.0 1 1.10000 0.90000; + 2 1 300.0 98.61 0.0 0.0 1 1.08407 -0.73465 230.0 1 1.10000 0.90000; + 3 2 300.0 98.61 0.0 0.0 1 1.00000 -0.55972 230.0 1 1.10000 0.90000; + 4 3 400.0 131.47 0.0 0.0 1 1.00000 0.00000 230.0 1 1.10000 0.90000; + 10 2 0.0 0.0 0.0 0.0 1 1.00000 3.59033 230.0 1 1.10000 0.90000; + ]; + + %% generator data + % bus Pg Qg Qmax Qmin Vg mBase status Pmax Pmin Pc1 Pc2 Qc1min Qc1max Qc2min Qc2max ramp_agc ramp_10 ramp_30 ramp_q apf + mpc.gen = [ + 1 40.0 30.0 30.0 -30.0 1.07762 100.0 1 40.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 1 170.0 127.5 127.5 -127.5 1.07762 100.0 1 170.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 3 324.498 390.0 390.0 -390.0 1.1 100.0 1 520.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 4 0.0 -10.802 150.0 -150.0 1.06414 100.0 1 200.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 10 470.694 -165.039 450.0 -450.0 1.06907 100.0 1 600.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 3 0 0 0 0 1.1 100.0 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + 10 0 0 0 0 1.06907 100.0 1 60 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0; + ]; + + %% generator cost data + % 2 startup shutdown n c(n-1) ... c0 + mpc.gencost = [ + 2 0.0 0.0 3 0.000000 14.000000 0.000000; + 2 0.0 0.0 3 0.000000 15.000000 0.000000; + 2 0.0 0.0 3 0.000000 30.000000 0.000000; + 2 0.0 0.0 3 0.000000 40.000000 0.000000; + 2 0.0 0.0 3 0.000000 10.000000 0.000000; + 2 0.0 0.0 3 0.000000 0.000000 0.000000; + 2 0.0 0.0 3 0.000000 0.000000 0.000000; + ]; + + %% branch data + % fbus tbus r x b rateA rateB rateC ratio angle status angmin angmax + mpc.branch = [ + 1 2 0.00281 0.0281 0.00712 200.0 200.0 200.0 0.0 0.0 1 -30.0 30.0; + 1 4 0.00304 0.0304 0.00658 200 200 200 0.0 0.0 1 -30.0 30.0; + 1 10 0.00064 0.0064 0.03126 1000 1000 1000 0.0 0.0 1 -30.0 30.0; + 2 3 0.00108 0.0108 0.01852 1200 1200 1200 0.0 0.0 1 -30.0 30.0; + 3 4 0.00297 0.0297 0.00674 1000 1000 1000 1.05 1.0 1 -30.0 30.0; + 4 3 0.00297 0.0297 0.00674 426 426 426 1.05 -1.0 1 -30.0 30.0; + 4 10 0.00297 0.0297 0.00674 200.0 200.0 200.0 0.0 0.0 1 -30.0 30.0; + ]; + + % generator names types and fuels + %column_names% name type fuel + mpc.gen_name = { + 'Alta' 'CT' 'Gas'; + 'Park City' 'CC' 'Gas'; + 'Solitude' 'ST' 'Nuc'; + 'Sundance' 'CC' 'Gas'; + 'Brighton' 'ST' 'Coal'; + 'SolarBusC' 'PV' 'Solar'; + 'WindBusA' 'WIND' 'Wind'; + }; + + % bus names + %column_names% name + mpc.bus_name = { + 'bus1'; + 'bus2'; + 'bus3'; + 'bus4'; + 'bus5'; + }; \ No newline at end of file diff --git a/v3.3.0/tutorials/utils/docs_utils.jl b/v3.3.0/tutorials/utils/docs_utils.jl new file mode 100644 index 0000000000..b160c32487 --- /dev/null +++ b/v3.3.0/tutorials/utils/docs_utils.jl @@ -0,0 +1,13 @@ +""" +`print_struct()` + +Prints the definition of a struct. +""" +function print_struct(type) + mutable = ismutable(type) ? "mutable" : "" + println("$mutable struct $type") + for (fn, ft) in zip(fieldnames(type), fieldtypes(type)) + println(" $fn::$ft") + end + println("end") +end \ No newline at end of file diff --git a/versions.js b/versions.js index 94f1108e01..bf2d6c8eaf 100644 --- a/versions.js +++ b/versions.js @@ -1,5 +1,6 @@ var DOC_VERSIONS = [ "stable", + "v3.3", "v3.2", "v3.1", "v3.0", @@ -56,5 +57,5 @@ var DOC_VERSIONS = [ "v0.4", "v0.3", ]; -var DOCUMENTER_NEWEST = "v3.2.3"; +var DOCUMENTER_NEWEST = "v3.3.0"; var DOCUMENTER_STABLE = "stable";