Preparing PowNet inputs

To run a PowNet simulation, you need to provide a set of CSV files that describe your power system. These files should be placed together within a dedicated folder. Based on the files you provide, PowNet’s DataProcessor class may auto-generate additional processed files within the same folder. These generated files typically have the pownet_ prefix and are used directly by the simulation engine.

IMPORTANT Ensure that for files describing techno-economic parameters (like thermal_unit.csv, transmission.csv, etc.), the column names match the expected format exactly as detailed below. It is recommended that a user uses the provided examples as file templates.

Required User Inputs

These files must be provided by the user:

  • demand_export.csv:
    • Description: An hourly timeseries of electricity demand (in MW) for each load node in the system.

    • Format: Each column represents a node, and each row represents an hour of the year (8760 rows expected for a standard year). Date/time columns (like year, month, day, hour) can be included for reference but are ignored by PowNet.

    • Note: When your system has only a single node, or all power stations are aggrgated to a node, then this file should contain only a single column being the demand of that node. Otherwise, nodes are defined in transmission.csv as described later in this section.

  • contract_cost.csv:
    • Description: Specifies the hourly costs (e.g., USD/MWh or USD/MW) associated with different supply or fuel contracts. These contracts are linked to specific generator units via thermal_unit.csv and nondispatch_unit.csv.

    • Format: Each column represents a contract name (which must match names used in other files), and each row represents an hour.

Optional User Inputs

These files describe different components of the power system. While optional, you typically need to provide files relevant to the system components you want to model (e.g., provide thermal_unit.csv if you have thermal generators).

  • thermal_unit.csv:
    • Description: Defines the techno-economic parameters for thermal generators.

    • Columns:
      • name: Unique identifier for the thermal unit.

      • node: Network node where the unit connects.

      • unit_type: User-defined type (e.g., CCGT, OCGT). This is for processing modeling outputs.

      • fuel_type: Type of fuel (e.g., ‘coal’, ‘gas’, ‘oil’).

      • fuel_contract: Name of the contract defined in contract_cost.csv.

      • max_capacity: Maximum power output (MW).

      • min_capacity: Minimum stable power output (MW).

      • heat_rate: Heat rate (e.g., MMBtu/MWh or GJ/MWh).

      • operation_cost: Variable O&M cost (e.g., USD/MWh).

      • fixed_cost: Fixed O&M cost (e.g., USD/MW/hr).

      • startup_cost: Cost per startup event (e.g., USD/startup).

      • ramp_rate: Maximum ramp up/down rate (MW/hr).

      • min_uptime: Minimum hours unit must stay online after starting (hr).

      • min_downtime: Minimum hours unit must stay offline after shutting down (hr).

      • latitude (optional): Latitude coordinate.

      • longitude (optional): Longitude coordinate.

      • must_take (0 or 1): 1 if the unit has a take-or-pay contract.

  • nondispatch_unit.csv:
    • Description: Defines parameters for non-dispatchable units (hydro, solar, wind, imports). Often used to link these units to cost contracts.

    • Columns:
      • name: Unit name (must match name in the corresponding timeseries file, e.g., solar.csv).

      • contracted_capacity: Contracted capacity limit (MW). Use -1 for no explicit contractual limit, so the unit is limited by ints installed capacity.

      • contract: Name of the contract defined in contract_cost.csv.

      • must_take (0 or 1): 1 if generation must be taken if available (subject to capacity).

  • energy_storage.csv:
    • Description: Defines parameters for energy storage systems.

    • Columns:
      • name: Unique identifier for the storage unit.

      • attach_to: Name of the solar or wind unit or network node the storage is associated with.

      • inject_to: Network node where discharged energy is injected.

      • max_charge: Maximum charging rate (MW).

      • max_discharge: Maximum discharging rate (MW).

      • max_capacity: Maximum energy storage capacity (MWh).

      • min_capacity: Minimum energy storage level (MWh).

      • charge_efficiency: Charging efficiency factor (0 to 1).

      • discharge_efficiency: Discharging efficiency factor (0 to 1).

      • self_discharge_rate: Hourly self-discharge rate (0 to 1).

      • cost_contract: Name of the contract (from contract_cost.csv) associated with charging/discharging costs.

  • transmission.csv:
    • Description: Defines a system’s nodes and their properties. PowNet can calculate line parameters if needed, but user-provided values take precedence.

    • Required Columns:
      • source: Starting node of the line.

      • sink: Ending node of the line.

      • source_kv: Voltage level at the source (kV).

      • sink_kv: Voltage level at the sink (kV).

      • distance: Length of the line (km).

      • n_circuits: Number of parallel circuits.

    • Optional Columns:
      • user_line_cap: User-defined line capacity (MW). Use -1 or omit to let PowNet calculate.

      • user_susceptance: User-defined line susceptance (Siemens). Use -1 or omit to let PowNet calculate.

      • source_lon, source_lat: Coordinates for the source node (needed for map plotting).

      • sink_lon, sink_lat: Coordinates for the sink node (needed for map plotting).

  • hydropower.csv / hydropower_daily.csv:
    • Description: Hourly (hydropower.csv) or daily (hydropower_daily.csv) timeseries of maximum available hydropower energy in MWh for each hydro unit. Do not provide both for the same unit.

    • Format: Uses a two-level column header. Level 1: Unit name. Level 2: Node name where the unit connects. Rows correspond to hours or days.

  • solar.csv:
    • Description: Hourly timeseries of maximum available solar energy in MWh for each solar unit.

    • Format: Two-level column header (Level 1: Unit name, Level 2: Node name). Rows correspond to hours.

  • wind.csv:
    • Description: Hourly timeseries of maximum available wind energy in MWh for each wind unit.

    • Format: Two-level column header (Level 1: Unit name, Level 2: Node name). Rows correspond to hours.

  • import.csv:
    • Description: Hourly timeseries of maximum available import energy in MWh for each import source/node.

    • Format: Two-level column header (Level 1: Source/Unit name, Level 2: Node name). Rows correspond to hours.

Auto-Generated Inputs (by PowNet’s DataProcessor)

These files are automatically generated by PowNet’s DataProcessor based on the user inputs. You do not need to create them manually, but they will appear in your input folder.

  • pownet_transmission.csv:
    • Contains processed transmission line data used directly by the model, including calculated or user-provided line_capacity and susceptance.

  • pownet_cycle_map.json:
    • Defines basic cycles in the transmission network, used for the Kirchhoff power flow formulation.

  • pownet_thermal_derated_capacity.csv:
    • Hourly maximum power output for each thermal unit, potentially considering derating factors.

  • pownet_ess_derated_capacity.csv:
    • Hourly maximum storage capacity (MWh) for energy storage systems, potentially considering derating.