Units and Coordinates#

Utilities for working with different unit systems and coordinate frames.

Axis Units#

Classes for validating and working with coordinate axis units.

class lagrangian.core.axis.LatitudeUnit#

Utility for working with latitude units.

__init__(self: lagrangian.core.axis.LatitudeUnit) None#

Default constructor

Methods

Examples

Validating latitude units:

import lagrangian.axis as axis

lat_unit = axis.LatitudeUnit()

# Check various unit strings
print(lat_unit("degrees_north"))  # True
print(lat_unit("degree_north"))   # True
print(lat_unit("deg_N"))          # True
print(lat_unit("meters"))         # False

__call__(self: lagrangian.core.axis.LatitudeUnit, unit: str) bool#

Checks if the unit can define a latitude axis

class lagrangian.core.axis.LongitudeUnit#

Utility for working with longitude units.

__init__(self: lagrangian.core.axis.LongitudeUnit) None#

Default constructor

Methods

Examples

Validating longitude units:

import lagrangian.axis as axis

lon_unit = axis.LongitudeUnit()

# Check various unit strings
print(lon_unit("degrees_east"))   # True
print(lon_unit("degree_east"))    # True
print(lon_unit("deg_E"))          # True
print(lon_unit("radians"))        # False

__call__(self: lagrangian.core.axis.LongitudeUnit, unit: str) bool#

Checks if the unit can define a longitude axis

Unit Conversion#

class lagrangian.core.units.Units#

Utility for unit conversion operations.

Methods

  • get_converter(from_unit, to_unit): Get

    conversion factor and offset

Examples

Converting between units:

import lagrangian.units as units

# Get conversion from m/s to cm/s
factor, offset = units.Units.get_converter("m/s", "cm/s")

# Convert velocity: cm_per_s = m_per_s * factor + offset
velocity_ms = 1.5  # m/s
velocity_cms = velocity_ms * factor + offset  # 150.0 cm/s

Common Unit Types#

The library supports several common unit types and coordinate systems:

Velocity Units

  • m/s: Meters per second

  • cm/s: Centimeters per second

  • km/h: Kilometers per hour

  • deg/day: Degrees per day (for angular velocities)

Coordinate Units

  • degrees_north, degree_north, deg_N: Latitude

  • degrees_east, degree_east, deg_E: Longitude

  • meters, m: Metric distance

  • kilometers, km: Metric distance

Time Units

  • seconds, s: Time in seconds

  • hours, h: Time in hours

  • days, d: Time in days

Working with Different Coordinate Systems#

The library supports both Cartesian and spherical coordinate systems:

Cartesian Coordinates

  • Used for local, small-scale computations

  • Units typically in meters

  • x, y represent local coordinates

Spherical Equatorial Coordinates

  • Used for global ocean/atmosphere applications

  • Longitude/latitude in degrees

  • Accounts for Earth’s spherical geometry

Examples

Setting up fields with different coordinate systems:

import lagrangian

# Cartesian field (local coordinates)
cartesian_field = lagrangian.Field(
    unit_type=lagrangian.UnitType.METRIC,
    coordinate_type=lagrangian.CoordinatesType.CARTESIAN
)

# Spherical field (global coordinates)
spherical_field = lagrangian.Field(
    unit_type=lagrangian.UnitType.ANGULAR,
    coordinate_type=lagrangian.CoordinatesType.SPHERICAL_EQUATORIAL
)