SimulationUnitSystem#

class gala.units.SimulationUnitSystem(length: Unit | Annotated[Quantity, PhysicalType('length')] = None, mass: Unit | Annotated[Quantity, PhysicalType('mass')] = None, time: Unit | Annotated[Quantity, PhysicalType('time')] = None, velocity: Quantity, PhysicalType({'speed', 'velocity'})] = None, G: float | Quantity = 1.0, angle: Unit | Annotated[Quantity, PhysicalType('angle')] = Unit('rad'))[source]#

Bases: UnitSystem

Represents a system of units for a (dynamical) simulation.

A common assumption is that G=1. If this is the case, then you only have to specify two of the three fundamental unit types (length, mass, time) and the rest will be derived from these. You may also optionally specify a velocity with one of the base unit types (length, mass, time).

Examples

To convert simulation positions and velocities to physical units, you can use this unit system:

usys = SimulationUnitSystem(length=10 * u.kpc, time=50 * u.Myr)
(sim_pos * usys["length"]).to(u.kpc)
(sim_vel * usys["velocity"]).to(u.km/u.s)

Or, to convert positions and velocities from physical units to simulation units:

(100 * u.kpc).to(usys["length"])

Methods Summary

decompose(q)

A thin wrapper around astropy.units.Quantity.decompose() that knows how to handle Quantities with physical types with non-default representations.

get_constant(name)

Retrieve a constant with specified name in this unit system.

to_dict()

Return a dictionary representation of the unit system with keys set by the physical types and values set by the unit objects.

Methods Documentation

decompose(q)#

A thin wrapper around astropy.units.Quantity.decompose() that knows how to handle Quantities with physical types with non-default representations.

Parameters:
qQuantity

An instance of an astropy Quantity object.

Returns:
qQuantity

A new quantity, decomposed to represented in this unit system.

get_constant(name)#

Retrieve a constant with specified name in this unit system.

Parameters:
namestr

The name of the constant, e.g., G.

Returns:
constfloat

The value of the constant represented in this unit system.

Examples

>>> usys = UnitSystem(u.kpc, u.Myr, u.radian, u.Msun)
>>> usys.get_constant('c')  
306.6013937855506
to_dict()#

Return a dictionary representation of the unit system with keys set by the physical types and values set by the unit objects.