Class: BranchRecord¶
Branch data record for DistOPF. A single record type represents lines, switches, and transformers, distinguished by the branch_type field.
Impedances raa..rcc and xaa..xcc are the upper-triangle elements of the 3x3 symmetric impedance matrix, in per-unit (base z_base).
URI: distopf:BranchRecord
classDiagram
class BranchRecord
click BranchRecord href "../BranchRecord/"
BranchRecord : branch_type
BranchRecord : fb
BranchRecord : from_name
BranchRecord : length
BranchRecord : name
BranchRecord : phases
BranchRecord : raa
BranchRecord : rab
BranchRecord : rac
BranchRecord : rbb
BranchRecord : rbc
BranchRecord : rcc
BranchRecord : s_base
BranchRecord : sa_max
BranchRecord : sb_max
BranchRecord : sc_max
BranchRecord : status
BranchRecord : tb
BranchRecord : to_name
BranchRecord : v_ln_base
BranchRecord : xaa
BranchRecord : xab
BranchRecord : xac
BranchRecord : xbb
BranchRecord : xbc
BranchRecord : xcc
BranchRecord : z_base
Slots¶
| Name | Cardinality and Range | Description | Inheritance |
|---|---|---|---|
| fb | 1 Integer |
From-bus integer index | direct |
| tb | 1 Integer |
To-bus integer index | direct |
| from_name | 0..1 String |
From-bus name label (the ConnectivityNode name) | direct |
| to_name | 0..1 String |
To-bus name label (the ConnectivityNode name) | direct |
| raa | 0..1 Float |
Resistance matrix element R_aa in per-unit (base z_base) | direct |
| rab | 0..1 Float |
Resistance matrix element R_ab in per-unit (base z_base) | direct |
| rac | 0..1 Float |
Resistance matrix element R_ac in per-unit (base z_base) | direct |
| rbb | 0..1 Float |
Resistance matrix element R_bb in per-unit (base z_base) | direct |
| rbc | 0..1 Float |
Resistance matrix element R_bc in per-unit (base z_base) | direct |
| rcc | 0..1 Float |
Resistance matrix element R_cc in per-unit (base z_base) | direct |
| xaa | 0..1 Float |
Reactance matrix element X_aa in per-unit (base z_base) | direct |
| xab | 0..1 Float |
Reactance matrix element X_ab in per-unit (base z_base) | direct |
| xac | 0..1 Float |
Reactance matrix element X_ac in per-unit (base z_base) | direct |
| xbb | 0..1 Float |
Reactance matrix element X_bb in per-unit (base z_base) | direct |
| xbc | 0..1 Float |
Reactance matrix element X_bc in per-unit (base z_base) | direct |
| xcc | 0..1 Float |
Reactance matrix element X_cc in per-unit (base z_base) | direct |
| branch_type | 0..1 String |
Branch element type (line, switch, or transformer) | direct |
| name | 1 String |
Branch name label; the unique identifier for the branch within the network | direct |
| status | 0..1 String |
Switch status (CLOSED, OPEN, or empty for non-switching elements) | direct |
| s_base | 0..1 Float |
Apparent power base, in volt-amperes | direct |
| v_ln_base | 0..1 Float |
Line-to-neutral base voltage, in volts | direct |
| z_base | 0..1 Float |
Impedance base in ohms (z_base = v_ln_base² / s_base) | direct |
| phases | 0..1 String |
Active phases for this branch (abc, a, b, c, ab, ac, bc) | direct |
| sa_max | 0..1 Float |
Phase A apparent power limit in per-unit (base s_base) | direct |
| sb_max | 0..1 Float |
Phase B apparent power limit in per-unit (base s_base) | direct |
| sc_max | 0..1 Float |
Phase C apparent power limit in per-unit (base s_base) | direct |
| length | 0..1 Float |
Branch length in meters (0 | direct |
Usages¶
| used by | used in | type | used |
|---|---|---|---|
| DistopfModel | branch_records | range | BranchRecord |
Comments¶
- DistOPF BranchRecord maps to one of three CIM classes depending on branch_type. Import: branch_type=line creates an ACLineSegment, branch_type=switch creates a LoadBreakSwitch, and branch_type=transformer creates a PowerTransformer with two PowerTransformerEnd objects. Export: ACLineSegment, LoadBreakSwitch/Breaker/Fuse/Recloser, and PowerTransformer (via either PowerTransformerEnd pairs or TransformerTank) each have their own registered exporter that produces one or more BranchRecords.
Identifier and Mapping Information¶
Schema Source¶
- from schema: https://gridappsd.org/cimhub/distopf
Mappings¶
| Mapping Type | Mapped Value |
|---|---|
| self | distopf:BranchRecord |
| native | distopf:BranchRecord |
| related | cim:ACLineSegment, cim:LoadBreakSwitch, cim:PowerTransformer |
LinkML Source¶
Direct¶
name: BranchRecord
description: 'Branch data record for DistOPF. A single record type represents lines,
switches, and transformers, distinguished by the branch_type field.
Impedances raa..rcc and xaa..xcc are the upper-triangle elements of the 3x3 symmetric
impedance matrix, in per-unit (base z_base).'
comments:
- 'DistOPF BranchRecord maps to one of three CIM classes depending on branch_type.
Import: branch_type=line creates an ACLineSegment, branch_type=switch creates a
LoadBreakSwitch, and branch_type=transformer creates a PowerTransformer with two
PowerTransformerEnd objects. Export: ACLineSegment, LoadBreakSwitch/Breaker/Fuse/Recloser,
and PowerTransformer (via either PowerTransformerEnd pairs or TransformerTank) each
have their own registered exporter that produces one or more BranchRecords.'
from_schema: https://gridappsd.org/cimhub/distopf
related_mappings:
- cim:ACLineSegment
- cim:LoadBreakSwitch
- cim:PowerTransformer
attributes:
fb:
name: fb
annotations:
order:
tag: order
value: 1
value_type:
tag: value_type
value: int
separator:
tag: separator
value: ','
description: From-bus integer index.
comments:
- 'Structural mapping via traversal: fb identifies the ConnectivityNode connected
to the equipment''s first Terminal (Terminals[0]). Import resolves it through
the bus-index map built while importing BusRecords; export assigns/looks up
a fresh 1-based index for that ConnectivityNode.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:Terminal.ConnectivityNode
rank: 1000
domain_of:
- BranchRecord
- RegulatorRecord
range: integer
required: true
tb:
name: tb
annotations:
order:
tag: order
value: 2
value_type:
tag: value_type
value: int
separator:
tag: separator
value: ','
description: To-bus integer index.
comments:
- Same traversal as fb, via the equipment's second Terminal (Terminals[1]). See
the fb comment.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:Terminal.ConnectivityNode
rank: 1000
domain_of:
- BranchRecord
- RegulatorRecord
range: integer
required: true
from_name:
name: from_name
annotations:
order:
tag: order
value: 3
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: From-bus name label (the ConnectivityNode name).
comments:
- 'Not used on import (the from-bus is resolved by fb index, not by name). Export:
from_name = the from-side ConnectivityNode''s name.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: string("")
domain_of:
- BranchRecord
- RegulatorRecord
range: string
required: false
to_name:
name: to_name
annotations:
order:
tag: order
value: 4
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: To-bus name label (the ConnectivityNode name).
comments:
- 'Not used on import (the to-bus is resolved by tb index, not by name). Export:
to_name = the to-side ConnectivityNode''s name.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: string("")
domain_of:
- BranchRecord
- RegulatorRecord
range: string
required: false
raa:
name: raa
annotations:
order:
tag: order
value: 5
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_aa in per-unit (base z_base).
comments:
- 'Import: for lines, ACLineSegment.r = raa × z_base (per-unit to ohms; raa is
the only diagonal term read, and is applied as the segment''s single r, not
a per-phase value). For transformers, the same raa × z_base is written to PowerTransformerEnd.r
on end 1 only. Export: for lines, raa = PhaseImpedanceData(row=1,col=1).r ×
length / z_base when a PerLengthPhaseImpedance with PhaseImpedanceData is present;
otherwise raa falls back to ACLineSegment.r / z_base (also copied into rbb/rcc).
For switches and transformers, raa is a synthesized value (see the rbb/rcc and
class-level comments), not a genuine per-phase resistance.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.r
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rab:
name: rab
annotations:
order:
tag: order
value: 6
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_ab in per-unit (base z_base).
todos:
- Import never populates off-diagonal mutual-coupling terms — a PerLengthPhaseImpedance
is not constructed from rab/rac/rbc, so phase coupling is lost on import even
when the source CSV provides it.
comments:
- 'Not used on import (only the diagonal raa is read; see the raa comment). Export:
rab = PhaseImpedanceData(row=2,col=1).r × length / z_base when a PerLengthPhaseImpedance
with PhaseImpedanceData is present; otherwise left at zero (the direct ACLineSegment.r/x
fallback only populates the diagonal).'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rac:
name: rac
annotations:
order:
tag: order
value: 7
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_ac in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rab (row=3,col=1): see the rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rbb:
name: rbb
annotations:
order:
tag: order
value: 8
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_bb in per-unit (base z_base).
comments:
- 'Not used on import (only raa is read and applied to the whole segment/end;
see the raa comment). Export: rbb = PhaseImpedanceData(row=2,col=2).r × length
/ z_base when available, or the same fallback ACLineSegment.r / z_base value
as raa/rcc otherwise. For switches, rbb is a fixed small epsilon (1e-8 / z_base)
representing near-zero impedance, equal across all three diagonal terms.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.r
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rbc:
name: rbc
annotations:
order:
tag: order
value: 9
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_bc in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rab (row=3,col=2): see the rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rcc:
name: rcc
annotations:
order:
tag: order
value: 10
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_cc in per-unit (base z_base).
comments:
- 'Same import/export behavior as rbb (row=3,col=3): see the rbb comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.r
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xaa:
name: xaa
annotations:
order:
tag: order
value: 11
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_aa in per-unit (base z_base).
comments:
- 'Same import/export formula as raa (reactance instead of resistance): ACLineSegment.x
/ PowerTransformerEnd.x ↔ xaa. See the raa comment for the full derivation.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.x
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xab:
name: xab
annotations:
order:
tag: order
value: 12
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_ab in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rab (reactance instead of resistance): see the
rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xac:
name: xac
annotations:
order:
tag: order
value: 13
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_ac in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rac (reactance instead of resistance): see the
rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xbb:
name: xbb
annotations:
order:
tag: order
value: 14
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_bb in per-unit (base z_base).
comments:
- 'Same import/export behavior as rbb (reactance instead of resistance): see the
rbb comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.x
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xbc:
name: xbc
annotations:
order:
tag: order
value: 15
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_bc in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rbc (reactance instead of resistance): see the
rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xcc:
name: xcc
annotations:
order:
tag: order
value: 16
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_cc in per-unit (base z_base).
comments:
- 'Same import/export behavior as rcc (reactance instead of resistance): see the
rbb comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.x
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
branch_type:
name: branch_type
annotations:
order:
tag: order
value: 17
native_name:
tag: native_name
value: type
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Branch element type (line, switch, or transformer).
comments:
- 'Import: branch_type selects the 3-way class dispatch described in the class-level
comment. Export: branch_type is set from the registered exporter that produced
the record — "line" for ACLineSegment, "switch" for LoadBreakSwitch/Breaker/Fuse/Recloser,
"transformer" for PowerTransformer.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:ACLineSegment
- cim:LoadBreakSwitch
- cim:PowerTransformer
rank: 1000
ifabsent: string("line")
domain_of:
- BranchRecord
range: string
required: false
name:
name: name
annotations:
order:
tag: order
value: 18
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Branch name label; the unique identifier for the branch within the
network.
comments:
- 'Direct name mapping in both directions: name ↔ ConductingEquipment.name (of
the ACLineSegment, switch, or PowerTransformer).'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
exact_mappings:
- cim:IdentifiedObject.name
identifier: true
domain_of:
- BusRecord
- BranchRecord
- GeneratorRecord
- CapacitorRecord
- BatteryRecord
range: string
required: true
status:
name: status
annotations:
order:
tag: order
value: 19
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Switch status (CLOSED, OPEN, or empty for non-switching elements).
comments:
- 'Only meaningful for branch_type=switch. Import: status=OPEN sets Switch.open=true
(and normalOpen=true); anything else leaves the switch closed. Export: status
= "OPEN" when Switch.open is true, "CLOSED" otherwise; left empty ("") for lines
and transformers.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:Switch.open
rank: 1000
ifabsent: string("")
domain_of:
- BranchRecord
range: string
required: false
s_base:
name: s_base
annotations:
order:
tag: order
value: 20
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 1
separator:
tag: separator
value: ','
description: Apparent power base, in volt-amperes.
todos:
- Export hard-codes s_base = 1e6 rather than resolving a per-branch base voltage/power
combination (see the s_base todo in bus.yaml/generator.yaml for the same pattern
elsewhere).
comments:
- DistOPF-only scaling constant used to convert the per-unit impedance fields
(raa..xcc, sa_max..sc_max) to and from CIM's SI-unit ohm/watt values; not itself
stored on the CIM object. Both import and export currently use a fixed 1e6 VA
(1 MVA) base regardless of this field's value.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
ifabsent: float(1000000.0)
domain_of:
- BusRecord
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: VA
v_ln_base:
name: v_ln_base
annotations:
order:
tag: order
value: 21
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 10
separator:
tag: separator
value: ','
description: Line-to-neutral base voltage, in volts.
comments:
- DistOPF-only scaling constant, resolved from the branch's endpoint BaseVoltage
on both import and export; not itself an attribute of ACLineSegment/Switch/PowerTransformer.
See the v_ln_base todo in bus.yaml for the import/export √3 convention mismatch
that also affects this field's derivation.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
ifabsent: float(0.0)
domain_of:
- BusRecord
- BranchRecord
range: float
required: false
unit:
ucum_code: V
z_base:
name: z_base
annotations:
order:
tag: order
value: 22
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 12
separator:
tag: separator
value: ','
description: Impedance base in ohms (z_base = v_ln_base² / s_base).
comments:
- DistOPF-only derived constant (v_ln_base² / s_base) used to convert raa..xcc
between per-unit and ohms; not itself stored on the CIM object.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: Ohm
phases:
name: phases
annotations:
order:
tag: order
value: 23
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Active phases for this branch (abc, a, b, c, ab, ac, bc).
todos:
- Export does not inspect per-phase children, so a single-phase or split-phase
branch always exports as "abc".
comments:
- 'Not used on import (the importer always creates a full three-phase segment).
Export: always written as "abc"; the exporter does not inspect ACLineSegmentPhase/SwitchPhase
children to detect single- or split-phase branches.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:ACLineSegmentPhase.phase
ifabsent: string("abc")
domain_of:
- BusRecord
- BranchRecord
- GeneratorRecord
- CapacitorRecord
- BatteryRecord
- RegulatorRecord
range: string
required: false
sa_max:
name: sa_max
annotations:
order:
tag: order
value: 24
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 6
separator:
tag: separator
value: ','
description: Phase A apparent power limit in per-unit (base s_base).
todos:
- No CIM equivalent is wired up. The closest CIM concept (a CurrentLimit/OperationalLimit
on the segment or switch) is not traversed on import or export.
comments:
- 'DistOPF-only (N/A): OPF thermal/apparent-power constraint; not read or written
by the CIM converters.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: pu
sb_max:
name: sb_max
annotations:
order:
tag: order
value: 25
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 6
separator:
tag: separator
value: ','
description: Phase B apparent power limit in per-unit (base s_base).
todos:
- Same missing OperationalLimit traversal as sa_max — see the sa_max todo.
comments:
- 'DistOPF-only (N/A): OPF thermal/apparent-power constraint; not read or written
by the CIM converters.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: pu
sc_max:
name: sc_max
annotations:
order:
tag: order
value: 26
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 6
separator:
tag: separator
value: ','
description: Phase C apparent power limit in per-unit (base s_base).
todos:
- Same missing OperationalLimit traversal as sa_max — see the sa_max todo.
comments:
- 'DistOPF-only (N/A): OPF thermal/apparent-power constraint; not read or written
by the CIM converters.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: pu
length:
name: length
annotations:
order:
tag: order
value: 27
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 4
separator:
tag: separator
value: ''
description: Branch length in meters (0.0 for non-line elements).
comments:
- 'Only meaningful for branch_type=line. Direct mapping in both directions: length
↔ ACLineSegment.length (a Conductor attribute), used together with z_base to
convert the per-unit raa..xcc matrix elements to and from per-length impedance.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
exact_mappings:
- cim:Conductor.length
rank: 1000
ifabsent: float(0.0)
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: m
Induced¶
name: BranchRecord
description: 'Branch data record for DistOPF. A single record type represents lines,
switches, and transformers, distinguished by the branch_type field.
Impedances raa..rcc and xaa..xcc are the upper-triangle elements of the 3x3 symmetric
impedance matrix, in per-unit (base z_base).'
comments:
- 'DistOPF BranchRecord maps to one of three CIM classes depending on branch_type.
Import: branch_type=line creates an ACLineSegment, branch_type=switch creates a
LoadBreakSwitch, and branch_type=transformer creates a PowerTransformer with two
PowerTransformerEnd objects. Export: ACLineSegment, LoadBreakSwitch/Breaker/Fuse/Recloser,
and PowerTransformer (via either PowerTransformerEnd pairs or TransformerTank) each
have their own registered exporter that produces one or more BranchRecords.'
from_schema: https://gridappsd.org/cimhub/distopf
related_mappings:
- cim:ACLineSegment
- cim:LoadBreakSwitch
- cim:PowerTransformer
attributes:
fb:
name: fb
annotations:
order:
tag: order
value: 1
value_type:
tag: value_type
value: int
separator:
tag: separator
value: ','
description: From-bus integer index.
comments:
- 'Structural mapping via traversal: fb identifies the ConnectivityNode connected
to the equipment''s first Terminal (Terminals[0]). Import resolves it through
the bus-index map built while importing BusRecords; export assigns/looks up
a fresh 1-based index for that ConnectivityNode.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:Terminal.ConnectivityNode
rank: 1000
owner: BranchRecord
domain_of:
- BranchRecord
- RegulatorRecord
range: integer
required: true
tb:
name: tb
annotations:
order:
tag: order
value: 2
value_type:
tag: value_type
value: int
separator:
tag: separator
value: ','
description: To-bus integer index.
comments:
- Same traversal as fb, via the equipment's second Terminal (Terminals[1]). See
the fb comment.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:Terminal.ConnectivityNode
rank: 1000
owner: BranchRecord
domain_of:
- BranchRecord
- RegulatorRecord
range: integer
required: true
from_name:
name: from_name
annotations:
order:
tag: order
value: 3
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: From-bus name label (the ConnectivityNode name).
comments:
- 'Not used on import (the from-bus is resolved by fb index, not by name). Export:
from_name = the from-side ConnectivityNode''s name.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: string("")
owner: BranchRecord
domain_of:
- BranchRecord
- RegulatorRecord
range: string
required: false
to_name:
name: to_name
annotations:
order:
tag: order
value: 4
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: To-bus name label (the ConnectivityNode name).
comments:
- 'Not used on import (the to-bus is resolved by tb index, not by name). Export:
to_name = the to-side ConnectivityNode''s name.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: string("")
owner: BranchRecord
domain_of:
- BranchRecord
- RegulatorRecord
range: string
required: false
raa:
name: raa
annotations:
order:
tag: order
value: 5
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_aa in per-unit (base z_base).
comments:
- 'Import: for lines, ACLineSegment.r = raa × z_base (per-unit to ohms; raa is
the only diagonal term read, and is applied as the segment''s single r, not
a per-phase value). For transformers, the same raa × z_base is written to PowerTransformerEnd.r
on end 1 only. Export: for lines, raa = PhaseImpedanceData(row=1,col=1).r ×
length / z_base when a PerLengthPhaseImpedance with PhaseImpedanceData is present;
otherwise raa falls back to ACLineSegment.r / z_base (also copied into rbb/rcc).
For switches and transformers, raa is a synthesized value (see the rbb/rcc and
class-level comments), not a genuine per-phase resistance.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.r
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rab:
name: rab
annotations:
order:
tag: order
value: 6
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_ab in per-unit (base z_base).
todos:
- Import never populates off-diagonal mutual-coupling terms — a PerLengthPhaseImpedance
is not constructed from rab/rac/rbc, so phase coupling is lost on import even
when the source CSV provides it.
comments:
- 'Not used on import (only the diagonal raa is read; see the raa comment). Export:
rab = PhaseImpedanceData(row=2,col=1).r × length / z_base when a PerLengthPhaseImpedance
with PhaseImpedanceData is present; otherwise left at zero (the direct ACLineSegment.r/x
fallback only populates the diagonal).'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rac:
name: rac
annotations:
order:
tag: order
value: 7
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_ac in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rab (row=3,col=1): see the rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rbb:
name: rbb
annotations:
order:
tag: order
value: 8
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_bb in per-unit (base z_base).
comments:
- 'Not used on import (only raa is read and applied to the whole segment/end;
see the raa comment). Export: rbb = PhaseImpedanceData(row=2,col=2).r × length
/ z_base when available, or the same fallback ACLineSegment.r / z_base value
as raa/rcc otherwise. For switches, rbb is a fixed small epsilon (1e-8 / z_base)
representing near-zero impedance, equal across all three diagonal terms.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.r
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rbc:
name: rbc
annotations:
order:
tag: order
value: 9
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_bc in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rab (row=3,col=2): see the rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
rcc:
name: rcc
annotations:
order:
tag: order
value: 10
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Resistance matrix element R_cc in per-unit (base z_base).
comments:
- 'Same import/export behavior as rbb (row=3,col=3): see the rbb comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.r
- cim:PerLengthPhaseImpedanceData.r
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xaa:
name: xaa
annotations:
order:
tag: order
value: 11
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_aa in per-unit (base z_base).
comments:
- 'Same import/export formula as raa (reactance instead of resistance): ACLineSegment.x
/ PowerTransformerEnd.x ↔ xaa. See the raa comment for the full derivation.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.x
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xab:
name: xab
annotations:
order:
tag: order
value: 12
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_ab in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rab (reactance instead of resistance): see the
rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xac:
name: xac
annotations:
order:
tag: order
value: 13
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_ac in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rac (reactance instead of resistance): see the
rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xbb:
name: xbb
annotations:
order:
tag: order
value: 14
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_bb in per-unit (base z_base).
comments:
- 'Same import/export behavior as rbb (reactance instead of resistance): see the
rbb comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.x
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xbc:
name: xbc
annotations:
order:
tag: order
value: 15
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_bc in per-unit (base z_base).
todos:
- Same off-diagonal import gap as rab — see the rab todo.
comments:
- 'Same import/export behavior as rbc (reactance instead of resistance): see the
rab comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
xcc:
name: xcc
annotations:
order:
tag: order
value: 16
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 16
separator:
tag: separator
value: ','
description: Reactance matrix element X_cc in per-unit (base z_base).
comments:
- 'Same import/export behavior as rcc (reactance instead of resistance): see the
rbb comment.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:ACLineSegment.x
- cim:PerLengthPhaseImpedanceData.x
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: pu
branch_type:
name: branch_type
annotations:
order:
tag: order
value: 17
native_name:
tag: native_name
value: type
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Branch element type (line, switch, or transformer).
comments:
- 'Import: branch_type selects the 3-way class dispatch described in the class-level
comment. Export: branch_type is set from the registered exporter that produced
the record — "line" for ACLineSegment, "switch" for LoadBreakSwitch/Breaker/Fuse/Recloser,
"transformer" for PowerTransformer.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:ACLineSegment
- cim:LoadBreakSwitch
- cim:PowerTransformer
rank: 1000
ifabsent: string("line")
owner: BranchRecord
domain_of:
- BranchRecord
range: string
required: false
name:
name: name
annotations:
order:
tag: order
value: 18
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Branch name label; the unique identifier for the branch within the
network.
comments:
- 'Direct name mapping in both directions: name ↔ ConductingEquipment.name (of
the ACLineSegment, switch, or PowerTransformer).'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
exact_mappings:
- cim:IdentifiedObject.name
identifier: true
owner: BranchRecord
domain_of:
- BusRecord
- BranchRecord
- GeneratorRecord
- CapacitorRecord
- BatteryRecord
range: string
required: true
status:
name: status
annotations:
order:
tag: order
value: 19
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Switch status (CLOSED, OPEN, or empty for non-switching elements).
comments:
- 'Only meaningful for branch_type=switch. Import: status=OPEN sets Switch.open=true
(and normalOpen=true); anything else leaves the switch closed. Export: status
= "OPEN" when Switch.open is true, "CLOSED" otherwise; left empty ("") for lines
and transformers.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
close_mappings:
- cim:Switch.open
rank: 1000
ifabsent: string("")
owner: BranchRecord
domain_of:
- BranchRecord
range: string
required: false
s_base:
name: s_base
annotations:
order:
tag: order
value: 20
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 1
separator:
tag: separator
value: ','
description: Apparent power base, in volt-amperes.
todos:
- Export hard-codes s_base = 1e6 rather than resolving a per-branch base voltage/power
combination (see the s_base todo in bus.yaml/generator.yaml for the same pattern
elsewhere).
comments:
- DistOPF-only scaling constant used to convert the per-unit impedance fields
(raa..xcc, sa_max..sc_max) to and from CIM's SI-unit ohm/watt values; not itself
stored on the CIM object. Both import and export currently use a fixed 1e6 VA
(1 MVA) base regardless of this field's value.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
ifabsent: float(1000000.0)
owner: BranchRecord
domain_of:
- BusRecord
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: VA
v_ln_base:
name: v_ln_base
annotations:
order:
tag: order
value: 21
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 10
separator:
tag: separator
value: ','
description: Line-to-neutral base voltage, in volts.
comments:
- DistOPF-only scaling constant, resolved from the branch's endpoint BaseVoltage
on both import and export; not itself an attribute of ACLineSegment/Switch/PowerTransformer.
See the v_ln_base todo in bus.yaml for the import/export √3 convention mismatch
that also affects this field's derivation.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BusRecord
- BranchRecord
range: float
required: false
unit:
ucum_code: V
z_base:
name: z_base
annotations:
order:
tag: order
value: 22
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 12
separator:
tag: separator
value: ','
description: Impedance base in ohms (z_base = v_ln_base² / s_base).
comments:
- DistOPF-only derived constant (v_ln_base² / s_base) used to convert raa..xcc
between per-unit and ohms; not itself stored on the CIM object.
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: Ohm
phases:
name: phases
annotations:
order:
tag: order
value: 23
value_type:
tag: value_type
value: string
quote:
tag: quote
value: false
separator:
tag: separator
value: ','
description: Active phases for this branch (abc, a, b, c, ab, ac, bc).
todos:
- Export does not inspect per-phase children, so a single-phase or split-phase
branch always exports as "abc".
comments:
- 'Not used on import (the importer always creates a full three-phase segment).
Export: always written as "abc"; the exporter does not inspect ACLineSegmentPhase/SwitchPhase
children to detect single- or split-phase branches.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
related_mappings:
- cim:ACLineSegmentPhase.phase
ifabsent: string("abc")
owner: BranchRecord
domain_of:
- BusRecord
- BranchRecord
- GeneratorRecord
- CapacitorRecord
- BatteryRecord
- RegulatorRecord
range: string
required: false
sa_max:
name: sa_max
annotations:
order:
tag: order
value: 24
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 6
separator:
tag: separator
value: ','
description: Phase A apparent power limit in per-unit (base s_base).
todos:
- No CIM equivalent is wired up. The closest CIM concept (a CurrentLimit/OperationalLimit
on the segment or switch) is not traversed on import or export.
comments:
- 'DistOPF-only (N/A): OPF thermal/apparent-power constraint; not read or written
by the CIM converters.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: pu
sb_max:
name: sb_max
annotations:
order:
tag: order
value: 25
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 6
separator:
tag: separator
value: ','
description: Phase B apparent power limit in per-unit (base s_base).
todos:
- Same missing OperationalLimit traversal as sa_max — see the sa_max todo.
comments:
- 'DistOPF-only (N/A): OPF thermal/apparent-power constraint; not read or written
by the CIM converters.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: pu
sc_max:
name: sc_max
annotations:
order:
tag: order
value: 26
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 6
separator:
tag: separator
value: ','
description: Phase C apparent power limit in per-unit (base s_base).
todos:
- Same missing OperationalLimit traversal as sa_max — see the sa_max todo.
comments:
- 'DistOPF-only (N/A): OPF thermal/apparent-power constraint; not read or written
by the CIM converters.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
- GeneratorRecord
range: float
required: false
unit:
ucum_code: pu
length:
name: length
annotations:
order:
tag: order
value: 27
value_type:
tag: value_type
value: float
precision:
tag: precision
value: 4
separator:
tag: separator
value: ''
description: Branch length in meters (0.0 for non-line elements).
comments:
- 'Only meaningful for branch_type=line. Direct mapping in both directions: length
↔ ACLineSegment.length (a Conductor attribute), used together with z_base to
convert the per-unit raa..xcc matrix elements to and from per-length impedance.'
from_schema: https://gridappsd.org/cimhub/distopf/classes/branch
exact_mappings:
- cim:Conductor.length
rank: 1000
ifabsent: float(0.0)
owner: BranchRecord
domain_of:
- BranchRecord
range: float
required: false
unit:
ucum_code: m