Dimensionality

class rmnpy.wrappers.sitypes.Dimensionality(*args, **kwargs)

Bases:

Overview

The Dimensionality class represents physical dimensionalities for advanced dimensional analysis. Built on the seven SI base dimensions, it enables validation of physical equations and dimensional consistency checking.

Enhanced API: Like Unit and Scalar, Dimensionality now supports simple string construction for improved usability.

SI Base Dimensions:

  • Length (L): meter [m]

  • Mass (M): kilogram [kg]

  • Time (T): second [s]

  • Current (I): ampere [A]

  • Temperature (K): kelvin [K]

  • Amount (N): mole [mol]

  • Luminous Intensity (J): candela [cd]

Usage Examples

Creating Dimensionalities

Flexible construction approaches:

from rmnpy.wrappers.sitypes import Dimensionality

# === Create dimensionalities from expressions ===
length = Dimensionality("L")           # Length dimension
velocity = Dimensionality("L/T")       # Velocity dimension
force = Dimensionality("M*L/T^2")      # Force dimension
energy = Dimensionality("M*L^2/T^2")   # Energy dimension

Dimensional Algebra

Build complex dimensionalities through arithmetic operations:

# === Fundamental Dimensions ===
length = Dimensionality("L")         # Length
mass = Dimensionality("M")           # Mass
time = Dimensionality("T")           # Time

# === Derived Dimensions Through Algebra ===
area = length * length               # L² (area)
volume = area * length               # L³ (volume)
velocity = length / time             # L/T (velocity)
acceleration = velocity / time       # L/T² (acceleration)
force = mass * acceleration          # M*L/T² (force)
energy = force * length              # M*L²/T² (energy)
power = energy / time                # M*L²/T³ (power)
pressure = force / area              # M/(L*T²) (pressure)

# === Dimensional Analysis Applications ===

# Validate physics equations
kinetic_energy_dim = mass * velocity**2   # M*(L/T)² = M*L²/T²
print(kinetic_energy_dim == energy)       # True - dimensionally consistent!

# Check compatibility
momentum_dim = mass * velocity            # M*L/T
impulse_dim = force * time                # (M*L/T²)*T = M*L/T
print(momentum_dim == impulse_dim)        # True - momentum = impulse!

Practical Dimensional Analysis

Real-world validation of physical relationships:

# === Verify Famous Physics Equations ===

# Einstein's E = mc²
c_dim = Dimensionality("L/T")        # Speed of light
E_dim = mass * c_dim**2              # M*(L/T)² = M*L²/T²
print(E_dim == energy)               # True - energy is correct!

# Newton's F = ma
F_calculated = mass * acceleration   # M * L/T² = M*L/T²
print(F_calculated == force)         # True - force equation is valid!

# Pressure formula P = F/A
P_calculated = force / area          # (M*L/T²)/L² = M/(L*T²)
print(P_calculated == pressure)      # True - pressure formula is valid!

# === Engineering Applications ===

# Fluid dynamics: Reynolds number should be dimensionless
reynolds_dim = (velocity * length) / Dimensionality("L²/T")  # Should be dimensionless
print(reynolds_dim.is_dimensionless) # True - Reynolds number is dimensionless!

# Electrical: Power = Voltage × Current
voltage_dim = Dimensionality("M*L²/(I*T³)")  # Voltage dimension
current_dim = Dimensionality("I")            # Current dimension
power_electrical = voltage_dim * current_dim # Should equal mechanical power
print(power_electrical == power)             # True - electrical power = mechanical power!

Factory Methods

# Create common dimensionalities
dimensionless = Dimensionality.dimensionless()
length = Dimensionality.for_quantity("length")
mass = Dimensionality.for_quantity("mass")
time = Dimensionality.for_quantity("time")