Basic conversion formulas for Radioastronomy.
Copyright (C) 2012+ Axel Jessner (jessner@mpifr.de)
2015+ Benjamin Winkel (bwinkel@mpifr.de)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Pointing flux is defined as
$$\vec S = \vec E \times \vec H\,.$$For a plane wave we find
$$S\equiv\vert \vec S \vert = \sqrt{\frac{\varepsilon_0}{\mu_0}} \vert \vec E \vert^2 = \frac{E^2}{R_0}$$with
$$R_0 \equiv \sqrt{\frac{\varepsilon_0}{\mu_0}} = 376.73~\Omega\,.$$$S$ is also known as the power flux density, and it is
$$ S = G_\mathrm{tx}\frac{P_\mathrm{tx}}{4\pi d^2} = \int \mathrm{d}\nu\,S_\nu\,, $$the power per unit area from a transmitter with power $P_\mathrm{tx}$ and gain, $G_\mathrm{tx}$, at distance, $d$. $S_\nu$ is the flux density, which is often expressed in units of Jansky in radio astronomy. If a field strength, $E_\mathrm{rx}$, is observed originating from this transmitter we can thus calculate $P_\mathrm{tx}$ via
$$ P_\mathrm{tx}(E_\mathrm{rx}, d, G_\mathrm{tx}) = \frac{4\pi d^2}{G_\mathrm{tx}} \frac{E_\mathrm{rx}^2}{R_0}\,. $$Here, free-space propagation is assumed! Likewise, we can calculate $E_\mathrm{rx}$ for a given transmitter power, $P_\mathrm{tx}$,
$$ E_\mathrm{rx}(P_\mathrm{tx}, d, G_\mathrm{tx}) = \sqrt{\frac{P_\mathrm{tx}G_\mathrm{tx}}{4\pi} R_0} \frac{1}{d}\,. $$Example:
$$ E_\mathrm{rx}^\mathrm{unit} \equiv E_\mathrm{rx}(1~\mathrm{W}, 1~\mathrm{km}, 1) = 5.475\cdot10^{-3}~\frac{\mathrm{V}}{\mathrm{m}} $$One often uses logarithmic units for convenience ($\log x \equiv\log_{10}x$):
\begin{align} \mathrm{dBm}(P) = \mathrm{dB}_\mathrm{mW}(P) &\equiv \mathrm{dB}\left[P[\mathrm{mW}]\right] = 10\log\left(P[W]\right) + 30 \\ \mathrm{dB}_{\mathrm{\mu V / m}}(E) &\equiv \mathrm{dB}\left[\left(E[\mathrm{\mu V / m}]\right)^2\right] = 20\log\left(E\left[\mathrm{\mu V/m}\right]\right)\\ \mathrm{dB}_{\mathrm{W / m^2}}(S) &\equiv \mathrm{dB}\left[S[\mathrm{W / m^2}]\right] = 10\log\left(S\left[\mathrm{W/m^2}\right]\right) \end{align}Example:
$$ E_\mathrm{rx}^\mathrm{unit} \left[\mathrm{dB}_{\mathrm{\mu V / m}}\right] = 74.768$$If a receiving station detects a certain field strengths (or power), the equivalent isotropically radiated power (EIRP) is the necessary transmitted power, $P_\mathrm{tx}$ if the transmitter gain, $G_\mathrm{tx}$, was $0~\mathrm{dBi}$. The true transmitted power could have been much lower (higher), if the transmitter had positive (negative) gain (in dBi) towards the receiver.
\begin{equation} \begin{split} P_\mathrm{tx}\left[\mathrm{dBm}\right] &= \mathrm{dBm}\left[\frac{4\pi d^2}{G} \frac{E_\mathrm{rx}^2}{R_0}\right]\\ &= \mathrm{dB}\left[\left(E[\mathrm{\mu V / m}]\right)^2\right] + \mathrm{dB}\left[\left(d[\mathrm{m}]\right)^2\right] + \mathrm{dB}\left[G\right] + \mathrm{dB}\left[R_0[\mathrm{mW / \mu V}^2]\right] \\ &= 20\log\left(E\left[\mathrm{\mu V/m}\right]\right) + 20\log(d[\mathrm{m}]) + 10\log(G) - 74.8 \\ &= 20\log\left(E\left[\mathrm{\mu V/m}\right]\right) + 20\log(d[\mathrm{km}]) + 10\log(G) - 44.8 \end{split} \end{equation}\begin{equation} \begin{split} P_\mathrm{eirp}[\mathrm{dBm}] \overset{G=1}{\equiv} P_\mathrm{tx}\left[\mathrm{dBm}\right] &= 20\log\left(E\left[\mathrm{\mu V/m}\right]\right) + 20\log(d[\mathrm{km}]) - 44.8 \end{split} \end{equation}Up to now, we only converted (transmitted) power to (received) field strength at a certain distance. However, usually an antenna is used to measure (the power of) the field strength. This is where things get frequency-dependent, as we will see now. The observed power flux density, $S$, from the transmitter creates a power, $P_\mathrm{rx}$, depending on the effective area of the receiver
$$ P_\mathrm{rx} = S\cdot A_\mathrm{eff}^\mathrm{rx}\,.$$One can show that independent of the antenna type
$$ \frac{G(\theta, \phi)}{A_\mathrm{eff}(\theta, \phi)} = \frac{4\pi}{\lambda^2}\,. $$Hence,
$$ P_\mathrm{rx} = S\cdot A_\mathrm{eff}^\mathrm{rx} = S\cdot G_\mathrm{rx}\frac{\lambda^2}{4\pi} \,,$$i.e., the received power is dependent on frequency. From this, it also follows that
$$ P_\mathrm{rx} = \frac{E^2}{R_0} G_\mathrm{rx}\frac{\lambda^2}{4\pi} \,.$$This seemingly counterintuitive behavior can also be understood with the following argument. Assume, both antenna gains are one, $G=1=0~\mathrm{dBi}$ (w.l.o.g). To receive a certain power with the given antenna area, i.e., receive power flux density, $S$, and as such have $G=1$, an antenna needs to get larger with larger wavelength, because
$$ A_\mathrm{eff} = G\frac{\lambda^2}{4\pi}$$Combining
$$ P_\mathrm{rx} = S\cdot G_\mathrm{rx}\frac{\lambda^2}{4\pi}= S\cdot G_\mathrm{rx}\frac{c^2}{4\pi}\frac{1}{f^2} \,,$$and
$$ S = G_\mathrm{tx}\frac{P_\mathrm{tx}}{4\pi d^2}\,, $$it directly follows that
$$ \frac{P_\mathrm{rx}}{P_\mathrm{tx}} = G_\mathrm{tx} G_\mathrm{rx} \left(\frac{\lambda}{4\pi d}\right)^2$$$$ P_\mathrm{rx} [\mathrm{dBm}] = P_\mathrm{tx} [\mathrm{dBm}] + G_\mathrm{tx} [\mathrm{dB}] + G_\mathrm{rx} [\mathrm{dB}] + 20\log\left(\frac{\lambda}{4\pi d}\right)$$The last term is called free-space propagation loss
\begin{equation} \begin{split} \mathrm{FSPL} &\equiv P_\mathrm{rx} [\mathrm{dBm}] - P_\mathrm{tx} [\mathrm{dBm}] - G_\mathrm{tx} [\mathrm{dB}] - G_\mathrm{rx} [\mathrm{dB}] \\ &= 20\log\left(\frac{\lambda}{4\pi d}\right) = 20\log\left(\frac{1}{4\pi d}\frac{c}{f}\right) \\ &= - \mathrm{dB}\left[\left(d[\mathrm{km}]\right)^2\right] - \mathrm{dB}\left[\left(f[\mathrm{GHz}]\right)^2\right] -92.4 \\ &= - 20\log\left(d[\mathrm{km}]\right) - 20\log\left(f[\mathrm{GHz}]\right)-92.4 \end{split} \end{equation}Note, often one only quotes the absolute value of this as FSPL (as the name 'loss' is unambiguous).
Example:
$$ \mathrm{FSPL}(1~\mathrm{km},1~\mathrm{GHz}) = -92.4~\mathrm{dB} $$The above equations can be combined in various ways (for convenience, we repeat some of the above). Superscript 'iso' is used if $G_\mathrm{rx}=1$ or $G_\mathrm{tx}=1$, respectively
\begin{align} P_\mathrm{rx} [\mathrm{dBm}] &= P_\mathrm{tx} [\mathrm{dBm}] + G_\mathrm{tx} [\mathrm{dB}] + G_\mathrm{rx} [\mathrm{dB}] + \mathrm{FSPL} \\ \mathrm{FSPL} &= - 20\log\left(d[\mathrm{km}]\right) - 20\log\left(f[\mathrm{GHz}]\right)-92.4 \end{align}Aperture efficiency, $\varepsilon_\mathrm{a}$, is defined as \begin{equation} \varepsilon_\mathrm{a} \equiv \frac{A_\mathrm{eff}}{A_\mathrm{geom}} \end{equation}
(An isotropic loss-less antenna has $A_\mathrm{eff} = \lambda^2 / 4\pi$.)
Therefore, \begin{equation} G = \frac{4\pi }{\lambda^2} \varepsilon_\mathrm{a}A_\mathrm{geom} \end{equation}
Note, for "1-D" antennas, $A_\mathrm{geom}$ is not defined. However, one can assign an $A_\mathrm{eff}$ using the power-gain figure. From Wikipedia:
Wire antenna | Power gain | Effective area |
---|---|---|
Short dipole | 1.50 (1.76 dB) | 0.1194 $\lambda^2$ |
Dipole antenna/Half-wave dipole | 1.64 (2.15 dB) | 0.1305 $\lambda^2$ |
Monopole antenna/Quarter-wave monopole | 1.28 (1.07 dB) | 0.1025 $\lambda^2$ |
From the HPBW, $\theta$, of an antenna, one can estimate the gain
\begin{equation} \Omega_\mathrm{Beam} = \frac{4\pi }{G_\mathrm{max}},\qquad\mathrm{with}\quad \Omega_\mathrm{Beam} = \frac{\pi\theta^2[\rm rad]}{4\ln 2} \end{equation}The power flux density (or received power) will increase the antenna temperature by
\begin{equation} T_\mathrm{A} = \frac{P_\mathrm{rx}}{2k_\mathrm{B}\Delta f} = \frac{A_\mathrm{eff}S_\nu}{2k_\mathrm{B}} \end{equation}with $\Delta f$ the bandwidth of the signal (assuming constant intensity within the bandwidth).
We can identify the sensitivity, $\Gamma$, (the Kelvins-per-Jansky): \begin{equation} \Gamma \equiv \frac{T_\mathrm{A}}{S_\nu} = \frac{A_\mathrm{eff}}{2k_\mathrm{B}} \end{equation}
This is another way to characterize an antenna, which allows easy conversion between E-field strength at the antenna, $E_\mathrm{ant}\equiv E_\mathrm{rx}$ and induced voltage in the receiver, $U_\mathrm{rx}$:
\begin{align} K_\mathrm{A} &= \frac{E_\mathrm{rx}}{U_\mathrm{rx}}\\ K_\mathrm{A} \left[\mathrm{dB_{1 / m}}\right] &= E_\mathrm{rx}\left[\mathrm{dB}_{\mathrm{\mu V / m}}\right] - U_\mathrm{rx}\left[\mathrm{dB}_{\mathrm{\mu V}}\right] \end{align}The antenna factor can be related to the antenna gain via
\begin{equation} K_\mathrm{A} = \sqrt{\frac{4\pi}{G_\mathrm{rx}\lambda^2}\frac{R_0}{Z_\mathrm{i}}} \end{equation}because \begin{equation} P_\mathrm{rx}=\frac{U_\mathrm{rx}^2}{Z_\mathrm{i}} = \frac{E^2}{R_0} G_\mathrm{rx}\frac{\lambda^2}{4\pi} \end{equation}
with $Z_\mathrm{i}$ being the Antenna impedance (at footpoint). Note, that receiver input impedance and antenna impedance at footpoint are not necessarily equal. One may have to apply a correction factor (especially for high Voltage Standing Wave Ratio, VSWR).
The pycraf package contains functions that implement the above equation. Making use of the astropy.units module, one can avoid many pitfalls related to the conversion between linear and logarithmic scales, etc.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from astropy import units as apu
from astropy import constants
from pycraf import conversions as cnv
For convenience, pycraf defines the often used log-scales and quantities
cnv.dimless # == apu.Unit(1)
cnv.dB # == dBi = apu.dB(dimless)
cnv.dB_W # == apu.dB(apu.W)
cnv.dB_W_Hz # == apu.dB(apu.W / apu.Hz)
cnv.dB_W_m2 # == apu.dB(apu.W / apu.m ** 2)
cnv.dB_W_m2_Hz # == apu.dB(apu.W / apu.Hz / apu.m ** 2)
cnv.dB_Jy_Hz # == apu.dB(apu.Jy * apu.Hz)
cnv.dBm # == dB_mW = apu.dB(apu.mW)
cnv.dBm_MHz # == dB_mW_MHz = apu.dB(apu.mW / apu.MHz)
cnv.dB_uV_m # == apu.dB(apu.uV ** 2 / apu.m ** 2)
cnv.dB_1_m # == apu.dB(1. / apu.m) # for antenna factor
cnv.R0 # == 1. * (con.mu0 / con.eps0) ** 0.5
cnv.Erx_unit #= (1 * apu.W / 4. / np.pi * R0) ** 0.5 / (1 * apu.km)
print('R0 = {0.value:.3f} {0.unit}'.format(cnv.R0.to(apu.ohm)))
print('Erx = {0.value:.3f} {0.unit}'.format(cnv.Erx_unit.to(cnv.dB_uV_m)))
R0 = 376.730 Ohm Erx = 74.768 dB(uV2 / m2)
Note, that mathematically, the $\mathrm{dB}_{\mathrm{\mu V / m}}$ scale operates on amplitude-squares, so for astropy we need to take this into account.
Conversion between linear and logscale is easy (usually, only necessary for printing):
print('1 dBm = {0.value:.3f} {0.unit} = {1.value:.3f} {1.unit}'.format(
(1 * cnv.dBm).to(cnv.dB_W), (1 * cnv.dBm).to(apu.W)
))
1 dBm = -29.000 dB(W) = 0.001 W
A_eff = 10 * apu.m ** 2 # effective area
A_geom = 20 * apu.m ** 2 # geometric area
eta_a = 50 * apu.percent # antenna efficiency
print('A_eff = {0.value:.1f} {0.unit}'.format(cnv.eff_from_geom_area(A_geom, eta_a)))
print('A_geom = {0.value:.1f} {0.unit}'.format(cnv.geom_from_eff_area(A_eff, eta_a)))
A_eff = 10.0 m2 A_geom = 20.0 m2
frequency = 10 * apu.GHz
gain = 60 * cnv.dBi
print('G = {0.value:.1f} {0.unit}'.format(cnv.gain_from_eff_area(A_eff, frequency)))
print('Aeff = {0.value:.1f} {0.unit}'.format(cnv.eff_area_from_gain(gain, frequency)))
G = 51.5 dB Aeff = 71.5 m2
S = 10 * apu.Jy * apu.MHz
E_rx = -30 * cnv.dB_uV_m
distance = 10 * apu.km
G_tx = 20 * cnv.dBi
G_rx = 10 * cnv.dBi
P_rx = -10 * cnv.dBm
P_tx = 20 * cnv.dBm
print('E_rx = {0.value:.1f} {0.unit}'.format(cnv.efield_from_powerflux(S).to(cnv.dB_uV_m)))
print('S = {0.value:.1f} {0.unit}'.format(cnv.powerflux_from_efield(E_rx).to(cnv.dB_W_m2)))
E_rx = -44.2 dB(uV2 / m2) S = -175.8 dB(W / m2)
print('P_tx = {0.value:.1f} {0.unit}'.format(cnv.ptx_from_efield(E_rx, distance, G_tx).to(cnv.dB_W)))
print('E_rx = {0.value:.1f} {0.unit}'.format(cnv.efield_from_ptx(P_tx, distance, G_tx).to(cnv.dB_uV_m)))
P_tx = -104.8 dB(W) E_rx = 64.8 dB(uV2 / m2)
print('P_tx = {0.value:.1f} {0.unit}'.format(cnv.ptx_from_powerflux(S, distance, G_tx).to(cnv.dB_W)))
print('S = {0.value:.1f} {0.unit}'.format(cnv.powerflux_from_ptx(P_tx, distance, G_tx).to(cnv.dB_W_m2)))
P_tx = -119.0 dB(W) S = -81.0 dB(W / m2)
print('P_rx = {0.value:.1f} {0.unit}'.format(cnv.prx_from_powerflux(S, frequency, G_rx).to(cnv.dB_W)))
print('S = {0.value:.1f} {0.unit}'.format(cnv.powerflux_from_prx(P_rx, frequency, G_rx).to(cnv.dB_W_m2)))
P_rx = -221.5 dB(W) S = -8.5 dB(W / m2)
fspl = cnv.free_space_loss(distance, frequency)
print('FSPL = {0.value:.1f} {0.unit}'.format(fspl))
FSPL = -132.4 dB
print('P_rx = {0.value:.1f} {0.unit}'.format(
cnv.prx_from_ptx(P_tx, G_tx, G_rx, distance, frequency).to(cnv.dB_W)
))
print('P_tx = {0.value:.1f} {0.unit}'.format(
cnv.ptx_from_prx(P_rx, G_tx, G_rx, distance, frequency).to(cnv.dB_W)
))
P_rx = -112.4 dB(W) P_tx = 62.4 dB(W)
flux_0dbm_1km_iso = cnv.powerflux_from_ptx(0 * cnv.dBm, 1 * apu.km, 0 * cnv.dBi)
print(
'Flux at 1 km distance for Ptx = 0 dBm, isotropic:\n'
'{0.value:.1f} {0.unit} = {1.value:.1f} {1.unit}\n'.format(
flux_0dbm_1km_iso.to(cnv.dB_W_m2),
flux_0dbm_1km_iso.to(cnv.dB_Jy_Hz)
)
)
prx_1W_m2_at1GHz_iso = cnv.prx_from_powerflux(1 * apu.Watt / apu.m ** 2, 1 * apu.GHz, 0 * cnv.dBi)
print(
'Received power for a power flux density of 1 W / m^2 at 1 GHz, isotropic:\n'
'{0.value:.1f} {0.unit}\n'.format(
prx_1W_m2_at1GHz_iso.to(cnv.dBm)
)
)
prx_1JyHz_at1GHz_iso = cnv.prx_from_powerflux(1 * apu.Jy * apu.Hz, 1 * apu.GHz, 0 * cnv.dBi)
print(
'Received power for a power flux density of 1 Jy.Hz at 1 GHz, isotropic:\n'
'{0.value:.1f} {0.unit}\n'.format(
prx_1JyHz_at1GHz_iso.to(cnv.dBm)
)
)
prx_0dbm_at1km1GHz_iso = cnv.prx_from_powerflux(
cnv.powerflux_from_ptx(0 * cnv.dBm, 1 * apu.km, 0 * cnv.dBi),
1 * apu.GHz, 0 * cnv.dBi
)
print(
'Power received from a 0 dBm transmitter at 1 km distance, at 1 GHz:\n'
'(both antennas isotropic)\n'
'{0.value:.1f} {0.unit}\n'.format(
prx_0dbm_at1km1GHz_iso.to(cnv.dBm)
)
)
Flux at 1 km distance for Ptx = 0 dBm, isotropic: -101.0 dB(W / m2) = 159.0 dB(Hz Jy) Received power for a power flux density of 1 W / m^2 at 1 GHz, isotropic: 8.5 dB(mW) Received power for a power flux density of 1 Jy.Hz at 1 GHz, isotropic: -251.5 dB(mW) Power received from a 0 dBm transmitter at 1 km distance, at 1 GHz: (both antennas isotropic) -92.4 dB(mW)
We can also check, if the convenience equations above are correct:
freq = 1 * apu.GHz
dist = 1 * apu.km
loss_1ghz_1km = cnv.free_space_loss(dist, freq)
print(
'Free-space loss at 1 km, 1 GHz: '
'{0.value:.1f} {0.unit}'.format(
loss_1ghz_1km
))
print(
'PFD from 1 dbm at 1 km distance: '
'{0.value:.1f} {0.unit} = {1.value:.1f} {1.unit}\n'.format(
cnv.powerflux_from_ptx(0 * cnv.dBm, 1 * apu.km, 1. * cnv.dimless).to(cnv.dB_W_m2),
cnv.powerflux_from_ptx(0 * cnv.dBm, 1 * apu.km, 1. * cnv.dimless).to(cnv.dB_Jy_Hz)
))
print(
'Prx from 1 W/m**2 at 1 GHz: {0.value:.1f} {0.unit}\n'.format(
cnv.prx_from_powerflux(0 * cnv.dB_W_m2, 1 * apu.GHz, 1. * cnv.dimless).to(cnv.dBm)
))
print(
'Prx from 1 Jy*Hz at 1 GHz: {0.value:.1f} {0.unit}\n'.format(
cnv.prx_from_powerflux(0 * cnv.dB_Jy_Hz, 1 * apu.GHz, 1. * cnv.dimless).to(cnv.dBm)
))
print('EIRP from 1 uV/m at 1 km distance: {0.value:.3f} {0.unit}\n'.format(
cnv.ptx_from_efield(0. * cnv.dB_uV_m, 1 * apu.km, 1. * cnv.dimless).to(cnv.dBm)
))
print('Prx from 1 uV/m at 1 GHz: {0.value:.1f} {0.unit}\n'.format(
cnv.prx_from_ptx(
cnv.ptx_from_efield(0. * cnv.dB_uV_m, 1 * apu.km, 0. * cnv.dBi),
0. * cnv.dBi, 0. * cnv.dBi, 1 * apu.km, 1 * apu.GHz
).to(cnv.dBm)))
Free-space loss at 1 km, 1 GHz: -92.4 dB PFD from 1 dbm at 1 km distance: -101.0 dB(W / m2) = 159.0 dB(Hz Jy) Prx from 1 W/m**2 at 1 GHz: 8.5 dB(mW) Prx from 1 Jy*Hz at 1 GHz: -251.5 dB(mW) EIRP from 1 uV/m at 1 km distance: -44.768 dB(mW) Prx from 1 uV/m at 1 GHz: -137.2 dB(mW)
wavlen = 6 * apu.cm
freq = constants.c / wavlen
print('f = {:.3f}'.format(freq.to(apu.GHz)))
bandwidth = 500 * apu.MHz
S_nu = 1 * apu.Jy
Aeff = 3927 * apu.m ** 2
S = S_nu * bandwidth
print('S = {:.3e} = {:.1f}'.format(
S.to(apu.Watt / apu.m ** 2), S.to(cnv.dB_W_m2)
))
Prx = S * Aeff
print('P_rx = {:.3e} = {:.1f}'.format(Prx.to(apu.Watt), Prx.to(cnv.dBm)))
f = 4.997 GHz S = 5.000e-18 W / m2 = -173.0 dB(W / m2) P_rx = 1.964e-14 W = -107.1 dB(mW)
int_time = 1 * apu.min
E = Prx * int_time
print('E = {:.3e} = {:.3e} = {:.3e}'.format(
E.to(apu.Watt * apu.h), E.to(apu.picoWatt * apu.h), E.to(apu.Joule)
))
E = 3.273e-16 h W = 3.273e-04 h pW = 1.178e-12 J
int_time = 40 * apu.year
S_nu = 40 * apu.Jy
E = S_nu * bandwidth * Aeff * int_time
print('E = {:.3e}'.format(E.to(apu.Joule)))
mass = 10 * apu.g
print('E = {:.3e} = {:.3f}'.format(E.to(apu.Watt * apu.h), E.to(apu.nanoWatt * apu.h)))
def h_from_E(mass, E):
# E_pot = mass * height * g
return E / mass / constants.g0
print('h = {:.1f}'.format(h_from_E(mass, E).to(apu.cm)))
E = 9.914e-04 J E = 2.754e-07 h W = 275.393 h nW h = 1.0 cm
dist = 384400 * apu.km
Peirp = 2 * apu.Watt
bandwidth = 100 * apu.kHz
S = cnv.powerflux_from_ptx(Peirp, dist, 0 * cnv.dBi)
S_nu = S / bandwidth
print('S_nu = {:.0f}'.format(S_nu.to(apu.Jy)))
S_nu = 1077 Jy
freq = 1800 * apu.MHz
gain = 30 * cnv.dBi
Prx = cnv.prx_from_powerflux(S, freq, gain)
print('Prx = {:.3e} = {:.3f}'.format(Prx.to(apu.W), Prx.to(cnv.dBm)))
Prx = 2.378e-18 W = -146.239 dB(mW)