Overview
The REFA Workflow
REFA is structured around a hierarchy of objects. Each layer adds more context until a full project analysis is possible.
Environment OptionalObjects(Loading, StructureConfig)
│ | |
▼ ▼ |
LineDesign ─────────────┐ |
▼ ▼
Line ──► Project (Rebuild / ────────► Analysis
▲ ▲ Reconductoring /
Conductor ──────────────┘ | VoltageUpgrade /
| HVDC / Existing)
Economics ──────────────────────────┘
Layer 1 — Input Objects
Environment is an independent object holding attributes needed for all technical calculations. Some other necessary technical attributes are provided through objects (Loading, StructureConfig) or directly as attributes of hierarchically higher objects.
Economic attributes are provided in Economics to feed any type of project creation.
Layer 2 — LineDesign & Conductor
LineDesign appends an Environment to its other attributes defining the configuration of the corridor (length, spans, circuits, bundles). The LineDesign is independent of which Conductor will be strung.
Layer 3 — Line
Line pairs a LineDesign with a Conductor. All technical calculations (ampacity, sag, corona, losses, congestion) live here. You can build a Line with the constructor or with the + shorthand:
Layer 4 — Project
A project wraps one or more Line objects and an Economics object to produce net-present-value of cost estimates. Five project types are available:
| Class | Description |
|---|---|
Rebuild |
New conductors and new structures from the start |
Reconductoring |
New conductors on existing structures |
VoltageUpgrade |
Raise operating voltage; replace conductors and possibly structures |
HVDC |
HVDC line; replace conductors and possibly structures |
Existing |
Baseline — current line, no changes |
Projects can be constructed in two ways:
Layer 5 — Analysis
Analysis takes a list of projects and produces a side-by-side comparison for any cost metric.
refa = Analysis(project_list=[rebuild, recon, vu, hvdc, existing])
refa.total_costs_of_projects(time_horizon=40)
Feasibility Filtering
Before reporting costs, every project automatically filters out lines that fail technical constraints:
- Ampacity (
select_ampacity_feasible=True) — the conductor must carry the target current without exceeding its rated temperature, and the ampacity must not exceed 3× the target current (over-designed lines are excluded). - Sag (
select_sag_feasible=True) — the maximum sag must not exceedline_design.max_sag_mif set. - Corona (
select_corona_feasible=True) — the operating voltage must not exceed the corona inception voltage.
Any of these filters can be disabled:
AC vs. DC
Pass is_hvdc=True to any Line method to use DC-specific equations. The HVDC project sets this automatically for all its internal calculations.