Dimension Module¶
The dimension module provides classes for representing physical dimensions.
BaseDimension¶
- class physities.src.dimension.base_dimensions.BaseDimension(value)[source]¶
Bases:
IntEnum- LENGTH = 0¶
- MASS = 1¶
- TEMPERATURE = 2¶
- TIME = 3¶
- AMOUNT = 4¶
- ELECTRIC_CURRENT = 5¶
- LUMINOUS_INTENSITY = 6¶
The 7 SI base dimensions:
Name |
Value |
Description |
|---|---|---|
|
0 |
Length (meters) |
|
1 |
Mass (kilograms) |
|
2 |
Thermodynamic temperature (kelvin) |
|
3 |
Time (seconds) |
|
4 |
Amount of substance (moles) |
|
5 |
Electric current (amperes) |
|
6 |
Luminous intensity (candelas) |
Dimension¶
- class physities.src.dimension.dimension.Dimension(*, dimensions_tuple)[source]¶
Bases:
objectRepresents physical dimensions using the 7 SI base dimensions.
Thin wrapper around Rust PhysicalDimension.
- classmethod new_instance(dimensions_tuple)[source]¶
- Return type:
Self- Parameters:
dimensions_tuple (tuple)
- get(index)[source]¶
- Return type:
- Parameters:
index (BaseDimension)
Usage Examples¶
Creating Dimensions¶
from physities.src.dimension import Dimension
# Using factory methods
length = Dimension.new_length()
time = Dimension.new_time()
mass = Dimension.new_mass()
# With power
area = Dimension.new_length(power=2) # L²
inverse_time = Dimension.new_time(power=-1) # T⁻¹
# Dimensionless
dimensionless = Dimension.new_dimensionless()
# From tuple
velocity = Dimension.new_instance((1, 0, 0, -1, 0, 0, 0)) # L/T
Dimension Operations¶
from physities.src.dimension import Dimension
length = Dimension.new_length()
time = Dimension.new_time()
# Addition combines exponents (for multiplication of quantities)
velocity = length + (time * -1) # L¹T⁻¹
# Subtraction (for division of quantities)
acceleration = velocity - time # L¹T⁻²
# Scalar multiplication (for powers)
area = length * 2 # L²
volume = length * 3 # L³
Accessing Dimension Properties¶
from physities.src.dimension import Dimension
# Create a force dimension (M·L·T⁻²)
force = Dimension.new_instance((1, 1, 0, -2, 0, 0, 0))
# Access individual exponents
print(force.length) # 1
print(force.mass) # 1
print(force.time) # -2
# Get non-zero dimensions
dims = force.get_dimensions()
# [BaseDimension.LENGTH, BaseDimension.MASS, BaseDimension.TIME]
# Display string
print(force.show_dimension()) # "Lm / t²"
Common Derived Dimensions¶
from physities.src.dimension import Dimension
# Velocity: L/T
velocity = Dimension.new_instance((1, 0, 0, -1, 0, 0, 0))
# Acceleration: L/T²
acceleration = Dimension.new_instance((1, 0, 0, -2, 0, 0, 0))
# Force: M·L/T²
force = Dimension.new_instance((1, 1, 0, -2, 0, 0, 0))
# Energy: M·L²/T²
energy = Dimension.new_instance((2, 1, 0, -2, 0, 0, 0))
# Power: M·L²/T³
power = Dimension.new_instance((2, 1, 0, -3, 0, 0, 0))
# Pressure: M/(L·T²)
pressure = Dimension.new_instance((-1, 1, 0, -2, 0, 0, 0))