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:
UnitSystemRepresents 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. Alternatively, you may specify a velocity instead of one of the three, and the remaining units will be derived.
- Parameters:
- length
Unit,Quantity, optional The length unit or quantity.
- mass
Unit,Quantity, optional The mass unit or quantity.
- time
Unit,Quantity, optional The time unit or quantity.
- velocity
Unit,Quantity, optional The velocity unit or quantity.
- G
float,Quantity, optional The value of the gravitational constant to use. Default is 1.0.
- angle
Unit,Quantity, optional The angle unit. Default is astropy.units.radian.
- length
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.from_string(name)Create a UnitSystem instance from a name.
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.
- classmethod from_string(name: str) UnitSystem#
Create a UnitSystem instance from a name.
- Parameters:
- name
str The name of the unit system. Examples of valid names are ‘galactic’, ‘solarsystem’, and ‘dimensionless’.
- name
- Returns:
- usys
UnitSystem The corresponding unit system instance.
- usys
Examples
Create the galactic unit system from its name:
>>> usys = UnitSystem.from_string('galactic') >>> usys['length'] Unit("kpc")
- get_constant(name)#
Retrieve a constant with specified name in this unit system.
- Parameters:
- name
str The name of the constant, e.g., G.
- name
- Returns:
- const
float The value of the constant represented in this unit system.
- const
Examples
We will get the value of the speed of light in a custom unit system:
>>> usys = UnitSystem(u.kpc, u.Myr, u.Msun, u.radian) >>> 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.