Using units

Third party quantities module is extended to the irfpy.util.unitq module. Usually you may start with

from irfpy.util import unitq as u

See how to use the quantities module

Below, extended use of irfpy.util.unitq is explained. Also refer to irfpy.util.unitq.

Getting used to

A simple use flow is as follows.

> from irfpy.util import unitq as u
> vel = 50 * / (200 * u.hour)
> print(vel)     # Gives (internal expression of) quantities
0.25 au/h
> print(vel.n)   # Gives a value with unit of internal expression
> print(vel.s)    # With ``.s``, reference unit (default: MKSA) is returned.
10388741.020208333 m/s
> print(vel.ns)   # ``.ns``, value in reference unit is returned.
> print(   # ``.us`` returns the unit of the reference
> u.use('cgs')   # ``.use`` can change the refernce unit system.
> print(vel.s)
1038874102.0208334 cm/s
> print(vel.r( / u.s))    # ``.r`` rescales the unit.
10388.741020208332 km/s
> print(vel.r(u.c))     # In this case speed-of-light is a unit :)
0.034653109986537194 c
> print(     # ``.nr`` will return the rescaled number.

Extended usage


Sometimes it is usuful if you just instance quantities from string. u.nit will provide this functionality.

> from irfpy.util import unitq as u
> w = u.nit('3 kg')
> print w
3.0 kg
> g = u.nit('9.8 kg m/s^2')
> print g
9.8 kg*m/s**2

Further, the u.nit will identify the undefined unit in a form of SI-prefixed known units. Take an example of “pC”, pico-coulomb.

> 'pC' in u.known_unit    # Pico-Coulomb is not defined.
> print u.nit('pC')     # But using u.nit "pC" is guessed as "p"+"C"
1e-12 C
> 'pC' in u.known_unit    # Now it is found in the definition list
> print u.pC              # And even access with a usual way!!
1 pC

The ‘pC’ will be forgotten after the exit of the python interpreter. It may be a good idea to call u.nit(‘pC’) just after the import statement if you use ‘pC’ frequently.


Sometimes, it is useful if formula can handle the unit. This will help dimension check during the step-by-step calculation. It is supported with a simple way in irfpy.util.unitq.make_unitful_function(). See the above link.