1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# Copyright (c) 2016 Weitian LI <liweitianux@live.com>
# MIT license
"""
Utilities for conversion among common astronomical quantities.
"""
import astropy.units as au
def Fnu_to_Tb(Fnu, omega, freq):
"""Convert flux density to brightness temperature, using the
Rayleigh-Jeans law, in the Rayleigh-Jeans limit.
Parameters
----------
Fnu : `~astropy.units.Quantity`
Input flux density, e.g., `1.0*au.Jy`
omega : `~astropy.units.Quantity`
Source angular size/area, e.g., `1.0*au.sr`
freq : `~astropy.units.Quantity`
Frequency where the flux density measured, e.g., `1.0*au.MHz`
Returns
-------
Tb : `~astropy.units.Quantity`
Brightness temperature, with default unit `au.K`
References
----------
- Brightness and Flux
http://www.cv.nrao.edu/course/astr534/Brightness.html
- Wikipedia: Brightness Temperature
https://en.wikipedia.org/wiki/Brightness_temperature
- NJIT: Physics 728: Introduction to Radio Astronomy: Lecture #1
https://web.njit.edu/~gary/728/Lecture1.html
- Astropy: Equivalencies: Brightness Temperature / Flux Density
http://docs.astropy.org/en/stable/units/equivalencies.html
"""
equiv = au.brightness_temperature(omega, freq)
Tb = Fnu.to(au.K, equivalencies=equiv)
return Tb
def Sb_to_Tb(Sb, freq):
"""Convert surface brightness to brightness temperature, using the
Rayleigh-Jeans law, in the Rayleigh-Jeans limit.
Parameters
----------
Sb : `~astropy.units.Quantity`
Input surface brightness, e.g., `1.0*au.Jy/au.sr`
freq : `~astropy.units.Quantity`
Frequency where the flux density measured, e.g., `1.0*au.MHz`
Returns
-------
Tb : `~astropy.units.Quantity`
Brightness temperature, with default unit `au.K`
"""
omega = 1.0 * au.sr
Fnu = Sb * omega
return Fnu_to_Tb(Fnu, omega, freq)
|