/install grid-dispatch-operator-dc-power-flow
DC Power Flow
DC power flow is a linearized approximation of AC power flow, suitable for economic dispatch and contingency analysis.
DC Approximations
- Lossless lines - Ignore resistance (R ≈ 0)
- Flat voltage - All bus voltages = 1.0 pu
- Small angles - sin(θ) ≈ θ, cos(θ) ≈ 1
Result: Power flow depends only on bus angles (θ) and line reactances (X).
Bus Number Mapping
Power system bus numbers may not be contiguous (e.g., case300 has non-sequential bus IDs). Always create a mapping from bus numbers to 0-indexed array positions:
# Create mapping: bus_number -> 0-indexed position
bus_num_to_idx = {int(buses[i, 0]): i for i in range(n_bus)}
# Use mapping for branch endpoints
f = bus_num_to_idx[int(br[0])] # NOT br[0] - 1
t = bus_num_to_idx[int(br[1])]
Susceptance Matrix (B)
Build from branch reactances using bus number mapping:
# Run: scripts/build_b_matrix.py
# Or inline:
bus_num_to_idx = {int(buses[i, 0]): i for i in range(n_bus)}
B = np.zeros((n_bus, n_bus))
for br in branches:
f = bus_num_to_idx[int(br[0])] # Map bus number to index
t = bus_num_to_idx[int(br[1])]
x = br[3] # Reactance
if x != 0:
b = 1.0 / x
B[f, f] += b
B[t, t] += b
B[f, t] -= b
B[t, f] -= b
Power Balance Equation
At each bus: Pg - Pd = B[i, :] @ θ
Where:
- Pg = generation at bus (pu)
- Pd = load at bus (pu)
- θ = vector of bus angles (radians)
Slack Bus
One bus must have θ = 0 as reference. Find slack bus (type=3):
slack_idx = None
for i in range(n_bus):
if buses[i, 1] == 3:
slack_idx = i
break
constraints.append(theta[slack_idx] == 0)
Line Flow Calculation
Flow on branch from bus f to bus t (use bus number mapping):
f = bus_num_to_idx[int(br[0])]
t = bus_num_to_idx[int(br[1])]
b = 1.0 / br[3] # Susceptance = 1/X
flow_pu = b * (theta[f] - theta[t])
flow_MW = flow_pu * baseMVA
Line Loading Percentage
loading_pct = abs(flow_MW) / rating_MW * 100
Where rating_MW = branch[5] (RATE_A column).
Branch Susceptances for Constraints
Store susceptances when building constraints:
branch_susceptances = []
for br in branches:
x = br[3]
b = 1.0 / x if x != 0 else 0
branch_susceptances.append(b)
Line Flow Limits (for OPF)
Enforce thermal limits as linear constraints:
# |flow| \x3C= rating → -rating \x3C= flow \x3C= rating
flow = b * (theta[f] - theta[t]) * baseMVA
constraints.append(flow \x3C= rate)
constraints.append(flow >= -rate)
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install grid-dispatch-operator-dc-power-flow - 安装完成后,直接呼叫该 Skill 的名称或使用
/grid-dispatch-operator-dc-power-flow触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
dc-power-flow 是什么?
DC power flow analysis for power systems. Use when computing power flows using DC approximation, building susceptance matrices, calculating line flows and lo... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 114 次。
如何安装 dc-power-flow?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install grid-dispatch-operator-dc-power-flow」即可一键安装,无需额外配置。
dc-power-flow 是免费的吗?
是的,dc-power-flow 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
dc-power-flow 支持哪些平台?
dc-power-flow 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 dc-power-flow?
由 wu-uk(@wu-uk)开发并维护,当前版本 v0.1.0。