# Power transfer distribution factors (PTDF) based DC power flow

There are two main methodologies for directly including DC powerflow in unit commitment/energy system models. One method is to directly include the bus voltage angles as variables in the model. This method is described in Nodal lossless DC Powerflow.

Here we discuss the method of using power transfer distribution factors (PTDF) for DC power flow and line outage distribution factors (lodf) for security constrained unit commitment.

## Key concepts

**ptdf**: The power transfer distribution factors are a property of the network reactances and their derivation may be found here.`ptdf(n, c)`

represents the fraction of an injection at node n that will flow on connection c. The flow on connection c is then the sum over all nodes of`ptdf(n, c)*net_injection(c)`

. The advantage of this method is that it introduces no additional variables into the problem and instead, introduces only one constraint for each connection whose flow we are interested in monitoring.**lodf**: Line outage distribution factors are a function of the network ptdfs and their derivation is also found here.`lodf(c_contingency, c_monitored)`

represents the fraction of the pre-contingency flow on connection`c_contingency`

that will flow on`c_monitored`

if`c_contingency`

is disconnected. Therefore, the post contingency flow on connection`c_monitored`

is the`pre_contingency flow`

plus`lodf(c_contingency, c_monitored)\*pre_contingency_flow(c_contingency))`

. Therefore, consideration of N contingencies on M monitored lines introduces N x M constraints into the model. Usually one wishes to contain this number and methods are given below to achieve this.**Defining your network**To identify the network for which ptdfs, lodfs and connection_flows will be calculated according to the ptdf method, one does the following:- Create node objects for each bus in the model.
- Create connection objects representing each line of the network: For each connection specify the connection_reactance parameter and the connection_type parameter. Setting connection_type=
`connection_type_lossless_bidirectional`

simplifies the amount of data that needs to be specified for an eletrical network. See connection_type for more details - Set the connection__to_node and connection__from_node relationships to define the topology of each connection along with the connection_capacity parameter on one or both of these relationships.
- Set the connection_emergency_capacity parameter to define the post contingency rating if lodf-based N-1 security constraints are to be included
- Create a commodity object and node__commodity relationships for all the nodes that comprise the electrical network for which PTDFs are to be calculated.
- Specify the commodity_physics parameter for the commodity to
`:commodity_physics_ptdf`

if ptdf-based DC load flow is desired with no N-1 security constraints or to`:commodity_physics_lodf`

if it is desired to include lodf-based N-1 security constraints - To identify the reference bus(node) specify the node_opf_type parameter for the appropriate node with the value
`node_opf_type_reference`

.

**Controlling problem size**

- The lines to be monitored are specified by setting the connection_monitored property for each connection for which a flow constraint is to be generated
- The contingencies to be considered are specified by setting the connection_contingency property for the appropriate connections. For N contingencies and M monitored lines, N x M constraints will be generated.
- If the
`lodf(c_contingency, c_monitored)`

is very small, it means the outage of`c_contingency`

has a small impact on the flow on`c_monitored`

and there is little point in including this constraint in the model. This can be achieved by setting the`commodity_lodf_tolerance`

commodity parameter. Contingency / Monotired line combinations with lodfs below this value will be ignored, reducing the size of the model. - If
`ptdf(n, c)`

is very small, it means an injection at n has a small impact on the flow on c and there is little point in considering it. This can be achieved by setting the`commodity_ptdf_threshold`

commodity parameter. Node / Monotired line combinations with ptdfs below this value will be ignored, reducing the number of coefficients in the model.