def tworay_pathloss(tx, rx, p=default_p_a2g): f_MHz = p['f_Hz'] / 1e6 # MHz dist_m = map_tools.distance_elevated(tx.latitude, tx.longitude, rx.latitude, rx.longitude) rx_height_m = p['rxh_m'] # m tx_height_m = p['txh_m'] return 40 * np.log10(dist_m) - 20 * np.log10(rx_height_m * tx_height_m)
def egli_pathloss(tx, rx, p=default_p_radio): f_MHz = p['f_Hz'] / 1e6 # MHz dist_m = map_tools.distance_elevated(tx.latitude, tx.longitude, rx.latitude, rx.longitude) dist_km = dist_m / 1000 # km ant_height_m = 2 # m return 88 + 20 * np.log10(f_MHz) + 40 * np.log10(dist_km) - 20 * np.log10( ant_height_m * ant_height_m)
def egli_los_pathloss(tx,rx,p=default_p_radio): f_MHz = p['f_Hz']/1e6 # MHz c = 299792458.0 dist_m = map_tools.distance_elevated(tx.latitude, tx.longitude, rx.latitude, rx.longitude) dist_km = dist_m/1000 # km ant_height_m = 2 # m if dist_km <= 0.5: wvlength = c/(f_MHz*1e6) acs_dB = 12.66-3.5*np.log10(ant_height_m/wvlength)+0.07*dist_km fsl_pl_dB = 32.45 + 20*np.log10(f_MHz)+20*np.log10(dist_km) return acs_dB + fsl_pl_dB else: return 88 + 20*np.log10(f_MHz)+40*np.log10(dist_km)-20*np.log10(ant_height_m*ant_height_m)
def freespace_pathloss(tx, rx): f = 600e6 # Hertz c = 299792458.0 dist = map_tools.distance_elevated(tx.latitude, tx.longitude, rx.latitude, rx.longitude) return 20 * np.log10(np.pi * 4 * dist * f / c)