Skip to content

Class: RegulatorRecord

Step voltage regulator data record for DistOPF. Tap positions are integer step counts (positive = raise, negative = lower).

Note: the id field is a synthetic identifier not present in the CSV. The reader constructs it as "{fb}" (for example, "1_2")._

URI: distopf:RegulatorRecord

 classDiagram
    class RegulatorRecord
    click RegulatorRecord href "../RegulatorRecord/"
      RegulatorRecord : fb

      RegulatorRecord : from_name

      RegulatorRecord : id

      RegulatorRecord : phases

      RegulatorRecord : tap_a

      RegulatorRecord : tap_b

      RegulatorRecord : tap_c

      RegulatorRecord : tb

      RegulatorRecord : to_name

Slots

Name Cardinality and Range Description Inheritance
id 1
String
Synthetic identifier constructed as "{fb}_{tb}" (for example, "1_2") direct
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
phases 0..1
String
Regulated phases (abc, a, b, c, ab, ac, bc) direct
tap_a 0..1
Float
Phase A tap position, in steps (0 direct
tap_b 0..1
Float
Phase B tap position, in steps (0 direct
tap_c 0..1
Float
Phase C tap position, in steps (0 direct

Usages

used by used in type used
DistopfModel regulator_records range RegulatorRecord

Comments

  • DistOPF RegulatorRecord maps to a CIM RatioTapChanger attached to a PowerTransformerEnd, on the PowerTransformer identified by the fb/tb bus pair. Import creates one RatioTapChanger per record, using tap_a as the tap position for all phases. Export groups the tap changers found on a transformer's from/to bus pair back into one record with per-phase tap positions.

Identifier and Mapping Information

Schema Source

  • from schema: https://gridappsd.org/cimhub/distopf

Mappings

Mapping Type Mapped Value
self distopf:RegulatorRecord
native distopf:RegulatorRecord
exact cim:RatioTapChanger

LinkML Source

Direct

name: RegulatorRecord
description: 'Step voltage regulator data record for DistOPF. Tap positions are integer
  step counts (positive = raise, negative = lower).

  Note: the `id` field is a synthetic identifier not present in the CSV. The reader
  constructs it as "{fb}_{tb}" (for example, "1_2").'
comments:
- DistOPF RegulatorRecord maps to a CIM RatioTapChanger attached to a PowerTransformerEnd,
  on the PowerTransformer identified by the fb/tb bus pair. Import creates one RatioTapChanger
  per record, using tap_a as the tap position for all phases. Export groups the tap
  changers found on a transformer's from/to bus pair back into one record with per-phase
  tap positions.
from_schema: https://gridappsd.org/cimhub/distopf
exact_mappings:
- cim:RatioTapChanger
attributes:
  id:
    name: id
    description: Synthetic identifier constructed as "{fb}_{tb}" (for example, "1_2").
      Not present in the CSV; generated by the reader.
    comments:
    - 'DistOPF-only: a synthetic key built from fb/tb, not a CIM identity. The CIM
      RatioTapChanger is identified by its own mRID and named "reg_{fb}_{tb}" on import.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    identifier: true
    domain_of:
    - BusRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: string
    required: true
  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: the transformer is found by searching PowerTransformer
      objects whose Terminals connect the ConnectivityNodes at bus indices fb and
      tb. Import: fb identifies the PowerTransformerEnd (endNumber 1) whose terminal
      the tap changer attaches near. Export: fb = the bus index of the first sorted
      PowerTransformerEnd''s ConnectivityNode.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    related_mappings:
    - cim:PowerTransformerEnd.Terminal
    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 (see the fb comment). Import: tb identifies the PowerTransformerEnd
      (endNumber 2) that the RatioTapChanger is actually attached to. Export: tb =
      the bus index of the second sorted PowerTransformerEnd''s ConnectivityNode.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    related_mappings:
    - cim:PowerTransformerEnd.Terminal
    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 transformer is located by fb/tb bus index, not by name).
      Export: from_name = the from-side ConnectivityNode''s name.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    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 transformer is located by fb/tb bus index, not by name).
      Export: to_name = the to-side ConnectivityNode''s name.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    ifabsent: string("")
    domain_of:
    - BranchRecord
    - RegulatorRecord
    range: string
    required: false
  phases:
    name: phases
    annotations:
      order:
        tag: order
        value: 5
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Regulated phases (abc, a, b, c, ab, ac, bc).
    todos:
    - Export always writes phases="abc" regardless of which single phase (if any)
      the source RatioTapChanger actually controls.
    comments:
    - 'Not used on import. Export: always written as "abc"; the exporter currently
      reports the record''s overall phase coverage rather than deriving it from which
      of tap_a/tap_b/tap_c are non-neutral.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    ifabsent: string("abc")
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: string
    required: false
  tap_a:
    name: tap_a
    annotations:
      order:
        tag: order
        value: 6
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A tap position, in steps (0.0 = neutral).
    comments:
    - 'Import: RatioTapChanger.step = tap_a directly (tap_a is used as the single
      representative tap position for the transformer end, regardless of phase; neutralStep
      is fixed at 0). Export: tap_a = step  neutralStep when the tap changer''s phase
      resolves to A (via TransformerEnd.phases, or by convention from the RatioTapChanger''s
      name); if no phase can be determined, the same tap position is written to tap_a,
      tap_b, and tap_c.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    close_mappings:
    - cim:RatioTapChanger.step
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - RegulatorRecord
    range: float
    required: false
  tap_b:
    name: tap_b
    annotations:
      order:
        tag: order
        value: 7
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B tap position, in steps (0.0 = neutral).
    todos:
    - Import does not read tap_b — a per-phase RatioTapChanger for phase B is never
      created from this field.
    comments:
    - 'Not used on import (only tap_a is read; see the tap_a comment). Export: tap_b
      = step  neutralStep when the tap changer''s phase resolves to B, following
      the same logic as tap_a.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - RegulatorRecord
    range: float
    required: false
  tap_c:
    name: tap_c
    annotations:
      order:
        tag: order
        value: 8
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ''
    description: Phase C tap position, in steps (0.0 = neutral).
    todos:
    - Import does not read tap_c — a per-phase RatioTapChanger for phase C is never
      created from this field.
    comments:
    - 'Not used on import (only tap_a is read; see the tap_a comment). Export: tap_c
      = step  neutralStep when the tap changer''s phase resolves to C, following
      the same logic as tap_a.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - RegulatorRecord
    range: float
    required: false

Induced

name: RegulatorRecord
description: 'Step voltage regulator data record for DistOPF. Tap positions are integer
  step counts (positive = raise, negative = lower).

  Note: the `id` field is a synthetic identifier not present in the CSV. The reader
  constructs it as "{fb}_{tb}" (for example, "1_2").'
comments:
- DistOPF RegulatorRecord maps to a CIM RatioTapChanger attached to a PowerTransformerEnd,
  on the PowerTransformer identified by the fb/tb bus pair. Import creates one RatioTapChanger
  per record, using tap_a as the tap position for all phases. Export groups the tap
  changers found on a transformer's from/to bus pair back into one record with per-phase
  tap positions.
from_schema: https://gridappsd.org/cimhub/distopf
exact_mappings:
- cim:RatioTapChanger
attributes:
  id:
    name: id
    description: Synthetic identifier constructed as "{fb}_{tb}" (for example, "1_2").
      Not present in the CSV; generated by the reader.
    comments:
    - 'DistOPF-only: a synthetic key built from fb/tb, not a CIM identity. The CIM
      RatioTapChanger is identified by its own mRID and named "reg_{fb}_{tb}" on import.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    identifier: true
    owner: RegulatorRecord
    domain_of:
    - BusRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: string
    required: true
  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: the transformer is found by searching PowerTransformer
      objects whose Terminals connect the ConnectivityNodes at bus indices fb and
      tb. Import: fb identifies the PowerTransformerEnd (endNumber 1) whose terminal
      the tap changer attaches near. Export: fb = the bus index of the first sorted
      PowerTransformerEnd''s ConnectivityNode.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    related_mappings:
    - cim:PowerTransformerEnd.Terminal
    owner: RegulatorRecord
    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 (see the fb comment). Import: tb identifies the PowerTransformerEnd
      (endNumber 2) that the RatioTapChanger is actually attached to. Export: tb =
      the bus index of the second sorted PowerTransformerEnd''s ConnectivityNode.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    related_mappings:
    - cim:PowerTransformerEnd.Terminal
    owner: RegulatorRecord
    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 transformer is located by fb/tb bus index, not by name).
      Export: from_name = the from-side ConnectivityNode''s name.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    ifabsent: string("")
    owner: RegulatorRecord
    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 transformer is located by fb/tb bus index, not by name).
      Export: to_name = the to-side ConnectivityNode''s name.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    ifabsent: string("")
    owner: RegulatorRecord
    domain_of:
    - BranchRecord
    - RegulatorRecord
    range: string
    required: false
  phases:
    name: phases
    annotations:
      order:
        tag: order
        value: 5
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Regulated phases (abc, a, b, c, ab, ac, bc).
    todos:
    - Export always writes phases="abc" regardless of which single phase (if any)
      the source RatioTapChanger actually controls.
    comments:
    - 'Not used on import. Export: always written as "abc"; the exporter currently
      reports the record''s overall phase coverage rather than deriving it from which
      of tap_a/tap_b/tap_c are non-neutral.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    ifabsent: string("abc")
    owner: RegulatorRecord
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: string
    required: false
  tap_a:
    name: tap_a
    annotations:
      order:
        tag: order
        value: 6
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A tap position, in steps (0.0 = neutral).
    comments:
    - 'Import: RatioTapChanger.step = tap_a directly (tap_a is used as the single
      representative tap position for the transformer end, regardless of phase; neutralStep
      is fixed at 0). Export: tap_a = step  neutralStep when the tap changer''s phase
      resolves to A (via TransformerEnd.phases, or by convention from the RatioTapChanger''s
      name); if no phase can be determined, the same tap position is written to tap_a,
      tap_b, and tap_c.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    close_mappings:
    - cim:RatioTapChanger.step
    rank: 1000
    ifabsent: float(0.0)
    owner: RegulatorRecord
    domain_of:
    - RegulatorRecord
    range: float
    required: false
  tap_b:
    name: tap_b
    annotations:
      order:
        tag: order
        value: 7
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B tap position, in steps (0.0 = neutral).
    todos:
    - Import does not read tap_b — a per-phase RatioTapChanger for phase B is never
      created from this field.
    comments:
    - 'Not used on import (only tap_a is read; see the tap_a comment). Export: tap_b
      = step  neutralStep when the tap changer''s phase resolves to B, following
      the same logic as tap_a.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    rank: 1000
    ifabsent: float(0.0)
    owner: RegulatorRecord
    domain_of:
    - RegulatorRecord
    range: float
    required: false
  tap_c:
    name: tap_c
    annotations:
      order:
        tag: order
        value: 8
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ''
    description: Phase C tap position, in steps (0.0 = neutral).
    todos:
    - Import does not read tap_c — a per-phase RatioTapChanger for phase C is never
      created from this field.
    comments:
    - 'Not used on import (only tap_a is read; see the tap_a comment). Export: tap_c
      = step  neutralStep when the tap changer''s phase resolves to C, following
      the same logic as tap_a.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/regulator
    rank: 1000
    ifabsent: float(0.0)
    owner: RegulatorRecord
    domain_of:
    - RegulatorRecord
    range: float
    required: false