Scale Module

The scale module provides the Scale class for defining unit conversion factors.

Scale

class physities.src.scale.scale.Scale(*, dimension, from_base_scale_conversions, rescale_value)[source]

Bases: object

Represents a unit scale with dimension and conversion factors.

Thin wrapper around Rust PhysicalScale.

Parameters:
property dimension: Dimension
property from_base_scale_conversions: tuple[float, float, float, float, float, float, float]
property rescale_value: float
classmethod new(dimension=None, from_base_scale_conversions=None, rescale_value=None)[source]
Return type:

Self

Parameters:
property is_dimensionless: bool
property conversion_factor: float
to_rust()[source]
Return type:

PhysicalScale

classmethod from_rust(rust_scale)[source]
Return type:

Self

Parameters:

rust_scale (PhysicalScale)

static has_rust_backend()[source]
Return type:

bool

static is_rust_enabled()[source]
Return type:

bool

static enable_rust()[source]
static disable_rust()[source]
dict()[source]
Return type:

dict

to_json()[source]
Return type:

str

classmethod from_dict(data)[source]
Return type:

Self

Parameters:

data (dict)

classmethod from_json(json_str)[source]
Return type:

Self

Parameters:

json_str (str)

__eq__(other)[source]

Return self==value.

__mul__(other)[source]
__truediv__(other)[source]
__pow__(power, modulo=None)[source]

Usage Examples

Creating Scales

from physities.src.scale import Scale
from physities.src.dimension import Dimension

# SI meter scale (conversion factor = 1)
meter_scale = Scale.new(dimension=Dimension.new_length())

# Kilometer scale (1 km = 1000 m)
km_scale = Scale.new(
    dimension=Dimension.new_length(),
    from_base_scale_conversions=(1000, 1, 1, 1, 1, 1, 1),
)

print(km_scale.conversion_factor)  # 1000.0

Scale Operations

from physities.src.scale import Scale
from physities.src.dimension import Dimension

meter = Scale.new(dimension=Dimension.new_length())
second = Scale.new(dimension=Dimension.new_time())

# Combine scales
velocity = meter / second  # m/s scale
print(velocity.dimension.length)  # 1
print(velocity.dimension.time)    # -1

# Scale multiplication
kilometer = meter * 1000
print(kilometer.conversion_factor)  # 1000.0

# Scale power
area = meter ** 2
print(area.dimension.length)  # 2

Checking Dimensionless

from physities.src.scale import Scale
from physities.src.dimension import Dimension

# Dimensionless scale
dimensionless = Scale.new()
print(dimensionless.is_dimensionless)  # True

# Length scale
meter = Scale.new(dimension=Dimension.new_length())
print(meter.is_dimensionless)  # False

# Division produces dimensionless
ratio = meter / meter
print(ratio.is_dimensionless)  # True