Market Types

POMATWO supports different market types, defined as subtypes of the abstract type MarketType. The market type specifies whether a zonal or nodal market design is used. Choosing the appropriate type is essential for model construction and simulation behavior.

POMATWO.MarketTypeType
MarketType

Abstract supertype for market setup descriptors. Subtypes specify the market structure (zonal or nodal) and whether redispatch is considered.

Subtypes

  • ZonalMarket: Zonal market with specified exchange formulation.
  • NodalMarket: Nodal market with specified load flow formulation.

These types are used to parameterize simulations or models, allowing code to dispatch on market design and redispatch handling.

source

Zonal Markets

Zonal markets are coarse representations of the power system, where nodes are aggregated into zones, and cross-border flows are modeled via exchange formulations.

POMATWO.ZonalMarketType
ZonalMarket{XF<:ExchangeFormulation} <: ZonalMarketType

Zonal market definition parameterized by an exchange formulation.

Fields

  • XF: Type of the exchange formulation, e.g., NTC or FlowBased.

Constructors

  • ZonalMarket(): Uses NTC as default.
  • ZonalMarket(XF::Type{<:ExchangeFormulation}): Specify exchange formulation type.
source

Nodal Markets

Nodal markets use detailed grid representations with nodal-level price formation and physical power flows.

POMATWO.NodalMarketType
NodalMarket{LF<:LFFormulation} <: NodalMarketType

Nodal market definition parameterized by a load flow formulation.

Fields

  • LF: Type of the load flow formulation, e.g., PhaseAngle or PTDF.

Constructors

  • NodalMarket(): Uses PhaseAngle as default.
  • NodalMarket(LF::Type{<:LFFormulation}): Specify load flow formulation type.
source

Exchange Formulations

Exchange formulations define how power exchanges between zones are handled in zonal market settings.

POMATWO.NTCType
NTC <: ExchangeFormulation

Net Transfer Capacity formulation. Represents fixed interzonal capacity limits.

source

Load Flow Formulations

Load flow formulations are used in nodal market and redispatch settings to model physical power flows under DC approximations.

POMATWO.PhaseAngleType
PhaseAngle <: DCLFFormulation

DC load flow formulation based on phase angle differences between nodes.

source

Redispatch Setup

POMATWO supports optional redispatch modeling. Redispatch is activated via types derived from RedispatchSetup.

POMATWO.DCLFType
DCLF{DCF<:DCLFFormulation} <: RedispatchType

Redispatch setup using a DC load flow formulation.

Fields

  • DCF: DC load flow formulation type (e.g., PhaseAngle, PTDF).

Constructors

  • DCLF(): Uses PhaseAngle as default.
  • DCLF(DCF::Type{<:DCLFFormulation}): User-defined formulation type.
source

Prosumer Setup

Due to the increasing penetration of decentralized generation, especially rooftop PV, POMATWO includes the ability to model prosumers—entities that both consume and produce electricity. Prosumers can be passive or actively optimize their market behavior depending on price signals and tariff schemes.

POMATWO.ProsumerSetupType
ProsumerSetup

Abstract supertype for prosumer market participation models. Subtypes specify whether and how prosumers are represented in the simulation.

Subtypes

  • NoProsumer: No prosumers are modeled.
  • ProsumerOptimization: Prosumers are modeled with explicit optimization (variable sell/buy prices and retail tariff types).
source
POMATWO.ProsumerOptimizationType
ProsumerOptimization(; sell_price, buy_price=0, retail_type=:buy_price)

Represents a prosumer setup where prosumer actions are explicitly optimized with respect to market conditions.

Keyword Arguments

  • sell_price::Float64: Price at which the prosumer can sell electricity to the market or grid.
  • buy_price::Float64: Price at which the prosumer buys electricity from the market/grid. Defaults to 0.
  • retail_type::Symbol: Retail tariff structure. Must be one of :buy_price, :flat, or :realtime. Default is :buy_price.

An error is thrown if retail_type is not valid.

Example

ProsumerOptimization(sell_price=0.12, buy_price=0.22)
source