Skip to content

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