Skip to content

Class: GeneratorRecord

Generator (DER) data record for DistOPF. Covers PV and diesel generation types. Power values are in per-unit (base s_base).

URI: distopf:GeneratorRecord

 classDiagram
    class GeneratorRecord
    click GeneratorRecord href "../GeneratorRecord/"
      GeneratorRecord : control_variable

      GeneratorRecord : generator_type

      GeneratorRecord : id

      GeneratorRecord : name

      GeneratorRecord : pa

      GeneratorRecord : pb

      GeneratorRecord : pc

      GeneratorRecord : phases

      GeneratorRecord : qa

      GeneratorRecord : qa_max

      GeneratorRecord : qa_min

      GeneratorRecord : qb

      GeneratorRecord : qb_max

      GeneratorRecord : qb_min

      GeneratorRecord : qc

      GeneratorRecord : qc_max

      GeneratorRecord : qc_min

      GeneratorRecord : s_base

      GeneratorRecord : sa_max

      GeneratorRecord : sb_max

      GeneratorRecord : sc_max

Slots

Name Cardinality and Range Description Inheritance
id 1
Integer
Generator integer index (one-based row number) direct
name 0..1
String
Generator name label (matches the name of the bus where the generator connect... direct
generator_type 0..1
String
Generator technology type (for example, pv or diesel) direct
pa 0..1
Float
Phase A active power output in per-unit (base s_base) direct
pb 0..1
Float
Phase B active power output in per-unit (base s_base) direct
pc 0..1
Float
Phase C active power output in per-unit (base s_base) direct
qa 0..1
Float
Phase A reactive power output in per-unit (base s_base) direct
qb 0..1
Float
Phase B reactive power output in per-unit (base s_base) direct
qc 0..1
Float
Phase C reactive power output in per-unit (base s_base) direct
sa_max 0..1
Float
Phase A apparent power rating in per-unit (base s_base) direct
sb_max 0..1
Float
Phase B apparent power rating in per-unit (base s_base) direct
sc_max 0..1
Float
Phase C apparent power rating in per-unit (base s_base) direct
phases 0..1
String
Active phases for this generator (abc, a, b, c, ab, ac, bc) direct
qa_max 0..1
Float
Phase A maximum reactive power in per-unit (base s_base) direct
qb_max 0..1
Float
Phase B maximum reactive power in per-unit (base s_base) direct
qc_max 0..1
Float
Phase C maximum reactive power in per-unit (base s_base) direct
qa_min 0..1
Float
Phase A minimum reactive power in per-unit (base s_base) direct
qb_min 0..1
Float
Phase B minimum reactive power in per-unit (base s_base) direct
qc_min 0..1
Float
Phase C minimum reactive power in per-unit (base s_base) direct
control_variable 0..1
String
OPF control variable (P = active power, Q = reactive power, PQ = both, empty ... direct
s_base 0..1
Float
Apparent power base, in volt-amperes direct

Usages

used by used in type used
DistopfModel generator_records range GeneratorRecord

Comments

  • DistOPF GeneratorRecord maps to different CIM classes depending on generator_type. Import: generator_type=diesel creates a SynchronousMachine; any other value (including the pv+bess type mentioned in older docs, which is not separately handled) creates a PhotoVoltaicUnit behind a PowerElectronicsConnection. Export: only PowerElectronicsConnection objects without an attached BatteryUnit are exported as GeneratorRecord (generator_type is always written as "pv"); SynchronousMachine objects are not currently exported at all.

TODOs

  • Export never emits generator_type="diesel" — there is no exporter registered for cim.SynchronousMachine, so diesel generators created on import cannot be round-tripped back out.

Identifier and Mapping Information

Schema Source

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

Mappings

Mapping Type Mapped Value
self distopf:GeneratorRecord
native distopf:GeneratorRecord
related cim:PowerElectronicsConnection, cim:SynchronousMachine

LinkML Source

Direct

name: GeneratorRecord
description: Generator (DER) data record for DistOPF. Covers PV and diesel generation
  types. Power values are in per-unit (base s_base).
todos:
- Export never emits generator_type="diesel" — there is no exporter registered for
  cim.SynchronousMachine, so diesel generators created on import cannot be round-tripped
  back out.
comments:
- 'DistOPF GeneratorRecord maps to different CIM classes depending on generator_type.
  Import: generator_type=diesel creates a SynchronousMachine; any other value (including
  the pv+bess type mentioned in older docs, which is not separately handled) creates
  a PhotoVoltaicUnit behind a PowerElectronicsConnection. Export: only PowerElectronicsConnection
  objects without an attached BatteryUnit are exported as GeneratorRecord (generator_type
  is always written as "pv"); SynchronousMachine objects are not currently exported
  at all.'
from_schema: https://gridappsd.org/cimhub/distopf
related_mappings:
- cim:PowerElectronicsConnection
- cim:SynchronousMachine
attributes:
  id:
    name: id
    annotations:
      order:
        tag: order
        value: 1
      value_type:
        tag: value_type
        value: int
      separator:
        tag: separator
        value: ','
    description: Generator integer index (one-based row number).
    comments:
    - 'DistOPF-only: a row index used to key this record, not a CIM identity. On import
      the generator''s ConnectivityNode is looked up by name (falling back to this
      index against the bus table); the CIM objects are identified by their own mRID.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    identifier: true
    domain_of:
    - BusRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: integer
    required: true
  name:
    name: name
    annotations:
      order:
        tag: order
        value: 2
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Generator name label (matches the name of the bus where the generator
      connects).
    comments:
    - 'Import: name is used both as the CIM object''s own name (PowerElectronicsConnection.name
      / SynchronousMachine.name) and to look up the connected ConnectivityNode by
      name. Export: name = the connected ConnectivityNode''s name (falls back to the
      PowerElectronicsConnection''s own name if no terminal node is resolvable).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    exact_mappings:
    - cim:IdentifiedObject.name
    ifabsent: string("")
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    range: string
    required: false
  generator_type:
    name: generator_type
    annotations:
      order:
        tag: order
        value: 3
      native_name:
        tag: native_name
        value: type
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Generator technology type (for example, pv or diesel).
    comments:
    - 'Import: selects which CIM class is constructed  "diesel" creates a SynchronousMachine,
      any other value creates a PhotoVoltaicUnit + PowerElectronicsConnection. Export:
      always written as "pv" (see the class-level comment on the SynchronousMachine
      export gap).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    related_mappings:
    - cim:PowerElectronicsConnection
    - cim:SynchronousMachine
    rank: 1000
    ifabsent: string("pv")
    domain_of:
    - GeneratorRecord
    range: string
    required: false
  pa:
    name: pa
    annotations:
      order:
        tag: order
        value: 4
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A active power output in per-unit (base s_base).
    comments:
    - 'Import: pa, pb, and pc are summed and converted to a single PowerElectronicsConnection.p
      or SynchronousMachine.p = (pa + pb + pc) × s_base (per-unit to watts); there
      is no per-phase p on import. Export: pa = PowerElectronicsConnection.p / s_base;
      pb and pc are left at zero (see the pb/pc comments).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    close_mappings:
    - cim:PowerElectronicsConnection.p
    - cim:SynchronousMachine.p
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  pb:
    name: pb
    annotations:
      order:
        tag: order
        value: 5
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B active power output in per-unit (base s_base).
    todos:
    - Export never writes pb; per-phase active power is not split back out from the
      CIM object's single p value.
    comments:
    - 'Import: included in the pa+pb+pc sum written to PowerElectronicsConnection.p
      / SynchronousMachine.p (see the pa comment). Export: not populated  the exporter
      only reads back the total power into pa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  pc:
    name: pc
    annotations:
      order:
        tag: order
        value: 6
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C active power output in per-unit (base s_base).
    todos:
    - Export never writes pc; per-phase active power is not split back out from the
      CIM object's single p value.
    comments:
    - 'Import: included in the pa+pb+pc sum written to PowerElectronicsConnection.p
      / SynchronousMachine.p (see the pa comment). Export: not populated  the exporter
      only reads back the total power into pa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qa:
    name: qa
    annotations:
      order:
        tag: order
        value: 7
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A reactive power output in per-unit (base s_base).
    comments:
    - 'Import: qa, qb, and qc are summed and converted to a single PowerElectronicsConnection.q
      or SynchronousMachine.q = (qa + qb + qc) × s_base (per-unit to vars); there
      is no per-phase q on import. Export: qa = PowerElectronicsConnection.q / s_base;
      qb and qc are left at zero (see the qb/qc comments).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    close_mappings:
    - cim:PowerElectronicsConnection.q
    - cim:SynchronousMachine.q
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    - CapacitorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qb:
    name: qb
    annotations:
      order:
        tag: order
        value: 8
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B reactive power output in per-unit (base s_base).
    todos:
    - Export never writes qb; per-phase reactive power is not split back out from
      the CIM object's single q value.
    comments:
    - 'Import: included in the qa+qb+qc sum written to PowerElectronicsConnection.q
      / SynchronousMachine.q (see the qa comment). Export: not populated  the exporter
      only reads back the total reactive power into qa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    - CapacitorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qc:
    name: qc
    annotations:
      order:
        tag: order
        value: 9
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C reactive power output in per-unit (base s_base).
    todos:
    - Export never writes qc; per-phase reactive power is not split back out from
      the CIM object's single q value.
    comments:
    - 'Import: included in the qa+qb+qc sum written to PowerElectronicsConnection.q
      / SynchronousMachine.q (see the qa comment). Export: not populated  the exporter
      only reads back the total reactive power into qa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    - CapacitorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  sa_max:
    name: sa_max
    annotations:
      order:
        tag: order
        value: 10
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A apparent power rating in per-unit (base s_base).
    comments:
    - 'Import: sa_max, sb_max, and sc_max are summed and converted to a single PowerElectronicsConnection.ratedS
      or SynchronousMachine.ratedS = (sa_max + sb_max + sc_max) × s_base (per-unit
      to volt-amperes). Export: sa_max = ratedS / s_base; sb_max and sc_max are left
      at zero (see the sb_max/sc_max comments).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    close_mappings:
    - cim:PowerElectronicsConnection.ratedS
    - cim:SynchronousMachine.ratedS
    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: 11
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B apparent power rating in per-unit (base s_base).
    todos:
    - Export never writes sb_max; per-phase rating is not split back out from the
      CIM object's single ratedS value.
    comments:
    - 'Import: included in the sa_max+sb_max+sc_max sum written to ratedS (see the
      sa_max comment). Export: not populated  the exporter only reads back the total
      rating into sa_max.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    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: 12
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C apparent power rating in per-unit (base s_base).
    todos:
    - Export never writes sc_max; per-phase rating is not split back out from the
      CIM object's single ratedS value.
    comments:
    - 'Import: included in the sa_max+sb_max+sc_max sum written to ratedS (see the
      sa_max comment). Export: not populated  the exporter only reads back the total
      rating into sa_max.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: float(0.0)
    domain_of:
    - BranchRecord
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  phases:
    name: phases
    annotations:
      order:
        tag: order
        value: 13
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Active phases for this generator (abc, a, b, c, ab, ac, bc).
    todos:
    - Export does not inspect PowerElectronicsConnectionPhase children, so a single-phase
      or split-phase generator always exports as "abc".
    comments:
    - 'Not used on import (the importer always creates a single three-phase connection).
      Export: always written as "abc"; the exporter does not inspect PowerElectronicsConnectionPhase
      children to detect single- or split-phase generators.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: string("abc")
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: string
    required: false
  qa_max:
    name: qa_max
    annotations:
      order:
        tag: order
        value: 14
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A maximum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power ceiling on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power upper bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qb_max:
    name: qb_max
    annotations:
      order:
        tag: order
        value: 15
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B maximum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power ceiling on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power upper bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qc_max:
    name: qc_max
    annotations:
      order:
        tag: order
        value: 16
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C maximum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power ceiling on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power upper bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qa_min:
    name: qa_min
    annotations:
      order:
        tag: order
        value: 17
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A minimum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power floor on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power lower bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qb_min:
    name: qb_min
    annotations:
      order:
        tag: order
        value: 18
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B minimum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power floor on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power lower bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qc_min:
    name: qc_min
    annotations:
      order:
        tag: order
        value: 19
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C minimum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power floor on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power lower bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  control_variable:
    name: control_variable
    annotations:
      order:
        tag: order
        value: 20
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: OPF control variable (P = active power, Q = reactive power, PQ =
      both, empty = fixed).
    comments:
    - 'DistOPF-only (N/A): OPF solver hint for which setpoints are dispatchable; not
      read or written by the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: string("PQ")
    domain_of:
    - GeneratorRecord
    - BatteryRecord
    range: string
    required: false
  s_base:
    name: s_base
    annotations:
      order:
        tag: order
        value: 21
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 0
      separator:
        tag: separator
        value: ''
    description: Apparent power base, in volt-amperes.
    todos:
    - Export hard-codes s_base = 1e6 rather than resolving the actual base used elsewhere
      in the network (see _get_s_base_for_bus in converters.py).
    comments:
    - DistOPF-only scaling constant used to convert the per-unit pa/pb/pc, qa/qb/qc,
      and sa_max/sb_max/sc_max fields to and from CIM's SI-unit power values; not
      itself stored on the CIM object. The importer always uses 1e6 VA (1 MVA) as
      the base regardless of this field's value on export.
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: float(1000000.0)
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: VA

Induced

name: GeneratorRecord
description: Generator (DER) data record for DistOPF. Covers PV and diesel generation
  types. Power values are in per-unit (base s_base).
todos:
- Export never emits generator_type="diesel" — there is no exporter registered for
  cim.SynchronousMachine, so diesel generators created on import cannot be round-tripped
  back out.
comments:
- 'DistOPF GeneratorRecord maps to different CIM classes depending on generator_type.
  Import: generator_type=diesel creates a SynchronousMachine; any other value (including
  the pv+bess type mentioned in older docs, which is not separately handled) creates
  a PhotoVoltaicUnit behind a PowerElectronicsConnection. Export: only PowerElectronicsConnection
  objects without an attached BatteryUnit are exported as GeneratorRecord (generator_type
  is always written as "pv"); SynchronousMachine objects are not currently exported
  at all.'
from_schema: https://gridappsd.org/cimhub/distopf
related_mappings:
- cim:PowerElectronicsConnection
- cim:SynchronousMachine
attributes:
  id:
    name: id
    annotations:
      order:
        tag: order
        value: 1
      value_type:
        tag: value_type
        value: int
      separator:
        tag: separator
        value: ','
    description: Generator integer index (one-based row number).
    comments:
    - 'DistOPF-only: a row index used to key this record, not a CIM identity. On import
      the generator''s ConnectivityNode is looked up by name (falling back to this
      index against the bus table); the CIM objects are identified by their own mRID.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    identifier: true
    owner: GeneratorRecord
    domain_of:
    - BusRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: integer
    required: true
  name:
    name: name
    annotations:
      order:
        tag: order
        value: 2
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Generator name label (matches the name of the bus where the generator
      connects).
    comments:
    - 'Import: name is used both as the CIM object''s own name (PowerElectronicsConnection.name
      / SynchronousMachine.name) and to look up the connected ConnectivityNode by
      name. Export: name = the connected ConnectivityNode''s name (falls back to the
      PowerElectronicsConnection''s own name if no terminal node is resolvable).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    exact_mappings:
    - cim:IdentifiedObject.name
    ifabsent: string("")
    owner: GeneratorRecord
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    range: string
    required: false
  generator_type:
    name: generator_type
    annotations:
      order:
        tag: order
        value: 3
      native_name:
        tag: native_name
        value: type
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Generator technology type (for example, pv or diesel).
    comments:
    - 'Import: selects which CIM class is constructed  "diesel" creates a SynchronousMachine,
      any other value creates a PhotoVoltaicUnit + PowerElectronicsConnection. Export:
      always written as "pv" (see the class-level comment on the SynchronousMachine
      export gap).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    related_mappings:
    - cim:PowerElectronicsConnection
    - cim:SynchronousMachine
    rank: 1000
    ifabsent: string("pv")
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: string
    required: false
  pa:
    name: pa
    annotations:
      order:
        tag: order
        value: 4
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A active power output in per-unit (base s_base).
    comments:
    - 'Import: pa, pb, and pc are summed and converted to a single PowerElectronicsConnection.p
      or SynchronousMachine.p = (pa + pb + pc) × s_base (per-unit to watts); there
      is no per-phase p on import. Export: pa = PowerElectronicsConnection.p / s_base;
      pb and pc are left at zero (see the pb/pc comments).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    close_mappings:
    - cim:PowerElectronicsConnection.p
    - cim:SynchronousMachine.p
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  pb:
    name: pb
    annotations:
      order:
        tag: order
        value: 5
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B active power output in per-unit (base s_base).
    todos:
    - Export never writes pb; per-phase active power is not split back out from the
      CIM object's single p value.
    comments:
    - 'Import: included in the pa+pb+pc sum written to PowerElectronicsConnection.p
      / SynchronousMachine.p (see the pa comment). Export: not populated  the exporter
      only reads back the total power into pa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  pc:
    name: pc
    annotations:
      order:
        tag: order
        value: 6
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C active power output in per-unit (base s_base).
    todos:
    - Export never writes pc; per-phase active power is not split back out from the
      CIM object's single p value.
    comments:
    - 'Import: included in the pa+pb+pc sum written to PowerElectronicsConnection.p
      / SynchronousMachine.p (see the pa comment). Export: not populated  the exporter
      only reads back the total power into pa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qa:
    name: qa
    annotations:
      order:
        tag: order
        value: 7
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A reactive power output in per-unit (base s_base).
    comments:
    - 'Import: qa, qb, and qc are summed and converted to a single PowerElectronicsConnection.q
      or SynchronousMachine.q = (qa + qb + qc) × s_base (per-unit to vars); there
      is no per-phase q on import. Export: qa = PowerElectronicsConnection.q / s_base;
      qb and qc are left at zero (see the qb/qc comments).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    close_mappings:
    - cim:PowerElectronicsConnection.q
    - cim:SynchronousMachine.q
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    - CapacitorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qb:
    name: qb
    annotations:
      order:
        tag: order
        value: 8
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B reactive power output in per-unit (base s_base).
    todos:
    - Export never writes qb; per-phase reactive power is not split back out from
      the CIM object's single q value.
    comments:
    - 'Import: included in the qa+qb+qc sum written to PowerElectronicsConnection.q
      / SynchronousMachine.q (see the qa comment). Export: not populated  the exporter
      only reads back the total reactive power into qa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    - CapacitorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qc:
    name: qc
    annotations:
      order:
        tag: order
        value: 9
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C reactive power output in per-unit (base s_base).
    todos:
    - Export never writes qc; per-phase reactive power is not split back out from
      the CIM object's single q value.
    comments:
    - 'Import: included in the qa+qb+qc sum written to PowerElectronicsConnection.q
      / SynchronousMachine.q (see the qa comment). Export: not populated  the exporter
      only reads back the total reactive power into qa.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    - CapacitorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  sa_max:
    name: sa_max
    annotations:
      order:
        tag: order
        value: 10
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A apparent power rating in per-unit (base s_base).
    comments:
    - 'Import: sa_max, sb_max, and sc_max are summed and converted to a single PowerElectronicsConnection.ratedS
      or SynchronousMachine.ratedS = (sa_max + sb_max + sc_max) × s_base (per-unit
      to volt-amperes). Export: sa_max = ratedS / s_base; sb_max and sc_max are left
      at zero (see the sb_max/sc_max comments).'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    close_mappings:
    - cim:PowerElectronicsConnection.ratedS
    - cim:SynchronousMachine.ratedS
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - BranchRecord
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  sb_max:
    name: sb_max
    annotations:
      order:
        tag: order
        value: 11
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B apparent power rating in per-unit (base s_base).
    todos:
    - Export never writes sb_max; per-phase rating is not split back out from the
      CIM object's single ratedS value.
    comments:
    - 'Import: included in the sa_max+sb_max+sc_max sum written to ratedS (see the
      sa_max comment). Export: not populated  the exporter only reads back the total
      rating into sa_max.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - BranchRecord
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  sc_max:
    name: sc_max
    annotations:
      order:
        tag: order
        value: 12
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C apparent power rating in per-unit (base s_base).
    todos:
    - Export never writes sc_max; per-phase rating is not split back out from the
      CIM object's single ratedS value.
    comments:
    - 'Import: included in the sa_max+sb_max+sc_max sum written to ratedS (see the
      sa_max comment). Export: not populated  the exporter only reads back the total
      rating into sa_max.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - BranchRecord
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  phases:
    name: phases
    annotations:
      order:
        tag: order
        value: 13
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: Active phases for this generator (abc, a, b, c, ab, ac, bc).
    todos:
    - Export does not inspect PowerElectronicsConnectionPhase children, so a single-phase
      or split-phase generator always exports as "abc".
    comments:
    - 'Not used on import (the importer always creates a single three-phase connection).
      Export: always written as "abc"; the exporter does not inspect PowerElectronicsConnectionPhase
      children to detect single- or split-phase generators.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: string("abc")
    owner: GeneratorRecord
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    - CapacitorRecord
    - BatteryRecord
    - RegulatorRecord
    range: string
    required: false
  qa_max:
    name: qa_max
    annotations:
      order:
        tag: order
        value: 14
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A maximum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power ceiling on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power upper bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qb_max:
    name: qb_max
    annotations:
      order:
        tag: order
        value: 15
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B maximum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power ceiling on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power upper bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qc_max:
    name: qc_max
    annotations:
      order:
        tag: order
        value: 16
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C maximum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power ceiling on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power upper bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qa_min:
    name: qa_min
    annotations:
      order:
        tag: order
        value: 17
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase A minimum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power floor on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power lower bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qb_min:
    name: qb_min
    annotations:
      order:
        tag: order
        value: 18
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase B minimum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power floor on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power lower bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  qc_min:
    name: qc_min
    annotations:
      order:
        tag: order
        value: 19
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 6
      separator:
        tag: separator
        value: ','
    description: Phase C minimum reactive power in per-unit (base s_base).
    todos:
    - No CIM equivalent for a per-phase reactive power floor on PowerElectronicsConnection/SynchronousMachine;
      requires a CIM extension to roundtrip.
    comments:
    - 'DistOPF-only (N/A): OPF reactive power lower bound; not read or written by
      the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: float(0.0)
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: pu
  control_variable:
    name: control_variable
    annotations:
      order:
        tag: order
        value: 20
      value_type:
        tag: value_type
        value: string
      quote:
        tag: quote
        value: false
      separator:
        tag: separator
        value: ','
    description: OPF control variable (P = active power, Q = reactive power, PQ =
      both, empty = fixed).
    comments:
    - 'DistOPF-only (N/A): OPF solver hint for which setpoints are dispatchable; not
      read or written by the CIM converters.'
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    rank: 1000
    ifabsent: string("PQ")
    owner: GeneratorRecord
    domain_of:
    - GeneratorRecord
    - BatteryRecord
    range: string
    required: false
  s_base:
    name: s_base
    annotations:
      order:
        tag: order
        value: 21
      value_type:
        tag: value_type
        value: float
      precision:
        tag: precision
        value: 0
      separator:
        tag: separator
        value: ''
    description: Apparent power base, in volt-amperes.
    todos:
    - Export hard-codes s_base = 1e6 rather than resolving the actual base used elsewhere
      in the network (see _get_s_base_for_bus in converters.py).
    comments:
    - DistOPF-only scaling constant used to convert the per-unit pa/pb/pc, qa/qb/qc,
      and sa_max/sb_max/sc_max fields to and from CIM's SI-unit power values; not
      itself stored on the CIM object. The importer always uses 1e6 VA (1 MVA) as
      the base regardless of this field's value on export.
    from_schema: https://gridappsd.org/cimhub/distopf/classes/generator
    ifabsent: float(1000000.0)
    owner: GeneratorRecord
    domain_of:
    - BusRecord
    - BranchRecord
    - GeneratorRecord
    range: float
    required: false
    unit:
      ucum_code: VA