altdss.EnergyMeter

Contents

altdss.EnergyMeter#

Module Contents#

Classes#

EnergyMeter

EnergyMeterBatch

EnergyMeterBatchProperties

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

EnergyMeterProperties

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

IEnergyMeter

API#

class altdss.EnergyMeter.EnergyMeter(api_util, ptr)#

Bases: altdss.DSSObj.DSSObj, altdss.CircuitElement.CircuitElementMixin, altdss.EnergyMeterExtras.EnergyMeterObjMixin, altdss.PCElement.ElementHasRegistersMixin

Action(value: Union[AnyStr, int, altdss.enums.EnergyMeterAction], flags: altdss.enums.SetterFlags = 0)#

{Clear (reset) | Save | Take | Zonedump | Allocate | Reduce}

(A)llocate = Allocate loads on the meter zone to match PeakCurrent. (C)lear = reset all registers to zero (R)educe = reduces zone by merging lines (see Set Keeplist & ReduceOption) (S)ave = saves the current register values to a file. File name is “MTR_metername.csv”. (T)ake = Takes a sample at present solution (Z)onedump = Dump names of elements in meter zone to a file File name is “Zone_metername.csv”.

DSS property name: Action, DSS property index: 3.

property AllocFactors: altdss.types.Float64Array#

Set the phase allocation factors for this meter.

Allocate(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Allocate)

BaseFreq: float#

‘property(…)’

Base Frequency for ratings.

DSS property name: BaseFreq, DSS property index: 25.

Branches: altdss.PDElement.PDElementBatch#

None

Accessor for all branches in the meter zone (internal SequenceList), in lexical order

CAIDI: float#

‘property(…)’

(Read only) Makes CAIDI result available via return on query (? energymeter.myMeter.CAIDI.

DSS property name: CAIDI, DSS property index: 23.

property CalcCurrent: altdss.types.Float64Array#

Set/get the magnitude of the real part of the Calculated Current (normally determined by solution) for the meter to force some behavior on Load Allocation

Clear(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Clear)

Close(terminal: int, phase: int) None#

Close the specified terminal and phase, if non-zero, or all conductors at the terminal.

Original COM help: https://opendss.epri.com/Close1.html

ComplexSeqCurrents() altdss.types.ComplexArray#

Complex double array of Sequence Currents for all conductors of all terminals of active circuit element.

Original COM help: https://opendss.epri.com/CplxSeqCurrents.html

ComplexSeqVoltages() altdss.types.ComplexArray#

Complex double array of Sequence Voltage for all terminals of active circuit element.

Original COM help: https://opendss.epri.com/CplxSeqVoltages1.html

Currents() altdss.types.ComplexArray#

Complex array of currents into each conductor of each terminal

Original COM help: https://opendss.epri.com/Currents1.html

CustInterrupts: float#

‘property(…)’

(Read only) Makes Total Customer Interrupts value result available via return on query (? energymeter.myMeter.CustInterrupts.

DSS property name: CustInterrupts, DSS property index: 24.

DisplayName: str#

‘property(…)’

Display name of the object (not necessarily unique)

Original COM help: https://opendss.epri.com/DisplayName.html

DoReliabilityCalc(assumeRestoration: bool) None#

Calculate reliability indices

Element: altdss.DSSObj.DSSObj#

‘property(…)’

Name (Full Object name) of element to which the monitor is connected.

DSS property name: Element, DSS property index: 1.

Element_str: str#

‘property(…)’

Name (Full Object name) of element to which the monitor is connected.

DSS property name: Element, DSS property index: 1.

Enabled: bool#

‘property(…)’

{Yes|No or True|False} Indicates whether this element is enabled.

DSS property name: Enabled, DSS property index: 26.

EndElements: altdss.CircuitElement.CircuitElementBatch#

None

Accessor for all branches in the meter zone.

FullName() str#
GUID() str#

Object’s GUID/UUID. Currently used only in the CIM-related methods.

Original COM help: https://opendss.epri.com/GUID.html

Handle() int#

Index of this element into the circuit’s element list.

Original COM help: https://opendss.epri.com/Handle.html

HasOCPDevice() bool#

Returns true if a recloser, relay, or fuse controlling the circuit element.

OCP = Overcurrent Protection

Original COM help: https://opendss.epri.com/HasOCPDevice.html

HasSwitchControl() bool#

Returns true if the element has a SwtControl attached.

Original COM help: https://opendss.epri.com/HasSwitchControl.html

HasVoltControl() bool#

Returns true if the element has a CapControl or RegControl attached.

Original COM help: https://opendss.epri.com/HasVoltControl.html

Int_Duration: float#

‘property(…)’

Average annual duration, in hr, of interruptions for head of the meter zone (source side of zone or feeder).

DSS property name: Int_Duration, DSS property index: 19.

Int_Rate: float#

‘property(…)’

Average number of annual interruptions for head of the meter zone (source side of zone or feeder).

DSS property name: Int_Rate, DSS property index: 18.

IsIsolated() bool#

Returns true if the element is isolated. Note that this only fetches the current value. See also the Topology interface.

IsOpen(terminal: int, phase: int) bool#

Returns true if the specified terminal and phase are open.

If the phase parameter is zero, returns if any conductor at the terminal is open.

Like(value: AnyStr)#

Make like another object, e.g.:

New Capacitor.C2 like=c1 …

DSS property name: Like, DSS property index: 27.

LineLosses: bool#

‘property(…)’

{Yes | No} Default is YES. Compute Line losses. If NO, then none of the losses are computed.

DSS property name: LineLosses, DSS property index: 12.

Loads() altdss.Load.LoadBatch#

Accessor for all loads in the meter zone (internal LoadList).

NOTE: this a snapshot of the loads; if the circuit is updated, the batch is not updated automatically, i.e., you need to get a new batch from this function.

LocalOnly: bool#

‘property(…)’

{Yes | No} Default is NO. If Yes, meter considers only the monitored element for EEN and UE calcs. Uses whole zone for losses.

DSS property name: LocalOnly, DSS property index: 9.

Losses: bool#

‘property(…)’

{Yes | No} Default is YES. Compute Zone losses. If NO, then no losses at all are computed.

DSS property name: Losses, DSS property index: 11.

Mask: altdss.types.Float64Array#

‘property(…)’

Mask for adding registers whenever all meters are totalized. Array of floating point numbers representing the multiplier to be used for summing each register from this meter. Default = (1, 1, 1, 1, … ). You only have to enter as many as are changed (positional). Useful when two meters monitor same energy, etc.

DSS property name: Mask, DSS property index: 10.

MaxCurrent(terminal: int) float#

Returns the maximum current (magnitude) at the specified terminal. Use -1 as terminal to get the value across all terminals.

property Name: str#
NodeOrder() altdss.types.Int32Array#

Array of integer containing the node numbers (representing phases, for example) for each conductor of each terminal.

Be sure to run a solution to initialize the values after the circuit is created or modified.

NodeRef() altdss.types.Int32Array#

Array of integers, a copy of the internal NodeRef of the CktElement.

Be sure to run a solution to initialize the values after the circuit is created or modified.

NumConductors() int#

Number of conductors per terminal

Original COM help: https://opendss.epri.com/NumConductors.html

NumControllers() int#

Number of controllers connected to this device.

Original COM help: https://opendss.epri.com/NumControls.html

NumEndElements() int#

Number of zone end elements in the active meter zone.

NumPhases() int#

Number of phases

Original COM help: https://opendss.epri.com/NumPhases.html

NumSections() int#

Number of feeder sections in this meter’s zone

NumTerminals() int#

Number of terminals in this circuit element

Original COM help: https://opendss.epri.com/NumTerminals.html

OCPDevice() Union[altdss.DSSObj.DSSObj, None]#

Returns (as a Python object) the OCP device controlling this element, if any.

OCPDeviceIndex() int#

Index into controller list of OCP Device controlling this circuit element

Original COM help: https://opendss.epri.com/OCPDevIndex.html

OCPDeviceType() dss.enums.OCPDevType#

Type of OCP controller device

Original COM help: https://opendss.epri.com/OCPDevType.html

Open(terminal: int, phase: int) None#

Open the specified terminal and phase, if non-zero, or all conductors at the terminal.

Original COM help: https://opendss.epri.com/Open1.html

Option: List[str]#

‘property(…)’

Enter a string ARRAY of any combination of the following. Options processed left-to-right:

(E)xcess : (default) UE/EEN is estimate of energy over capacity (T)otal : UE/EEN is total energy after capacity exceeded (R)adial : (default) Treats zone as a radial circuit (M)esh : Treats zone as meshed network (not radial). (C)ombined : (default) Load UE/EEN computed from combination of overload and undervoltage. (V)oltage : Load UE/EEN computed based on voltage only.

Example: option=(E, R)

DSS property name: Option, DSS property index: 4.

PeakCurrent: altdss.types.Float64Array#

‘property(…)’

ARRAY of current magnitudes representing the peak currents measured at this location for the load allocation function. Default is (400, 400, 400). Enter one current for each phase

DSS property name: PeakCurrent, DSS property index: 7.

PhaseLosses() altdss.types.ComplexArray#

Complex array of losses (kVA) by phase

Original COM help: https://opendss.epri.com/PhaseLosses.html

PhaseVoltageReport: bool#

‘property(…)’

{Yes | No} Default is NO. Report min, max, and average phase voltages for the zone and tabulate by voltage base. Demand Intervals must be turned on (Set Demand=true) and voltage bases must be defined for this property to take effect. Result is in a separate report file.

DSS property name: PhaseVoltageReport, DSS property index: 17.

Powers() altdss.types.ComplexArray#

Complex array of powers (kVA) into each conductor of each terminal

Original COM help: https://opendss.epri.com/Powers.html

Reduce(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Reduce)

RegisterNames() List[str]#

List of names of the energy meter registers for this element.

See also the enums EnergyMeterRegisters and GeneratorRegisters.

RegisterValues() altdss.types.Float64Array#

Array of values in this element’s energy meter registers.

Original COM help: https://opendss.epri.com/RegisterValues.html

RegistersDict() Dict[str, float]#

Convenience function: returns a dict of the element’s energy meter register names mapping to their current values.

Residuals() altdss.types.Float64Array#

Residual currents for each terminal: (magnitude, angle in degrees)

Original COM help: https://opendss.epri.com/Residuals.html

SAIDI: float#

‘property(…)’

(Read only) Makes SAIDI result available via return on query (? energymeter.myMeter.SAIDI.

DSS property name: SAIDI, DSS property index: 22.

SAIFI: float#

‘property(…)’

(Read only) Makes SAIFI result available via return on query (? energymeter.myMeter.SAIFI.

DSS property name: SAIFI, DSS property index: 20.

SAIFIkW: float#

‘property(…)’

(Read only) Makes SAIFIkW result available via return on query (? energymeter.myMeter.SAIFIkW.

DSS property name: SAIFIkW, DSS property index: 21.

Save(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Save)

Section(idx: int) altdss.EnergyMeterExtras.MeterSection#

Returns a wrapper for a single meter section

Sections() altdss.EnergyMeterExtras.MeterSections#

Returns a wrapper for meter sections

SeqCurrents() altdss.types.Float64Array#

Array of symmetrical component currents (magnitudes only) into each 3-phase terminal

Original COM help: https://opendss.epri.com/SeqCurrents.html

SeqLosses: bool#

‘property(…)’

{Yes | No} Default is YES. Compute Sequence losses in lines and segregate by line mode losses and zero mode losses.

DSS property name: SeqLosses, DSS property index: 14.

SeqPowers() altdss.types.ComplexArray#

Complex array of sequence powers (kW, kvar) into each 3-phase terminal

Original COM help: https://opendss.epri.com/SeqPowers.html

SeqVoltages() altdss.types.Float64Array#

Double array of symmetrical component voltages (magnitudes only) at each 3-phase terminal

Original COM help: https://opendss.epri.com/SeqVoltages1.html

Sequence: altdss.CircuitElement.CircuitElementBatch#

None

TakeSample(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.TakeSample)

Terminal: int#

‘property(…)’

Number of the terminal of the circuit element to which the monitor is connected. 1 or 2, typically.

DSS property name: Terminal, DSS property index: 2.

ThreePhaseLosses: bool#

‘property(…)’

{Yes | No} Default is YES. Compute Line losses and segregate by 3-phase and other (1- and 2-phase) line losses.

DSS property name: 3PhaseLosses, DSS property index: 15.

TotalCustomers() int#

Total Number of customers in this zone (downline from the EnergyMeter)

TotalPowers() altdss.types.ComplexArray#

Returns an array with the total powers (complex, kVA) at ALL terminals of the active circuit element.

Original COM help: https://opendss.epri.com/TotalPowers.html

VBaseLosses: bool#

‘property(…)’

{Yes | No} Default is YES. Compute losses and segregate by voltage base. If NO, then voltage-based tabulation is not reported.

DSS property name: VBaseLosses, DSS property index: 16.

Voltages() altdss.types.ComplexArray#

Complex array of voltages at terminals

Original COM help: https://opendss.epri.com/Voltages1.html

VoltagesMagAng() altdss.types.Float64Array#

Voltages at each conductor in magnitude, angle form as array of doubles.

Original COM help: https://opendss.epri.com/VoltagesMagAng.html

XfmrLosses: bool#

‘property(…)’

{Yes | No} Default is YES. Compute Transformer losses. If NO, transformers are ignored in loss calculations.

DSS property name: XfmrLosses, DSS property index: 13.

YPrim() altdss.types.ComplexArray#

YPrim matrix, column order, complex numbers

Original COM help: https://opendss.epri.com/Yprim.html

ZoneDump(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.ZoneDump)

ZoneList: List[str]#

‘property(…)’

ARRAY of full element names for this meter’s zone. Default is for meter to find it’s own zone. If specified, DSS uses this list instead. Can access the names in a single-column text file. Examples:

zonelist=[line.L1, transformer.T1, Line.L3] zonelist=(file=branchlist.txt)

DSS property name: ZoneList, DSS property index: 8.

ZonePCEs: altdss.PCElement.PCElementBatch#

None

Accessor for all zone end elements for this meter.

__hash__()#

Return hash(self).

__init__(api_util, ptr)#
__ne__(other)#

Return self!=value.

__repr__()#

Return repr(self).

begin_edit() None#

Marks a DSS object for editing

In the editing mode, some final side-effects of changing properties are postponed until end_edit is called. This side-effects can be somewhat costly, like updating the model parameters or internal matrices.

If you don’t have any performance constraint, you may edit each property individually without worrying about using begin_edit and end_edit. For convenience, those are emitted automatically when editing single properties outside an edit block.

edit(**kwargs: typing_extensions.Unpack[altdss.EnergyMeter.EnergyMeterProperties]) altdss.EnergyMeter.EnergyMeter#

Edit this EnergyMeter.

This method will try to open a new edit context (if not already open), edit the properties, and finalize the edit context. It can be seen as a shortcut to manually setting each property, or a Pythonic analogous (but extended) to the DSS Edit command.

Parameters:

**kwargs – Pass keyword arguments equivalent to the DSS properties of the object.

Returns:

Returns itself to allow call chaining.

end_edit(num_changes: int = 1) None#

Leaves the editing state of a DSS object

num_changes is required for a few classes to correctly match the official OpenDSS behavior and must be the number of properties modified in the current editing block. As of DSS C-API v0.13, this is only required for the Monitor class, when the Action property is used with the Process value.

kVAEmerg: float#

‘property(…)’

Upper limit on kVA load in the zone, Emergency configuration. Default is 0.0 (ignored). Overrides limits on individual lines for overload UE. With “LocalOnly=Yes” option, uses only load in metered branch.

DSS property name: kVAEmerg, DSS property index: 6.

kVANormal: float#

‘property(…)’

Upper limit on kVA load in the zone, Normal configuration. Default is 0.0 (ignored). Overrides limits on individual lines for overload EEN. With “LocalOnly=Yes” option, uses only load in metered branch.

DSS property name: kVANormal, DSS property index: 5.

to_json(options: Union[int, dss.enums.DSSJSONFlags] = 0)#

Returns an element’s data as a JSON-encoded string.

The options parameter contains bit-flags to toggle specific features.

By default (options = 0), only the properties explicitly set. The properties are returned in the order they are set in the input. As a reminder, OpenDSS is sensitive to the order of the properties.

The options bit-flags are available in the DSSJSONFlags enum. Values used by this function are:

  • Full: if set, all properties are returned, ordered by property index instead.

  • SkipRedundant: if used with Full, all properties except redundant and unused ones are returned.

  • EnumAsInt: enumerated properties are returned as integer values instead of strings.

  • FullNames: any element reference will use the full name ({class name}.{element name}) even if not required.

  • Pretty: more whitespace is used in the output for a “prettier” format.

  • SkipDSSClass: do not add the “DSSClass” property to the JSON objects.

NOT IMPLEMENTED YET:

  • State: include run-time state information

  • Debug: include debug information

Other bit-flags are reserved for future uses. Please use DSSJSONFlags enum to avoid potential conflicts.

(API Extension)

class altdss.EnergyMeter.EnergyMeterBatch(api_util, **kwargs)#

Bases: altdss.Batch.DSSBatch, altdss.CircuitElement.CircuitElementBatchMixin, altdss.EnergyMeterExtras.EnergyMeterBatchMixin

Action(value: Union[AnyStr, int, altdss.enums.EnergyMeterAction], flags: altdss.enums.SetterFlags = 0)#

{Clear (reset) | Save | Take | Zonedump | Allocate | Reduce}

(A)llocate = Allocate loads on the meter zone to match PeakCurrent. (C)lear = reset all registers to zero (R)educe = reduces zone by merging lines (see Set Keeplist & ReduceOption) (S)ave = saves the current register values to a file. File name is “MTR_metername.csv”. (T)ake = Takes a sample at present solution (Z)onedump = Dump names of elements in meter zone to a file File name is “Zone_metername.csv”.

DSS property name: Action, DSS property index: 3.

Allocate(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Allocate)

BaseFreq: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Base Frequency for ratings.

DSS property name: BaseFreq, DSS property index: 25.

CAIDI: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes CAIDI result available via return on query (? energymeter.myMeter.CAIDI.

DSS property name: CAIDI, DSS property index: 23.

Clear(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Clear)

ComplexSeqCurrents() altdss.types.ComplexArray#

Complex double array of Sequence Currents for all conductors of all terminals of active circuit element.

Original COM help: https://opendss.epri.com/CplxSeqCurrents.html

ComplexSeqVoltages() altdss.types.ComplexArray#

Complex double array of Sequence Voltage for all terminals of active circuit element.

Original COM help: https://opendss.epri.com/CplxSeqVoltages1.html

Currents() altdss.types.ComplexArray#

Complex array of currents into each conductor of each terminal

Original COM help: https://opendss.epri.com/Currents1.html

CurrentsMagAng() altdss.types.Float64Array#

Currents in magnitude, angle (degrees) format as a array of doubles.

Original COM help: https://opendss.epri.com/CurrentsMagAng.html

CustInterrupts: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes Total Customer Interrupts value result available via return on query (? energymeter.myMeter.CustInterrupts.

DSS property name: CustInterrupts, DSS property index: 24.

DoReliabilityCalc(assumeRestoration: bool) None#

Calculate reliability indices for each meter

Element: List[altdss.DSSObj.DSSObj]#

‘property(…)’

Name (Full Object name) of element to which the monitor is connected.

DSS property name: Element, DSS property index: 1.

Element_str: List[str]#

‘property(…)’

Name (Full Object name) of element to which the monitor is connected.

DSS property name: Element, DSS property index: 1.

Enabled: List[bool]#

‘property(…)’

{Yes|No or True|False} Indicates whether this element is enabled.

DSS property name: Enabled, DSS property index: 26.

FullName() List[str]#

Returns the full name (including object type) for all objects in this batch

GUID() List[str]#

GUID/UUID for each object. Currently used only in the CIM-related methods.

Original COM help: https://opendss.epri.com/GUID.html

Handle() altdss.types.Int32Array#

Index of each element into the circuit’s element list.

Original COM help: https://opendss.epri.com/Handle.html

HasOCPDevice() altdss.types.BoolArray#

For each element in the batch: returns true if a recloser, relay, or fuse controlling the circuit element.

OCP = Overcurrent Protection

Original COM help: https://opendss.epri.com/HasOCPDevice.html

HasSwitchControl() altdss.types.BoolArray#

For each element in the batch: returns true if the element has a SwtControl attached.

Original COM help: https://opendss.epri.com/HasSwitchControl.html

HasVoltControl() altdss.types.BoolArray#

For each element in the batch: returns true if the element has a CapControl or RegControl attached.

Original COM help: https://opendss.epri.com/HasVoltControl.html

Int_Duration: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Average annual duration, in hr, of interruptions for head of the meter zone (source side of zone or feeder).

DSS property name: Int_Duration, DSS property index: 19.

Int_Rate: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Average number of annual interruptions for head of the meter zone (source side of zone or feeder).

DSS property name: Int_Rate, DSS property index: 18.

IsIsolated() altdss.types.BoolArray#

For each element in the batch: returns true if the element is isolated. Note that this only fetches the current value. See also the Topology interface.

Like(value: AnyStr, flags: altdss.enums.SetterFlags = 0)#

Make like another object, e.g.:

New Capacitor.C2 like=c1 …

DSS property name: Like, DSS property index: 27.

LineLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Line losses. If NO, then none of the losses are computed.

DSS property name: LineLosses, DSS property index: 12.

LocalOnly: List[bool]#

‘property(…)’

{Yes | No} Default is NO. If Yes, meter considers only the monitored element for EEN and UE calcs. Uses whole zone for losses.

DSS property name: LocalOnly, DSS property index: 9.

Losses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Zone losses. If NO, then no losses at all are computed.

DSS property name: Losses, DSS property index: 11.

Mask: List[altdss.types.Float64Array]#

‘property(…)’

Mask for adding registers whenever all meters are totalized. Array of floating point numbers representing the multiplier to be used for summing each register from this meter. Default = (1, 1, 1, 1, … ). You only have to enter as many as are changed (positional). Useful when two meters monitor same energy, etc.

DSS property name: Mask, DSS property index: 10.

MaxCurrent(terminal: int) altdss.types.Float64Array#

Returns the maximum current (magnitude) at the specified terminal for each element in this batch. Use -1 as terminal to get the value across all terminals.

property Name: List[str]#
NumConductors() altdss.types.Int32Array#

Number of conductors per terminal for each element in the batch.

Original COM help: https://opendss.epri.com/NumConductors.html

NumControllers() altdss.types.Int32Array#

Number of controllers connected to each device in the batch.

Original COM help: https://opendss.epri.com/NumControls.html

NumEndElements() altdss.types.Int32Array#

Number of zone end elements in the active meter zone.

NumPhases() altdss.types.Int32Array#

Number of Phases for each element in this batch.

Original COM help: https://opendss.epri.com/NumPhases.html

NumSections() altdss.types.Int32Array#

Number of feeder sections in the zone of each meter

NumTerminals() altdss.types.Int32Array#

Number of terminals for each Circuit Element in the batch.

Original COM help: https://opendss.epri.com/NumTerminals.html

OCPDevice() List[Union[altdss.DSSObj.DSSObj, None]]#

Returns (as a list of Python objects) the OCP device controlling each element.

OCPDeviceIndex() altdss.types.Int32Array#

For each element in the batch: index into each controller list of the OCP Device controlling each circuit element

Original COM help: https://opendss.epri.com/OCPDevIndex.html

OCPDeviceType() List[dss.enums.OCPDevType]#

For each element in the batch: type of OCP controller device

Original COM help: https://opendss.epri.com/OCPDevType.html

Option: List[List[str]]#

‘property(…)’

Enter a string ARRAY of any combination of the following. Options processed left-to-right:

(E)xcess : (default) UE/EEN is estimate of energy over capacity (T)otal : UE/EEN is total energy after capacity exceeded (R)adial : (default) Treats zone as a radial circuit (M)esh : Treats zone as meshed network (not radial). (C)ombined : (default) Load UE/EEN computed from combination of overload and undervoltage. (V)oltage : Load UE/EEN computed based on voltage only.

Example: option=(E, R)

DSS property name: Option, DSS property index: 4.

PeakCurrent: List[altdss.types.Float64Array]#

‘property(…)’

ARRAY of current magnitudes representing the peak currents measured at this location for the load allocation function. Default is (400, 400, 400). Enter one current for each phase

DSS property name: PeakCurrent, DSS property index: 7.

PhaseLosses() altdss.types.ComplexArray#

Complex array of losses (kVA) by phase

Original COM help: https://opendss.epri.com/PhaseLosses.html

PhaseVoltageReport: List[bool]#

‘property(…)’

{Yes | No} Default is NO. Report min, max, and average phase voltages for the zone and tabulate by voltage base. Demand Intervals must be turned on (Set Demand=true) and voltage bases must be defined for this property to take effect. Result is in a separate report file.

DSS property name: PhaseVoltageReport, DSS property index: 17.

Powers() altdss.types.ComplexArray#

Complex array of powers (kVA) into each conductor of each terminal, of each element in the batch.

Original COM help: https://opendss.epri.com/Powers.html

Reduce(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Reduce)

SAIDI: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes SAIDI result available via return on query (? energymeter.myMeter.SAIDI.

DSS property name: SAIDI, DSS property index: 22.

SAIFI: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes SAIFI result available via return on query (? energymeter.myMeter.SAIFI.

DSS property name: SAIFI, DSS property index: 20.

SAIFIkW: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes SAIFIkW result available via return on query (? energymeter.myMeter.SAIFIkW.

DSS property name: SAIFIkW, DSS property index: 21.

Save(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Save)

SeqCurrents() altdss.types.Float64Array#

Array of symmetrical component currents (magnitudes only) into each 3-phase terminal of each element

Original COM help: https://opendss.epri.com/SeqCurrents.html

SeqLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Sequence losses in lines and segregate by line mode losses and zero mode losses.

DSS property name: SeqLosses, DSS property index: 14.

SeqPowers() altdss.types.ComplexArray#

Complex array of sequence powers (kW, kvar) into each 3-phase terminal of each element

Original COM help: https://opendss.epri.com/SeqPowers.html

SeqVoltages() altdss.types.Float64Array#

Double array of symmetrical component voltages (magnitudes only) at each 3-phase terminal

Original COM help: https://opendss.epri.com/SeqVoltages1.html

TakeSample(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.TakeSample)

Terminal: altdss.ArrayProxy.BatchInt32ArrayProxy#

‘property(…)’

Number of the terminal of the circuit element to which the monitor is connected. 1 or 2, typically.

DSS property name: Terminal, DSS property index: 2.

ThreePhaseLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Line losses and segregate by 3-phase and other (1- and 2-phase) line losses.

DSS property name: 3PhaseLosses, DSS property index: 15.

TotalCustomers() altdss.types.Int32Array#

Total Number of customers in this zone (downline from the EnergyMeter)

TotalPowers() altdss.types.ComplexArray#

Returns an array with the total powers (complex, kVA) at all terminals of the circuit elements in this batch.

The resulting array is equivalent to concatenating the TotalPowers for each element.

VBaseLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute losses and segregate by voltage base. If NO, then voltage-based tabulation is not reported.

DSS property name: VBaseLosses, DSS property index: 16.

Voltages() altdss.types.ComplexArray#

Complex array of voltages at terminals

Original COM help: https://opendss.epri.com/Voltages1.html

VoltagesMagAng() altdss.types.Float64Array#

Voltages at each conductor in magnitude, angle form as array of doubles.

Original COM help: https://opendss.epri.com/VoltagesMagAng.html

XfmrLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Transformer losses. If NO, transformers are ignored in loss calculations.

DSS property name: XfmrLosses, DSS property index: 13.

ZoneDump(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.ZoneDump)

ZoneList: List[List[str]]#

‘property(…)’

ARRAY of full element names for this meter’s zone. Default is for meter to find it’s own zone. If specified, DSS uses this list instead. Can access the names in a single-column text file. Examples:

zonelist=[line.L1, transformer.T1, Line.L3] zonelist=(file=branchlist.txt)

DSS property name: ZoneList, DSS property index: 8.

__call__()#
__getitem__(idx0) altdss.DSSObj.DSSObj#

Get element at 0-based index of the batch pointer array

__init__(api_util, **kwargs)#
__iter__()#
__len__() int#
batch(**kwargs) altdss.Batch.DSSBatch#

Filter a batch using integer or float DSS properties, returning a new batch.

For integers, provide a single value to match.

For floats, provide a range as a 2-valued tuple/list (min value, max value), or an exact value to value (not recommended).

Multiple properties can be listed to allow filtering various conditions.

Example for loads:

    # Create an initial batch using a regular expression
    abc_loads = altdss.Load.batch(re=r'^abc.*$') # a batch of all loads with names starting with "abc"
    abc_loads_filtered = abc_loads.batch(Class=1, Phases=1, kV=(0.1, 1.0))

    # Create an initial batch, already filtered
    abc_loads_filtered = altdss.Load.batch(re=r'^abc.*$', Class=1, Phases=1, kV=(0.1, 1.0))
begin_edit() None#

Marks for editing all DSS objects in the batch

In the editing mode, some final side-effects of changing properties are postponed until end_edit is called. This side-effects can be somewhat costly, like updating the model parameters or internal matrices.

If you don’t have any performance constraint, you may edit each property individually without worrying about using begin_edit and end_edit. For convenience, those are emitted automatically when editing single properties outside an edit block.

edit(**kwargs: typing_extensions.Unpack[altdss.EnergyMeter.EnergyMeterBatchProperties]) altdss.EnergyMeter.EnergyMeterBatch#

Edit this EnergyMeter batch.

This method will try to open a new edit context (if not already open), edit the properties, and finalize the edit context for objects in the batch. It can be seen as a shortcut to manually setting each property, or a Pythonic analogous (but extended) to the DSS BatchEdit command.

Parameters:

**kwargs – Pass keyword arguments equivalent to the DSS properties of the objects.

Returns:

Returns itself to allow call chaining.

end_edit(num_changes: int = 1) None#

Leaves the editing states of all DSS objects in the batch

num_changes is required for a few classes to correctly match the official OpenDSS behavior and must be the number of properties modified in the current editing block. As of DSS C-API v0.13, this is only required for the Monitor class, when the Action property is used with the Process value.

kVAEmerg: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Upper limit on kVA load in the zone, Emergency configuration. Default is 0.0 (ignored). Overrides limits on individual lines for overload UE. With “LocalOnly=Yes” option, uses only load in metered branch.

DSS property name: kVAEmerg, DSS property index: 6.

kVANormal: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Upper limit on kVA load in the zone, Normal configuration. Default is 0.0 (ignored). Overrides limits on individual lines for overload EEN. With “LocalOnly=Yes” option, uses only load in metered branch.

DSS property name: kVANormal, DSS property index: 5.

to_json(options: Union[int, dss.enums.DSSJSONFlags] = 0)#

Returns the data (as a list) of the elements in a batch as a JSON-encoded string.

The options parameter contains bit-flags to toggle specific features. See Obj_ToJSON (C-API) for more, or DSSObj.to_json in Python.

Additionally, the ExcludeDisabled flag can be used to excluded disabled elements from the output.

to_list()#
class altdss.EnergyMeter.EnergyMeterBatchProperties#

Bases: typing_extensions.TypedDict

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

Action: Union[AnyStr, int, altdss.enums.EnergyMeterAction]#

None

BaseFreq: Union[float, altdss.types.Float64Array]#

None

CAIDI: Union[float, altdss.types.Float64Array]#

None

CustInterrupts: Union[float, altdss.types.Float64Array]#

None

Element: Union[AnyStr, altdss.DSSObj.DSSObj, List[AnyStr], List[altdss.DSSObj.DSSObj]]#

None

Enabled: bool#

None

Int_Duration: Union[float, altdss.types.Float64Array]#

None

Int_Rate: Union[float, altdss.types.Float64Array]#

None

Like: AnyStr#

None

LineLosses: bool#

None

LocalOnly: bool#

None

Losses: bool#

None

Mask: altdss.types.Float64Array#

None

Option: List[AnyStr]#

None

PeakCurrent: altdss.types.Float64Array#

None

PhaseVoltageReport: bool#

None

SAIDI: Union[float, altdss.types.Float64Array]#

None

SAIFI: Union[float, altdss.types.Float64Array]#

None

SAIFIkW: Union[float, altdss.types.Float64Array]#

None

SeqLosses: bool#

None

Terminal: Union[int, altdss.types.Int32Array]#

None

ThreePhaseLosses: bool#

None

VBaseLosses: bool#

None

XfmrLosses: bool#

None

ZoneList: List[AnyStr]#

None

__contains__()#

True if the dictionary has the specified key, else False.

__delattr__()#

Implement delattr(self, name).

__delitem__()#

Delete self[key].

__dir__()#

Default dir() implementation.

__format__()#

Default object formatter.

Return str(self) if format_spec is empty. Raise TypeError otherwise.

__ge__()#

Return self>=value.

__getattribute__()#

Return getattr(self, name).

__getitem__()#

Return self[key].

__getstate__()#

Helper for pickle.

__gt__()#

Return self>value.

__init__()#

Initialize self. See help(type(self)) for accurate signature.

__ior__()#

Return self|=value.

__iter__()#

Implement iter(self).

__le__()#

Return self<=value.

__len__()#

Return len(self).

__lt__()#

Return self<value.

__ne__()#

Return self!=value.

__new__()#

Create and return a new object. See help(type) for accurate signature.

__or__()#

Return self|value.

__reduce__()#

Helper for pickle.

__reduce_ex__()#

Helper for pickle.

__repr__()#

Return repr(self).

__reversed__()#

Return a reverse iterator over the dict keys.

__ror__()#

Return value|self.

__setitem__()#

Set self[key] to value.

__sizeof__()#

D.sizeof() -> size of D in memory, in bytes

__str__()#

Return str(self).

__subclasshook__()#

Abstract classes can override this to customize issubclass().

This is invoked early on by abc.ABCMeta.subclasscheck(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).

clear()#

D.clear() -> None. Remove all items from D.

copy()#

D.copy() -> a shallow copy of D

get()#

Return the value for key if key is in the dictionary, else default.

items()#

D.items() -> a set-like object providing a view on D’s items

kVAEmerg: Union[float, altdss.types.Float64Array]#

None

kVANormal: Union[float, altdss.types.Float64Array]#

None

keys()#

D.keys() -> a set-like object providing a view on D’s keys

pop()#

D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem()#

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault()#

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update()#

D.update([E, ]**F) -> None. Update D from dict/iterable E and F. If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values()#

D.values() -> an object providing a view on D’s values

class altdss.EnergyMeter.EnergyMeterProperties#

Bases: typing_extensions.TypedDict

dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object’s (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2)

Action: Union[AnyStr, int, altdss.enums.EnergyMeterAction]#

None

BaseFreq: float#

None

CAIDI: float#

None

CustInterrupts: float#

None

Element: Union[AnyStr, altdss.DSSObj.DSSObj]#

None

Enabled: bool#

None

Int_Duration: float#

None

Int_Rate: float#

None

Like: AnyStr#

None

LineLosses: bool#

None

LocalOnly: bool#

None

Losses: bool#

None

Mask: altdss.types.Float64Array#

None

Option: List[AnyStr]#

None

PeakCurrent: altdss.types.Float64Array#

None

PhaseVoltageReport: bool#

None

SAIDI: float#

None

SAIFI: float#

None

SAIFIkW: float#

None

SeqLosses: bool#

None

Terminal: int#

None

ThreePhaseLosses: bool#

None

VBaseLosses: bool#

None

XfmrLosses: bool#

None

ZoneList: List[AnyStr]#

None

__contains__()#

True if the dictionary has the specified key, else False.

__delattr__()#

Implement delattr(self, name).

__delitem__()#

Delete self[key].

__dir__()#

Default dir() implementation.

__format__()#

Default object formatter.

Return str(self) if format_spec is empty. Raise TypeError otherwise.

__ge__()#

Return self>=value.

__getattribute__()#

Return getattr(self, name).

__getitem__()#

Return self[key].

__getstate__()#

Helper for pickle.

__gt__()#

Return self>value.

__init__()#

Initialize self. See help(type(self)) for accurate signature.

__ior__()#

Return self|=value.

__iter__()#

Implement iter(self).

__le__()#

Return self<=value.

__len__()#

Return len(self).

__lt__()#

Return self<value.

__ne__()#

Return self!=value.

__new__()#

Create and return a new object. See help(type) for accurate signature.

__or__()#

Return self|value.

__reduce__()#

Helper for pickle.

__reduce_ex__()#

Helper for pickle.

__repr__()#

Return repr(self).

__reversed__()#

Return a reverse iterator over the dict keys.

__ror__()#

Return value|self.

__setitem__()#

Set self[key] to value.

__sizeof__()#

D.sizeof() -> size of D in memory, in bytes

__str__()#

Return str(self).

__subclasshook__()#

Abstract classes can override this to customize issubclass().

This is invoked early on by abc.ABCMeta.subclasscheck(). It should return True, False or NotImplemented. If it returns NotImplemented, the normal algorithm is used. Otherwise, it overrides the normal algorithm (and the outcome is cached).

clear()#

D.clear() -> None. Remove all items from D.

copy()#

D.copy() -> a shallow copy of D

get()#

Return the value for key if key is in the dictionary, else default.

items()#

D.items() -> a set-like object providing a view on D’s items

kVAEmerg: float#

None

kVANormal: float#

None

keys()#

D.keys() -> a set-like object providing a view on D’s keys

pop()#

D.pop(k[,d]) -> v, remove specified key and return the corresponding value.

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem()#

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault()#

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update()#

D.update([E, ]**F) -> None. Update D from dict/iterable E and F. If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values()#

D.values() -> an object providing a view on D’s values

class altdss.EnergyMeter.IEnergyMeter(iobj)#

Bases: altdss.DSSObj.IDSSObj, altdss.EnergyMeter.EnergyMeterBatch, altdss.EnergyMeterExtras.IEnergyMeterMixin

Action(value: Union[AnyStr, int, altdss.enums.EnergyMeterAction], flags: altdss.enums.SetterFlags = 0)#

{Clear (reset) | Save | Take | Zonedump | Allocate | Reduce}

(A)llocate = Allocate loads on the meter zone to match PeakCurrent. (C)lear = reset all registers to zero (R)educe = reduces zone by merging lines (see Set Keeplist & ReduceOption) (S)ave = saves the current register values to a file. File name is “MTR_metername.csv”. (T)ake = Takes a sample at present solution (Z)onedump = Dump names of elements in meter zone to a file File name is “Zone_metername.csv”.

DSS property name: Action, DSS property index: 3.

Allocate(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Allocate)

BaseFreq: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Base Frequency for ratings.

DSS property name: BaseFreq, DSS property index: 25.

CAIDI: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes CAIDI result available via return on query (? energymeter.myMeter.CAIDI.

DSS property name: CAIDI, DSS property index: 23.

Clear(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Clear)

CloseDIFiles()#

Close all Demand Interval files. Users are required to close the DI files at the end of a run, either using this function or the CloseDI DSS command.

ComplexSeqCurrents() altdss.types.ComplexArray#

Complex double array of Sequence Currents for all conductors of all terminals of active circuit element.

Original COM help: https://opendss.epri.com/CplxSeqCurrents.html

ComplexSeqVoltages() altdss.types.ComplexArray#

Complex double array of Sequence Voltage for all terminals of active circuit element.

Original COM help: https://opendss.epri.com/CplxSeqVoltages1.html

Currents() altdss.types.ComplexArray#

Complex array of currents into each conductor of each terminal

Original COM help: https://opendss.epri.com/Currents1.html

CurrentsMagAng() altdss.types.Float64Array#

Currents in magnitude, angle (degrees) format as a array of doubles.

Original COM help: https://opendss.epri.com/CurrentsMagAng.html

CustInterrupts: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes Total Customer Interrupts value result available via return on query (? energymeter.myMeter.CustInterrupts.

DSS property name: CustInterrupts, DSS property index: 24.

DIFilesAreOpen() bool#

Indicates if Demand Interval (DI) files have been properly opened.

DoReliabilityCalc(assumeRestoration: bool) None#

Calculate reliability indices for each meter

Element: List[altdss.DSSObj.DSSObj]#

‘property(…)’

Name (Full Object name) of element to which the monitor is connected.

DSS property name: Element, DSS property index: 1.

Element_str: List[str]#

‘property(…)’

Name (Full Object name) of element to which the monitor is connected.

DSS property name: Element, DSS property index: 1.

Enabled: List[bool]#

‘property(…)’

{Yes|No or True|False} Indicates whether this element is enabled.

DSS property name: Enabled, DSS property index: 26.

FullName() List[str]#

Returns the full name (including object type) for all objects in this batch

GUID() List[str]#

GUID/UUID for each object. Currently used only in the CIM-related methods.

Original COM help: https://opendss.epri.com/GUID.html

Handle() altdss.types.Int32Array#

Index of each element into the circuit’s element list.

Original COM help: https://opendss.epri.com/Handle.html

HasOCPDevice() altdss.types.BoolArray#

For each element in the batch: returns true if a recloser, relay, or fuse controlling the circuit element.

OCP = Overcurrent Protection

Original COM help: https://opendss.epri.com/HasOCPDevice.html

HasSwitchControl() altdss.types.BoolArray#

For each element in the batch: returns true if the element has a SwtControl attached.

Original COM help: https://opendss.epri.com/HasSwitchControl.html

HasVoltControl() altdss.types.BoolArray#

For each element in the batch: returns true if the element has a CapControl or RegControl attached.

Original COM help: https://opendss.epri.com/HasVoltControl.html

Int_Duration: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Average annual duration, in hr, of interruptions for head of the meter zone (source side of zone or feeder).

DSS property name: Int_Duration, DSS property index: 19.

Int_Rate: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Average number of annual interruptions for head of the meter zone (source side of zone or feeder).

DSS property name: Int_Rate, DSS property index: 18.

IsIsolated() altdss.types.BoolArray#

For each element in the batch: returns true if the element is isolated. Note that this only fetches the current value. See also the Topology interface.

Like(value: AnyStr, flags: altdss.enums.SetterFlags = 0)#

Make like another object, e.g.:

New Capacitor.C2 like=c1 …

DSS property name: Like, DSS property index: 27.

LineLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Line losses. If NO, then none of the losses are computed.

DSS property name: LineLosses, DSS property index: 12.

LocalOnly: List[bool]#

‘property(…)’

{Yes | No} Default is NO. If Yes, meter considers only the monitored element for EEN and UE calcs. Uses whole zone for losses.

DSS property name: LocalOnly, DSS property index: 9.

Losses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Zone losses. If NO, then no losses at all are computed.

DSS property name: Losses, DSS property index: 11.

Mask: List[altdss.types.Float64Array]#

‘property(…)’

Mask for adding registers whenever all meters are totalized. Array of floating point numbers representing the multiplier to be used for summing each register from this meter. Default = (1, 1, 1, 1, … ). You only have to enter as many as are changed (positional). Useful when two meters monitor same energy, etc.

DSS property name: Mask, DSS property index: 10.

MaxCurrent(terminal: int) altdss.types.Float64Array#

Returns the maximum current (magnitude) at the specified terminal for each element in this batch. Use -1 as terminal to get the value across all terminals.

property Name: List[str]#
NumConductors() altdss.types.Int32Array#

Number of conductors per terminal for each element in the batch.

Original COM help: https://opendss.epri.com/NumConductors.html

NumControllers() altdss.types.Int32Array#

Number of controllers connected to each device in the batch.

Original COM help: https://opendss.epri.com/NumControls.html

NumEndElements() altdss.types.Int32Array#

Number of zone end elements in the active meter zone.

NumPhases() altdss.types.Int32Array#

Number of Phases for each element in this batch.

Original COM help: https://opendss.epri.com/NumPhases.html

NumSections() altdss.types.Int32Array#

Number of feeder sections in the zone of each meter

NumTerminals() altdss.types.Int32Array#

Number of terminals for each Circuit Element in the batch.

Original COM help: https://opendss.epri.com/NumTerminals.html

OCPDevice() List[Union[altdss.DSSObj.DSSObj, None]]#

Returns (as a list of Python objects) the OCP device controlling each element.

OCPDeviceIndex() altdss.types.Int32Array#

For each element in the batch: index into each controller list of the OCP Device controlling each circuit element

Original COM help: https://opendss.epri.com/OCPDevIndex.html

OCPDeviceType() List[dss.enums.OCPDevType]#

For each element in the batch: type of OCP controller device

Original COM help: https://opendss.epri.com/OCPDevType.html

OpenDIFiles()#

Open Demand Interval (DI) files

Option: List[List[str]]#

‘property(…)’

Enter a string ARRAY of any combination of the following. Options processed left-to-right:

(E)xcess : (default) UE/EEN is estimate of energy over capacity (T)otal : UE/EEN is total energy after capacity exceeded (R)adial : (default) Treats zone as a radial circuit (M)esh : Treats zone as meshed network (not radial). (C)ombined : (default) Load UE/EEN computed from combination of overload and undervoltage. (V)oltage : Load UE/EEN computed based on voltage only.

Example: option=(E, R)

DSS property name: Option, DSS property index: 4.

PeakCurrent: List[altdss.types.Float64Array]#

‘property(…)’

ARRAY of current magnitudes representing the peak currents measured at this location for the load allocation function. Default is (400, 400, 400). Enter one current for each phase

DSS property name: PeakCurrent, DSS property index: 7.

PhaseLosses() altdss.types.ComplexArray#

Complex array of losses (kVA) by phase

Original COM help: https://opendss.epri.com/PhaseLosses.html

PhaseVoltageReport: List[bool]#

‘property(…)’

{Yes | No} Default is NO. Report min, max, and average phase voltages for the zone and tabulate by voltage base. Demand Intervals must be turned on (Set Demand=true) and voltage bases must be defined for this property to take effect. Result is in a separate report file.

DSS property name: PhaseVoltageReport, DSS property index: 17.

Powers() altdss.types.ComplexArray#

Complex array of powers (kVA) into each conductor of each terminal, of each element in the batch.

Original COM help: https://opendss.epri.com/Powers.html

Reduce(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Reduce)

SAIDI: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes SAIDI result available via return on query (? energymeter.myMeter.SAIDI.

DSS property name: SAIDI, DSS property index: 22.

SAIFI: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes SAIFI result available via return on query (? energymeter.myMeter.SAIFI.

DSS property name: SAIFI, DSS property index: 20.

SAIFIkW: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

(Read only) Makes SAIFIkW result available via return on query (? energymeter.myMeter.SAIFIkW.

DSS property name: SAIFIkW, DSS property index: 21.

Save(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.Save)

SeqCurrents() altdss.types.Float64Array#

Array of symmetrical component currents (magnitudes only) into each 3-phase terminal of each element

Original COM help: https://opendss.epri.com/SeqCurrents.html

SeqLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Sequence losses in lines and segregate by line mode losses and zero mode losses.

DSS property name: SeqLosses, DSS property index: 14.

SeqPowers() altdss.types.ComplexArray#

Complex array of sequence powers (kW, kvar) into each 3-phase terminal of each element

Original COM help: https://opendss.epri.com/SeqPowers.html

SeqVoltages() altdss.types.Float64Array#

Double array of symmetrical component voltages (magnitudes only) at each 3-phase terminal

Original COM help: https://opendss.epri.com/SeqVoltages1.html

TakeSample(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.TakeSample)

Terminal: altdss.ArrayProxy.BatchInt32ArrayProxy#

‘property(…)’

Number of the terminal of the circuit element to which the monitor is connected. 1 or 2, typically.

DSS property name: Terminal, DSS property index: 2.

ThreePhaseLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Line losses and segregate by 3-phase and other (1- and 2-phase) line losses.

DSS property name: 3PhaseLosses, DSS property index: 15.

TotalCustomers() altdss.types.Int32Array#

Total Number of customers in this zone (downline from the EnergyMeter)

TotalPowers() altdss.types.ComplexArray#

Returns an array with the total powers (complex, kVA) at all terminals of the circuit elements in this batch.

The resulting array is equivalent to concatenating the TotalPowers for each element.

Totals() altdss.types.Float64Array#

Returns the totals of all registers of all meters

VBaseLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute losses and segregate by voltage base. If NO, then voltage-based tabulation is not reported.

DSS property name: VBaseLosses, DSS property index: 16.

Voltages() altdss.types.ComplexArray#

Complex array of voltages at terminals

Original COM help: https://opendss.epri.com/Voltages1.html

VoltagesMagAng() altdss.types.Float64Array#

Voltages at each conductor in magnitude, angle form as array of doubles.

Original COM help: https://opendss.epri.com/VoltagesMagAng.html

XfmrLosses: List[bool]#

‘property(…)’

{Yes | No} Default is YES. Compute Transformer losses. If NO, transformers are ignored in loss calculations.

DSS property name: XfmrLosses, DSS property index: 13.

ZoneDump(flags: altdss.enums.SetterFlags = 0)#

Shortcut to Action(EnergyMeterAction.ZoneDump)

ZoneList: List[List[str]]#

‘property(…)’

ARRAY of full element names for this meter’s zone. Default is for meter to find it’s own zone. If specified, DSS uses this list instead. Can access the names in a single-column text file. Examples:

zonelist=[line.L1, transformer.T1, Line.L3] zonelist=(file=branchlist.txt)

DSS property name: ZoneList, DSS property index: 8.

__call__()#
__contains__(name: str) bool#
__getitem__(name_or_idx)#
__init__(iobj)#
__iter__()#
__len__() int#
batch(**kwargs)#

Creates a new batch handler of (existing) objects

batch_new(names: Optional[List[AnyStr]] = None, *, df=None, count: Optional[int] = None, begin_edit: Optional[bool] = None, **kwargs: typing_extensions.Unpack[altdss.EnergyMeter.EnergyMeterBatchProperties]) altdss.EnergyMeter.EnergyMeterBatch#

Creates a new batch of EnergyMeter objects

Either names, count or df is required.

Parameters:
  • begin_edit – The argument begin_edit indicates if the user want to leave the elements in the edit state, and requires a call to end_edit() or equivalent. The default begin_edit is set to None. With None, the behavior will be adjusted according the default of how the batch is created.

  • **kwargs – Pass keyword arguments equivalent to the DSS properties of the object.

  • names – When using a list of names, each new object will match the names from this list. begin_edit defaults to True if no arguments for properties were passed, False otherwise.

  • count – When using count, new objects will be created with based on a random prefix, with an increasing integer up to count. begin_edit defaults to True if no arguments for properties were passed, False otherwise.

  • df – Currently EXPERIMENTAL AND LIMITED, tries to get the columns from a dataframe to populate the names and the DSS properties. begin_edit defaults to False.

Returns:

Returns the new batch of DSS objects, wrapped in Python.

Note that, to make it easier for new users where the edit context might not be too relevant, AltDSS automatically opens/closes edit contexts for single properties if the object is not in the edit state already.

begin_edit() None#

Marks for editing all DSS objects in the batch

In the editing mode, some final side-effects of changing properties are postponed until end_edit is called. This side-effects can be somewhat costly, like updating the model parameters or internal matrices.

If you don’t have any performance constraint, you may edit each property individually without worrying about using begin_edit and end_edit. For convenience, those are emitted automatically when editing single properties outside an edit block.

edit(**kwargs: typing_extensions.Unpack[altdss.EnergyMeter.EnergyMeterBatchProperties]) altdss.EnergyMeter.EnergyMeterBatch#

Edit this EnergyMeter batch.

This method will try to open a new edit context (if not already open), edit the properties, and finalize the edit context for objects in the batch. It can be seen as a shortcut to manually setting each property, or a Pythonic analogous (but extended) to the DSS BatchEdit command.

Parameters:

**kwargs – Pass keyword arguments equivalent to the DSS properties of the objects.

Returns:

Returns itself to allow call chaining.

end_edit(num_changes: int = 1) None#

Leaves the editing states of all DSS objects in the batch

num_changes is required for a few classes to correctly match the official OpenDSS behavior and must be the number of properties modified in the current editing block. As of DSS C-API v0.13, this is only required for the Monitor class, when the Action property is used with the Process value.

find(name_or_idx: Union[AnyStr, int]) altdss.DSSObj.DSSObj#

Returns an object from the collection by name or index; the index must be zero-based.

kVAEmerg: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Upper limit on kVA load in the zone, Emergency configuration. Default is 0.0 (ignored). Overrides limits on individual lines for overload UE. With “LocalOnly=Yes” option, uses only load in metered branch.

DSS property name: kVAEmerg, DSS property index: 6.

kVANormal: altdss.ArrayProxy.BatchFloat64ArrayProxy#

‘property(…)’

Upper limit on kVA load in the zone, Normal configuration. Default is 0.0 (ignored). Overrides limits on individual lines for overload EEN. With “LocalOnly=Yes” option, uses only load in metered branch.

DSS property name: kVANormal, DSS property index: 5.

new(name: AnyStr, *, begin_edit: Optional[bool] = None, activate=False, **kwargs: typing_extensions.Unpack[altdss.EnergyMeter.EnergyMeterProperties]) altdss.EnergyMeter.EnergyMeter#

Creates a new EnergyMeter.

Parameters:
  • name – The object’s name is a required positional argument.

  • activate – Activation (setting activate to true) is useful for integration with the classic API, and some internal OpenDSS commands. If you interact with this object only via the Alt API, no need to activate it (due to performance costs).

  • begin_edit – This controls how the edit context is left after the object creation:

  • True: The object will be left in the edit state, requiring an end_edit call or equivalent.

  • False: No edit context is started.

  • None: If no properties are passed as keyword arguments, the object will be left in the edit state (assumes the user will fill the properties from Python attributes). Otherwise, the internal edit context will be finalized.

Parameters:

**kwargs – Pass keyword arguments equivalent to the DSS properties of the object.

Returns:

Returns the new DSS object, wrapped in Python.

Note that, to make it easier for new users where the edit context might not be too relevant, AltDSS automatically opens/closes edit contexts for single properties if the object is not in the edit state already.

to_json(options: Union[int, dss.enums.DSSJSONFlags] = 0)#

Returns the data (as a list) of the elements in a batch as a JSON-encoded string.

The options parameter contains bit-flags to toggle specific features. See Obj_ToJSON (C-API) for more, or DSSObj.to_json in Python.

Additionally, the ExcludeDisabled flag can be used to excluded disabled elements from the output.

to_list()#