Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Managing Physical Units

  • In GDM, all physical quantities are wrapped in pint objects (https://pypi.org/project/Pint/).

  • Users import physical quantities when building new models or updating model parameters.

    • Units are validated for all physical quantities.

    • All quantities are imported from gdm.quantities.

Creating Quantities

from gdm.quantities import ReactivePower

power = ReactivePower(800, "kilovar")
print(power)
800 kilovar

The to method can be used for unit conversion

print(power.to("var"))
800000.0 var

The quantitiy models can be used with list and numpy arrays

powers = ReactivePower([400, 200, 100], "kilovar")
print(powers)
print(powers.to("var"))
[400 200 100] kilovar
[400000.0 200000.0 100000.0] var

Validation Limitations

from gdm.distribution.enums import LimitType, Phase, VoltageTypes
from gdm.distribution.components import DistributionSubstation
from gdm.distribution.common.limitset import VoltageLimitSet
from gdm.distribution.components import DistributionFeeder
from gdm.distribution.components import DistributionBus
from gdm.quantities import Voltage
from infrasys import Location

rated_voltage = Voltage(400, "ampere")
try:
    bus = DistributionBus(
        voltage_type=VoltageTypes.LINE_TO_LINE,
        phases=[Phase.A, Phase.B, Phase.C],
        rated_voltage=rated_voltage,
        name="DistBus1",
        substation=DistributionSubstation.example(),
        feeder=DistributionFeeder.example(),
        voltagelimits=[
            VoltageLimitSet(limit_type=LimitType.MIN, value=Voltage(400 * 0.9, "volt")),
            VoltageLimitSet(limit_type=LimitType.MAX, value=Voltage(400 * 1.1, "volt")),
        ],
        coordinate=Location(x=20.0, y=30.0),
    )
except Exception as e:
    print(e)
1 validation error for DistributionBus
rated_voltage
  Assertion failed, Unit must be compatible with volt [type=assertion_error, input_value=<Quantity(400, 'ampere')>, input_type=Voltage]
    For further information visit https://errors.pydantic.dev/2.10/v/assertion_error