Source code for kerrgeopy.units
"""Module containing functions to convert between geometrized units and physical units."""
# https://en.wikipedia.org/wiki/Geometrized_unit_system
# speed of light in m/s
c = 299792458.0
# gravitational constant in m^3 kg^-1 s^-2
G = 6.67408e-11
# solar mass in kg
solar_mass = 1.98847e30
[docs]def mass_in_kg(M):
"""
Converts solar masses to kg
:param M: mass in solar masses
:type M: double
:return: mass in kg
:rtype: double
"""
return M * solar_mass
[docs]def distance_in_meters(d, M):
"""Converts distance in geometrized units to meters
Parameters
----------
d : double
distance in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
distance in meters
"""
return d * G / c**2 * mass_in_kg(M)
[docs]def distance_in_cm(d, M):
"""Converts distance in geometrized units to centimeters
Parameters
----------
d : double
distance in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
distance in centimeters
"""
return distance_in_meters(d, M) * 100
[docs]def distance_in_km(d, M):
"""Converts distance in geometrized units to kilometers
Parameters
----------
d : double
distance in multiples of M
Returns
-------
double
distance in kilometers
"""
return distance_in_meters(d, M) / 1000
[docs]def distance_in_lightyears(d, M):
"""Converts distance in geometrized units to lightyears
Parameters
----------
d : double
distance in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
distance in lightyears
"""
return distance_in_meters(d, M) / 9.461e15
[docs]def distance_in_au(d, M):
"""Converts distance in geometrized units to astronomical units
Parameters
----------
d : double
distance in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
distance in astronomical units
"""
return distance_in_meters(d, M) / 1.496e11
[docs]def time_in_seconds(t, M):
"""Converts time in geometrized units to seconds
Parameters
----------
t : double
time in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
time in seconds
"""
return t * G / c**3 * mass_in_kg(M)
[docs]def time2_in_seconds2(t, M):
"""Converts time^2 in geometrized units to seconds^2
Parameters
----------
t : double
time^2 in multiples of M^2
M : double
mass of the primary body in solar masses
"""
return t * (G / c**3) ** 2 * mass_in_kg(M) ** 2
[docs]def time_in_days(t, M):
"""Converts time in geometrized units to days
Parameters
----------
t : double
time in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
time in days
"""
return time_in_seconds(t, M) / 86400
[docs]def energy_in_joules(E, M):
"""Converts energy in geometrized units to joules
Parameters
----------
E : double
energy in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
energy in joules
"""
return E * c**2 * mass_in_kg(M)
[docs]def energy_in_ergs(E, M):
"""Converts energy in geometrized units to ergs
Parameters
----------
E : double
energy in multiples of M
M : double
mass of the primary body in solar masses
Returns
-------
double
energy in ergs
"""
return energy_in_joules(E, M) * 1e7
[docs]def angular_momentum_in_mks(L, M):
"""Converts angular momentum in geometrized units to kg m^2 s^-1
Parameters
----------
L : double
angular momentum in multiples of M^2
M : double
mass of the primary body in solar masses
Returns
-------
double
angular momentum in kg m^2 s^-1
"""
return L * G / c * mass_in_kg(M) ** 2
[docs]def angular_momentum_in_cgs(L, M):
"""Converts angular momentum in geometrized units to g cm^2 s^-1
Parameters
----------
L : double
angular momentum in multiples of M^2
M : double
mass of the primary body in solar masses
Returns
-------
double
angular momentum in g cm^2 s^-1
"""
return angular_momentum_in_mks(L, M) * 1e7
[docs]def carter_constant_in_mks(Q, M):
"""Converts Carter constant in geometrized units to kg^2 m^4 s^-2
Parameters
----------
Q : double
Carter constant in multiples of M^4
M : double
mass of the primary body in solar masses
"""
return Q * G**2 / c**2 * mass_in_kg(M) ** 4
[docs]def carter_constant_in_cgs(Q, M):
"""Converts Carter constant in geometrized units to g^2 cm^4 s^-2
Parameters
----------
Q : double
Carter constant in multiples of M^4
M : double
mass of the primary body in solar masses
"""
return carter_constant_in_mks(Q, M) * 1e14
[docs]def frequency_in_Hz(f, M):
"""Converts frequency in geometrized units to hertz
Parameters
----------
f : _type_
frequency in multiples of M^-1
M : _type_
_description_
"""
return f * c**3 / G / mass_in_kg(M)
[docs]def frequency_in_mHz(f, M):
"""Converts frequency in geometrized units to millihertz
Parameters
----------
f : double
frequency in multiples of M^-1
M : double
mass of the primary body in solar masses
Returns
-------
double
frequency in millihertz
"""
return frequency_in_Hz(f, M) * 1e3