Ctm

Struct Ctm 

Source
pub struct Ctm {
    pub ctm_version: String,
    pub network: CtmNetwork,
    pub temporal_boundary: CtmTemporalBoundary,
    pub time_series_data: Option<CtmTimeSeriesData>,
}
Expand description

Common Transmission Model (CTM) Data Schema v0.1

JSON schema
{
 "title": "CTM",
 "description": "Common Transmission Model (CTM) Data Schema v0.1",
 "type": "object",
 "required": [
   "ctm_version",
   "network",
   "temporal_boundary"
 ],
 "properties": {
   "ctm_version": {
     "description": "release version of CTM specification",
     "type": "string"
   },
   "network": {
     "description": "structure to hold persistent network data",
     "type": "object",
     "required": [
       "area",
       "bus",
       "gen",
       "global_params",
       "load"
     ],
     "properties": {
       "ac_line": {
         "type": "array",
         "items": {
           "description": "structure to hold ac line data using concentrated (6-parameter circuit) PI model",
           "type": "object",
           "required": [
             "bus_fr",
             "bus_to",
             "r",
             "status",
             "uid",
             "x"
           ],
           "properties": {
             "b_fr": {
               "description": "[S or pu] shunt susceptance of line at from terminal",
               "default": 0,
               "type": "number"
             },
             "b_to": {
               "description": "[S or pu] shunt susceptance of line at to terminal",
               "default": 0,
               "type": "number"
             },
             "bus_fr": {
               "description": "uid of bus at the from terminal of ac line",
               "$ref": "#/$defs/uid"
             },
             "bus_to": {
               "description": "uid of bus at the to terminal of ac line",
               "$ref": "#/$defs/uid"
             },
             "cm_ub_a": {
               "description": "[kA or pu] persistent current rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "cm_ub_b": {
               "description": "[kA or pu] 4-hour current rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "cm_ub_c": {
               "description": "[kA or pu] 15-minute current rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "ext": {
               "description": "additional ac line parameters currently not supported by CTM"
             },
             "g_fr": {
               "description": "[S or pu] shunt conductance of line at from terminal",
               "default": 0,
               "type": "number"
             },
             "g_to": {
               "description": "[S or pu] shunt conductance of line at to terminal",
               "default": 0,
               "type": "number"
             },
             "name": {
               "description": "line name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of ac line",
               "$ref": "#/$defs/positive_number"
             },
             "persistent_outage_duration": {
               "description": "[hours] expected duration of persistent outage (time between outage and crews re-energizing the branch)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "persistent_outage_rate": {
               "description": "[events/year] number of expected persistent outages per year (outages not cleared by reconnectors)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "r": {
               "description": "[Ohm or pu] series resistance of line",
               "type": "number"
             },
             "sm_ub_a": {
               "description": "[MVA or pu] persistent apparent power rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "sm_ub_b": {
               "description": "[MVA or pu] 4-hour apparent power rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "sm_ub_c": {
               "description": "[MVA or pu] 15-minute apparent power rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "transient_outage_rate": {
               "description": "[events/year] number of expected transient outages per year (outages cleared by reconnectors)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             },
             "vad_lb": {
               "description": "[deg] voltage angle difference lower bound (stability)",
               "type": "number"
             },
             "vad_ub": {
               "description": "[deg] voltage angle difference upper bound (stability)",
               "type": "number"
             },
             "x": {
               "description": "[Ohm or pu] series impedance of line",
               "type": "number"
             }
           }
         }
       },
       "area": {
         "type": "array",
         "items": {
           "description": "geographical subset of the electrical network with common Automatic Generation Control (AGC) and responsible for its Area Control Error (ACE)",
           "type": "object",
           "required": [
             "status",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional area parameters currently not supported by CTM"
             },
             "name": {
               "description": "area name",
               "type": "string"
             },
             "status": {
               "description": "binary indicator of whether area should be included or omitted (if omitted all elements within area should be omitted); 1=>included, 0=>omitted",
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "bus": {
         "type": "array",
         "items": {
           "description": "structure to hold bus data",
           "type": "object",
           "required": [
             "base_kv",
             "status",
             "uid"
           ],
           "properties": {
             "area": {
               "description": "uid for area to which bus belongs to",
               "$ref": "#/$defs/uid"
             },
             "base_kv": {
               "description": "bus base (nominal) voltage",
               "$ref": "#/$defs/positive_number"
             },
             "ext": {
               "description": "additional bus parameters currently not supported by CTM"
             },
             "name": {
               "description": "bus name",
               "type": "string"
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "type": {
               "description": "bus type for power flow calculations (PV, PQ, or slack)",
               "anyOf": [
                 {
                   "type": "string",
                   "enum": [
                     "PQ",
                     "PV",
                     "slack"
                   ]
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "uid": {
               "$ref": "#/$defs/uid"
             },
             "vm_lb": {
               "description": "bus voltage lower bound",
               "anyOf": [
                 {
                   "$ref": "#/$defs/positive_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "vm_ub": {
               "description": "bus voltage upper bound",
               "anyOf": [
                 {
                   "$ref": "#/$defs/positive_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "zone": {
               "description": "uid for zone to which bus belongs to",
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "gen": {
         "type": "array",
         "items": {
           "description": "structure to hold generator data",
           "type": "object",
           "required": [
             "bus",
             "status",
             "uid"
           ],
           "properties": {
             "bus": {
               "description": "uid of bus to which generator is connected to",
               "$ref": "#/$defs/uid"
             },
             "cost_pg_model": {
               "description": "type of generation cost model (i.e., function translating power/energy to money); POLYNOMIAL => cost_pg_parameters is an array with n+1 coefficients <a_i> for f(x) = a_0 + a_1 x^1 + ... + a_n x^n; PIECEWISE_LINEAR => cost_pg_parameters is a series of values <x_i, f_i> and cost (f) should be interpolated linearly in between points; MARGINAL_COST => cost_pg_parameters is a series of values <b_i, m_i>, where m_i is a marginal cost ($/MWh or $/(pu*h)) and b_i is the amoung of power (MWh or pu*h) sold at marginal cost m_i",
               "type": "string",
               "enum": [
                 "POLYNOMIAL",
                 "PIECEWISE_LINEAR",
                 "MARGINAL_COST"
               ]
             },
             "cost_pg_parameters": {
               "description": "parameters of generation cost function, can be time dependent",
               "anyOf": [
                 {
                   "type": "array",
                   "items": {
                     "type": "number"
                   }
                 },
                 {
                   "$ref": "#/$defs/xy_pairs"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "down_time_lb": {
               "description": "[h] minimim time the unit can be out of service (a.k.a., minimum down time)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ext": {
               "description": "additional gen parameters currently not supported by CTM"
             },
             "forced_outage_rate": {
               "description": "[-] fraction of time the generator is out of service because of forced outages (i.e., hours out of service---because of failures---during a year, divided by 8760)",
               "type": "number",
               "maximum": 1.0,
               "minumum": 0
             },
             "in_service_time_lb": {
               "description": "[h] minimim time the unit can be in service (a.k.a., minimum up time)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "in_service_time_ub": {
               "description": "[h] maximum time the unit can be in service (commitment == 1)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "mean_time_to_failure": {
               "description": "[h] mean time to occurence of a failure; failures can be assumed to follow a Poisson process",
               "$ref": "#/$defs/nonnegative_number"
             },
             "mean_time_to_repair": {
               "description": "[h] mean time to repair a failure",
               "$ref": "#/$defs/nonnegative_number"
             },
             "name": {
               "description": "generator name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of generator (nameplate capacity)",
               "$ref": "#/$defs/positive_number"
             },
             "pg_delta_lb": {
               "description": "[MW/h or pu/h] maximum active power decrease per hour",
               "$ref": "#/$defs/nonnegative_number"
             },
             "pg_delta_ub": {
               "description": "[MW/h or pu/h] maximum active power increase per hour",
               "$ref": "#/$defs/nonnegative_number"
             },
             "pg_lb": {
               "description": "[MW or pu] lower bound of active power injection (rectangular operating zone)",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pg_ub": {
               "description": "[MW or pu] upper bound of active power injection (rectangular operating zone)",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "primary_source": {
               "description": "primary energy source",
               "type": "string",
               "enum": [
                 "COAL",
                 "OIL",
                 "GAS",
                 "NUCLEAR",
                 "BIOMASS",
                 "GEOTHERMAL",
                 "SOLAR",
                 "WIND",
                 "HYDRO",
                 "OTHER"
               ]
             },
             "primary_source_subtype": {
               "description": "subtype of primary energy source; thermal classification taken from https://www.eia.gov/survey/form/eia_923/instructions.pdf",
               "type": "string",
               "enum": [
                 "ANTRHC_BITMN_COAL",
                 "WASTE_COAL",
                 "DISTILLATE_FUEL_OIL",
                 "WASTE_OIL",
                 "PETROLEUM_COKE",
                 "RESIDUAL_FUEL_OIL",
                 "NATURAL_GAS",
                 "OTHER_GAS",
                 "NUCLEAR",
                 "AG_BIPRODUCT",
                 "MUNICIPAL_WASTE",
                 "WOOD_WASTE",
                 "GEOTHERMAL",
                 "SOLAR_PV",
                 "SOLAR_CSP",
                 "WIND_ONSHORE",
                 "WIND_OFFSHORE",
                 "HYDRO_RUN_OF_THE_RIVER",
                 "HYDRO_DAM",
                 "HYDRO_PUMPED_STORAGE",
                 "OTHER"
               ]
             },
             "qg_lb": {
               "description": "[MVAr or pu] lower bound of reactive power injection (rectangular operating zone)",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qg_ub": {
               "description": "[MVAr or pu] upper bound of reactive power injection (rectangular operating zone)",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "scheduled_maintenance_rate": {
               "description": "[-] fraction of time the generator is out of service because of scheduled maintenance (i.e., hours out of service---because of scheduled maintenance---during a year, divided by 8760)",
               "type": "number",
               "maximum": 1.0,
               "minumum": 0
             },
             "service_required": {
               "description": "whether generator must be in service (e.g., nuclear power plant) or out of service (e.g., generator during maintenance or after an outage); 0 => no requirement, 1 => fixed in service, 2 => fixed out of service",
               "anyOf": [
                 {
                   "type": "integer",
                   "maximum": 2.0,
                   "minimum": 0.0
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "shutdown_cost": {
               "description": "[$] cost of shutting down the unit",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "startup_cost_cold": {
               "description": "[$] cost of starting the unit after being off > startup_time_warm hours",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "startup_cost_hot": {
               "description": "[$] cost of starting the unit after being off <= startup_time_hot hours",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "startup_cost_warm": {
               "description": "[$] cost of starting the unit after being off > startup_time_hot hours, but <= startup_time_warm hours",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "startup_time_hot": {
               "description": "[h] maximum time the unit can be off before a hot startup",
               "$ref": "#/$defs/nonnegative_number"
             },
             "startup_time_warm": {
               "description": "[h] maximum time the unit can be off before a warm startup",
               "$ref": "#/$defs/nonnegative_number"
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             },
             "vm_setpoint": {
               "description": "[kV or pu] target voltage magnitude of the bus that this generator connects to",
               "anyOf": [
                 {
                   "$ref": "#/$defs/positive_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             }
           }
         }
       },
       "global_params": {
         "description": "structure to hold global settings for parameters in the network",
         "type": "object",
         "required": [
           "unit_convention"
         ],
         "properties": {
           "base_mva": {
             "description": "[MVA] system-wide apparent power base",
             "default": 100.0,
             "$ref": "#/$defs/positive_number"
           },
           "bus_ref": {
             "description": "UID of reference bus of the electrical network",
             "$ref": "#/$defs/uid"
           },
           "unit_convention": {
             "description": "units used for physical network parameters",
             "type": "string",
             "enum": [
               "NATURAL_UNITS",
               "PER_UNIT_COMPONENT_BASE",
               "PER_UNIT_SYSTEM_BASE"
             ]
           }
         }
       },
       "hvdc_p2p": {
         "type": "array",
         "items": {
           "description": "structure to hold point-to-point hvdc line data",
           "type": "object",
           "required": [
             "bus_fr",
             "bus_to",
             "status",
             "uid"
           ],
           "properties": {
             "base_kv_dc": {
               "description": "[kV] base voltage at the dc side",
               "$ref": "#/$defs/positive_number"
             },
             "bus_fr": {
               "description": "uid of bus at the from terminal of hvdc line",
               "$ref": "#/$defs/uid"
             },
             "bus_to": {
               "description": "uid of bus at the to terminal of hvdc line",
               "$ref": "#/$defs/uid"
             },
             "cm_ub_fr": {
               "description": "[kA or pu] ac persistent current rating, from terminal (if in pu, use from bus base_kv)",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "cm_ub_to": {
               "description": "[kA or pu] ac persistent current rating, to terminal (if in pu, use to bus base_kv)",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "ext": {
               "description": "additional hvdc point-to-point parameters currently not supported by CTM"
             },
             "loss_a": {
               "description": "[MW or pu] standby loss",
               "default": 0,
               "$ref": "#/$defs/nonnegative_number"
             },
             "loss_b": {
               "description": "[kV or pu] loss proportional to current magnitude (if in pu, base voltage corresponds to base_kv_dc)",
               "default": 0,
               "$ref": "#/$defs/nonnegative_number"
             },
             "loss_c": {
               "description": "[Ohm or pu] loss proportional to current magnitude squared (if in pu, base voltage corresponds to base_kv_dc)",
               "default": 0,
               "$ref": "#/$defs/nonnegative_number"
             },
             "name": {
               "description": "HVDC line name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of hvdc line",
               "$ref": "#/$defs/positive_number"
             },
             "p": {
               "description": "number of poles; 1 => monopole, 2 => bipole",
               "type": "integer",
               "maximum": 2.0,
               "minimum": 1.0
             },
             "pdc_fr_lb": {
               "description": "[MW or pu] minimum active power entering hvdc line at from bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pdc_fr_ub": {
               "description": "[MW or pu] maximum active power entering hvdc line at from bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pdc_to_lb": {
               "description": "[MW or pu] minimum active power entering hvdc line at to bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pdc_to_ub": {
               "description": "[MW or pu] maximum active power entering hvdc line at to bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "persistent_outage_duration": {
               "description": "[hours] expected duration of persistent outage (time between outage and crews re-energizing the branch)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "persistent_outage_rate": {
               "description": "[events/year] number of expected persistent outages per year (outages not cleared by reconnectors)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "phi_lb": {
               "description": "[deg] only meaningful if technology == LCC; firing angle minimum",
               "type": "number"
             },
             "phi_ub": {
               "description": "[deg] only meaningful if technology == LCC; firing angle maximum",
               "type": "number"
             },
             "qdc_fr_lb": {
               "description": "[MVAr or pu] minimum reactive power entering hvdc line at from bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qdc_fr_ub": {
               "description": "[MVAr or pu] maximum reactive power entering hvdc line at from bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qdc_to_lb": {
               "description": "[MVAr or pu] minimum reactive power entering hvdc line at to bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qdc_to_ub": {
               "description": "[MW or pu] maximum active power entering hvdc line at to bus",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "r": {
               "description": "[Ohm or pu] dc line resistance (if in pu, base voltage corresponds to base_kv_dc)",
               "default": 0.0,
               "$ref": "#/$defs/nonnegative_number"
             },
             "sm_ub": {
               "description": "[MVA or pu] ac persistent apparent power rating",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "technology": {
               "description": "power conversion technology",
               "type": "string",
               "enum": [
                 "LCC",
                 "VSC",
                 "MMC"
               ]
             },
             "transient_outage_rate": {
               "description": "[events/year] number of expected transient outages per year (outages cleared by reconnectors or other)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             },
             "vm_dc_lb": {
               "description": "[kV or pu] minimum voltage at the dc side",
               "$ref": "#/$defs/positive_number"
             },
             "vm_dc_ub": {
               "description": "[kV or pu] maximum voltage at the dc side",
               "$ref": "#/$defs/positive_number"
             }
           }
         }
       },
       "load": {
         "type": "array",
         "items": {
           "description": "structure to hold load (consumer) data using ZIP model",
           "type": "object",
           "required": [
             "bus",
             "pd",
             "qd",
             "status",
             "uid"
           ],
           "properties": {
             "bus": {
               "description": "uid of bus to which load is connected to",
               "$ref": "#/$defs/uid"
             },
             "ext": {
               "description": "additional bus parameters currently not supported by CTM"
             },
             "name": {
               "description": "load name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal power of load",
               "$ref": "#/$defs/positive_number"
             },
             "pd": {
               "description": "active power demand",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pd_i": {
               "description": "constant current active power demand at v_bus = 1.0 pu",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pd_y": {
               "description": "constant impedance active power demand at v_bus = 1.0 pu",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qd": {
               "description": "reactive power demand",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qd_i": {
               "description": "constant current reactive power demand at v_bus = 1.0 pu",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qd_y": {
               "description": "constant impedance reactive power demand at v_bus = 1.0 pu",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "reserve": {
         "type": "array",
         "items": {
           "description": "structure to hold reserve product and requirement data",
           "type": "object",
           "required": [
             "reserve_type",
             "status",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional reserve parameters currently not supported by CTM"
             },
             "name": {
               "description": "name of reserve product",
               "type": "string"
             },
             "participants": {
               "description": "uid of generators contributing to this reserve",
               "type": "array",
               "items": {
                 "$ref": "#/$defs/uid"
               }
             },
             "pg_down": {
               "description": "[MW or pu] downward active power required by this reserve",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "pg_up": {
               "description": "[MW or pu] upward active power required by this reserve",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "reserve_type": {
               "type": "string",
               "enum": [
                 "PRIMARY",
                 "SECONDARY",
                 "TERTIARY"
               ]
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "shunt": {
         "type": "array",
         "items": {
           "description": "structure to hold shunt data",
           "type": "object",
           "required": [
             "bs",
             "bus",
             "gs",
             "num_steps_ub",
             "status",
             "uid"
           ],
           "properties": {
             "bs": {
               "description": "[MVAr or pu] reactive power demand at v_bus = 1.0 pu, per step of each shunt section",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "type": "array",
                   "items": {
                     "type": "number"
                   }
                 }
               ]
             },
             "bus": {
               "description": "uid of bus to which shunt is connected to",
               "$ref": "#/$defs/uid"
             },
             "ext": {
               "description": "additional shunt parameters currently not supported by CTM"
             },
             "gs": {
               "description": "[MW or pu] active power demand at v_bus = 1.0 pu, per step of each shunt section",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "type": "array",
                   "items": {
                     "$ref": "#/$defs/nonnegative_number"
                   }
                 }
               ]
             },
             "name": {
               "description": "shunt name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of shunt (nameplate capacity)",
               "$ref": "#/$defs/positive_number"
             },
             "num_steps_ub": {
               "description": "upper bound for number of energized steps of shunt section (lower bound is always 0)",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_integer"
                 },
                 {
                   "type": "array",
                   "items": {
                     "$ref": "#/$defs/nonnegative_integer"
                   }
                 }
               ]
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "storage": {
         "type": "array",
         "items": {
           "description": "structure to hold storage (battery) data",
           "type": "object",
           "required": [
             "bus",
             "charge_efficiency",
             "discharge_efficiency",
             "ps_ex",
             "qs_ex",
             "status",
             "uid"
           ],
           "properties": {
             "bus": {
               "description": "uid of bus to which generator is connected to",
               "$ref": "#/$defs/uid"
             },
             "charge_efficiency": {
               "description": "[-] charge efficiency, in (0, 1]",
               "anyOf": [
                 {
                   "type": "number",
                   "maximum": 1.0,
                   "exclusiveMinimum": 0.0
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "charge_ub": {
               "description": "[MW or pu] maximum rate of charge",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "cm_ub": {
               "description": "[kA or pu] converter current output rating",
               "$ref": "#/$defs/nonnegative_number"
             },
             "discharge_efficiency": {
               "description": "[-] discharge efficiency, in (0, 1]",
               "anyOf": [
                 {
                   "type": "number",
                   "maximum": 1.0,
                   "exclusiveMinimum": 0.0
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "discharge_ub": {
               "description": "[MW or pu] maximum rate of discharge",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "energy_ub": {
               "description": "[MWh or pu*h] maximum state of charge",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ext": {
               "description": "additional storage parameters currently not supported by CTM"
             },
             "name": {
               "description": "storage name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of storage (nameplate capacity)",
               "$ref": "#/$defs/positive_number"
             },
             "ps_delta_lb": {
               "description": "[MW/h or pu/h] maximum active power decrease per hour",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ps_delta_ub": {
               "description": "[MW/h or pu/h] maximum active power increase per hour",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ps_ex": {
               "description": "converter standby active power exogenous draw",
               "type": "number"
             },
             "qs_ex": {
               "description": "converter standby reactive power exogenous draw",
               "type": "number"
             },
             "qs_lb": {
               "description": "[MVAr or pu] minumum reactive power injection",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "qs_ub": {
               "description": "[MVAr or pu] maximum reactive power injection",
               "anyOf": [
                 {
                   "type": "number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "sm_ub": {
               "description": "[MVA or pu] converter apparent power rating",
               "$ref": "#/$defs/nonnegative_number"
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "switch": {
         "type": "array",
         "items": {
           "type": "object",
           "required": [
             "bus_fr",
             "bus_to",
             "status",
             "uid"
           ],
           "properties": {
             "bus_fr": {
               "description": "uid of bus at the from terminal of switch",
               "$ref": "#/$defs/uid"
             },
             "bus_to": {
               "description": "uid of bus at the to terminal of switch",
               "$ref": "#/$defs/uid"
             },
             "cm_ub": {
               "description": "[kA or pu] current limit",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ext": {
               "description": "additional switch parameters currently not supported by CTM"
             },
             "name": {
               "description": "name of switch",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of switch (nameplate capacity)",
               "$ref": "#/$defs/positive_number"
             },
             "sm_ub": {
               "description": "[MVA or pu] apparent power flow limit",
               "$ref": "#/$defs/nonnegative_number"
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "transformer": {
         "type": "array",
         "items": {
           "description": "structure to hold 2-winding transformer and phase shifter data using simplified (4-parameter circuit) model",
           "type": "object",
           "required": [
             "b",
             "bus_fr",
             "bus_to",
             "g",
             "r",
             "status",
             "uid",
             "x"
           ],
           "properties": {
             "b": {
               "description": "[S or pu] shunt susceptance of transformer at from terminal (magnetizing branch)",
               "type": "number"
             },
             "bus_fr": {
               "description": "uid of bus at the from terminal of transformer",
               "$ref": "#/$defs/uid"
             },
             "bus_to": {
               "description": "uid of bus at the to terminal of transformer",
               "$ref": "#/$defs/uid"
             },
             "cm_ub_a": {
               "description": "[kA or pu] persistent current rating, referred to from side",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "cm_ub_b": {
               "description": "[kA or pu] 4-hour current rating, referred to from side",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "cm_ub_c": {
               "description": "[kA or pu] 15-minute current rating, referred to from side",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "ext": {
               "description": "additional transformer parameters currently not supported by CTM"
             },
             "g": {
               "description": "[S or pu] shunt conductance of transformer at from terminal (magnetizing branch)",
               "type": "number"
             },
             "name": {
               "description": "transformer name",
               "type": "string"
             },
             "nominal_mva": {
               "description": "[MVA] nominal apparent power of transformer",
               "$ref": "#/$defs/positive_number"
             },
             "persistent_outage_duration": {
               "description": "[hours] expected duration of persistent outage (time between outage and crews re-energizing the branch)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "persistent_outage_rate": {
               "description": "[events/year] number of expected persistent outages per year (outages not cleared by reconnectors)",
               "$ref": "#/$defs/nonnegative_number"
             },
             "r": {
               "description": "[Ohm or pu] series resistance of line",
               "type": "number"
             },
             "sm_ub_a": {
               "description": "[MVA or pu] persistent apparent power rating, referred to from side",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "sm_ub_b": {
               "description": "[MVA or pu] 4-hour apparent power rating, referred to from side",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "sm_ub_c": {
               "description": "[MVA or pu] 15-minute apparent power rating, referred to from side",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_number"
                 },
                 {
                   "$ref": "#/$defs/time_series_reference"
                 }
               ]
             },
             "status": {
               "$ref": "#/$defs/status"
             },
             "ta_lb": {
               "description": "[deg] minimum angle phase shift (angle difference = va_from - va_to - angle_shift)",
               "default": 0,
               "type": "number"
             },
             "ta_steps": {
               "description": "number of discrete steps between ta_lb and ta_ub (including limit values)",
               "default": 1,
               "$ref": "#/$defs/positive_integer"
             },
             "ta_ub": {
               "description": "[deg] maximum angle phase shift (angle difference = va_from - va_to - angle_shift)",
               "default": 0,
               "type": "number"
             },
             "tm_lb": {
               "description": "[-] minimum tap ratio (1.0 correspond to nominal ratio, inner_vm_from = vm_from * tap_value)",
               "default": 1.0,
               "$ref": "#/$defs/positive_number"
             },
             "tm_steps": {
               "description": "number of discrete steps between tm_lb and tm_ub (including limit values)",
               "default": 1,
               "$ref": "#/$defs/positive_integer"
             },
             "tm_ub": {
               "description": "[-] maximum tap ratio (1.0 correspond to nominal ratio, inner_vm_from = vm_from * tap_value)",
               "default": 1.0,
               "$ref": "#/$defs/positive_number"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             },
             "x": {
               "description": "[Ohm or pu] series impedance of line",
               "type": "number"
             }
           }
         }
       },
       "zone": {
         "type": "array",
         "items": {
           "description": "geographical subset of the electrical network commonly associated with market purposes (e.g., define sub-markets within a large interconnected system, defining different areas for reserve products, etc.)",
           "type": "object",
           "required": [
             "status",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional zone parameters currently not supported by CTM"
             },
             "name": {
               "description": "zone name",
               "type": "string"
             },
             "status": {
               "description": "binary indicator of whether zone should be included or omitted (if omitted all elements within zone should be omitted); 1=>included, 0=>omitted",
               "$ref": "#/$defs/status"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       }
     }
   },
   "temporal_boundary": {
     "description": "structure to hold data on initial conditions of power system (state prior to start of time series data)",
     "type": "object",
     "required": [
       "global_params"
     ],
     "properties": {
       "bus": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of bus variables",
           "type": "object",
           "required": [
             "uid",
             "va"
           ],
           "properties": {
             "ext": {
               "description": "additional bus initial condition parameters currently not supported by CTM"
             },
             "uid": {
               "description": "uid of bus this record refers to",
               "$ref": "#/$defs/uid"
             },
             "va": {
               "description": "[deg] initial voltage angle",
               "type": "number"
             },
             "vm": {
               "description": "[kV or pu] initial voltage magnitude",
               "$ref": "#/$defs/positive_number"
             }
           }
         }
       },
       "gen": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of generator variables",
           "type": "object",
           "required": [
             "pg",
             "uid"
           ],
           "properties": {
             "down_time": {
               "description": "[h] if in service, zero, else time the unit has been out of service",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ext": {
               "description": "additional generator initial condition parameters currently not supported by CTM"
             },
             "in_service_time": {
               "description": "[h] if in service, time the unit has been in service, zero otherwise",
               "$ref": "#/$defs/nonnegative_number"
             },
             "pg": {
               "description": "[MW or pu] initial active power injection",
               "type": "number"
             },
             "qg": {
               "description": "[MW or pu] initial reactive power injection",
               "type": "number"
             },
             "uid": {
               "description": "uid of generator this record refers to",
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "global_params": {
         "description": "structure to hold global parameters of temporal boundary",
         "type": "object",
         "required": [
           "time_elapsed"
         ],
         "properties": {
           "time_elapsed": {
             "description": "[seconds] time elapsed since temporal_boundary conditions where present in the system",
             "$ref": "#/$defs/nonnegative_number"
           }
         }
       },
       "hvdc_p2p": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of hvdc point-to-point line variables",
           "type": "object",
           "required": [
             "pdc_fr",
             "pdc_to",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional hvdc point-to-point line initial condition parameters currently not supported by CTM"
             },
             "pdc_fr": {
               "description": "[MW or pu] initial active power entering hvdc line at from bus",
               "type": "number"
             },
             "pdc_to": {
               "description": "[MW or pu] initial active power entering hvdc line at to bus",
               "type": "number"
             },
             "qdc_fr": {
               "description": "[MVAr or pu] initial reactive power entering hvdc line at from bus",
               "type": "number"
             },
             "qdc_to": {
               "description": "[MVAr or pu] initial reactive power entering hvdc line at to bus",
               "type": "number"
             },
             "uid": {
               "description": "uid of hvdc point-to-point this record refers to",
               "$ref": "#/$defs/uid"
             },
             "vm_dc_fr": {
               "description": "[kV or pu] initial dc side voltage at from converter",
               "$ref": "#/$defs/positive_number"
             },
             "vm_dc_to": {
               "description": "[kV or pu] initial dc side voltage at to converter",
               "$ref": "#/$defs/positive_number"
             }
           }
         }
       },
       "shunt": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of shunt variables",
           "type": "object",
           "required": [
             "num_steps",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional shunt initial condition parameters currently not supported by CTM"
             },
             "num_steps": {
               "description": "[-] number of initial energized steps per section",
               "anyOf": [
                 {
                   "$ref": "#/$defs/nonnegative_integer"
                 },
                 {
                   "type": "array",
                   "items": {
                     "$ref": "#/$defs/nonnegative_integer"
                   }
                 }
               ]
             },
             "uid": {
               "description": "uid of shunt this record refers to",
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "storage": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of storage variables",
           "type": "object",
           "required": [
             "energy",
             "uid"
           ],
           "properties": {
             "energy": {
               "description": "[MWh or pu*h] initial state of charge",
               "$ref": "#/$defs/nonnegative_number"
             },
             "ext": {
               "description": "additional storage initial condition parameters currently not supported by CTM"
             },
             "ps": {
               "description": "[MW or pu] initial active power injection",
               "type": "number"
             },
             "qs": {
               "description": "[MW or pu] initial reactive power injection",
               "type": "number"
             },
             "uid": {
               "description": "uid of storage this record refers to",
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "switch": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of switch variables",
           "type": "object",
           "required": [
             "state",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional switch initial condition parameters currently not supported by CTM"
             },
             "state": {
               "description": "[-] binary indicator of switch initial status; 0 => open, 1 => closed",
               "$ref": "#/$defs/binary"
             },
             "uid": {
               "description": "uid of switch this record refers to",
               "$ref": "#/$defs/uid"
             }
           }
         }
       },
       "transformer": {
         "type": "array",
         "items": {
           "description": "structure to hold initial state of transformer variables",
           "type": "object",
           "required": [
             "ta",
             "tm",
             "uid"
           ],
           "properties": {
             "ext": {
               "description": "additional transformer initial condition parameters currently not supported by CTM"
             },
             "ta": {
               "description": "[deg] initial angle phase shift",
               "type": "number"
             },
             "tm": {
               "description": "[-] initial tap ratio",
               "$ref": "#/$defs/positive_number"
             },
             "uid": {
               "$ref": "#/$defs/uid"
             }
           }
         }
       }
     }
   },
   "time_series_data": {
     "description": "structure to contain all time variant data of the system/case. All time series are synchronized to the same timestamps, which should should be stored using Unix time. Structure is quasi-tabular, with uid, name, path_to_file, values, and ext being arrays in the same order of said field. This is done in order to allow for better compression (e.g., using HDF5) for the values field.",
     "type": "object",
     "required": [
       "uid"
     ],
     "properties": {
       "ext": {
         "description": "additional time series information not currently supported by CTM",
         "type": "array"
       },
       "name": {
         "description": "array of names of time series",
         "type": "array",
         "items": {
           "type": "string"
         }
       },
       "path_to_file": {
         "description": "path to file containing all time series information or a separate path for each time series",
         "anyOf": [
           {
             "type": "string"
           },
           {
             "type": "array",
             "items": {
               "type": "string"
             }
           }
         ]
       },
       "timestamp": {
         "description": "[seconds] seconds since epoch (Unix time) for each instant for which time series values are provided",
         "type": "array",
         "items": {
           "$ref": "#/$defs/nonnegative_number"
         }
       },
       "uid": {
         "description": "array of uids of time series",
         "type": "array",
         "items": {
           "$ref": "#/$defs/uid"
         }
       },
       "values": {
         "description": "array of time series values",
         "type": "array",
         "items": {
           "description": "time series values for a particular time series",
           "type": "array"
         }
       }
     }
   }
 }
}

Fields§

§ctm_version: String

release version of CTM specification

§network: CtmNetwork§temporal_boundary: CtmTemporalBoundary§time_series_data: Option<CtmTimeSeriesData>

Implementations§

Source§

impl Ctm

Source

pub fn builder() -> Ctm

Trait Implementations§

Source§

impl Clone for Ctm

Source§

fn clone(&self) -> Ctm

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Ctm

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Ctm

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl From<&Ctm> for Ctm

Source§

fn from(value: &Ctm) -> Self

Converts to this type from the input type.
Source§

impl From<Ctm> for Ctm

Source§

fn from(value: Ctm) -> Self

Converts to this type from the input type.
Source§

impl Serialize for Ctm

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl TryFrom<Ctm> for Ctm

Source§

type Error = ConversionError

The type returned in the event of a conversion error.
Source§

fn try_from(value: Ctm) -> Result<Self, ConversionError>

Performs the conversion.

Auto Trait Implementations§

§

impl Freeze for Ctm

§

impl RefUnwindSafe for Ctm

§

impl Send for Ctm

§

impl Sync for Ctm

§

impl Unpin for Ctm

§

impl UnwindSafe for Ctm

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,