Payload¶
Multi-beam payload modeling — beam definitions, beam sets, capacity maps, and interference analysis.
Beam¶
Beam
dataclass
¶
A single satellite beam with its own antenna pattern.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
beam_id
|
str
|
Unique identifier for this beam. |
required |
az_deg
|
float
|
Boresight azimuth in degrees. |
required |
el_deg
|
float
|
Boresight elevation in degrees. |
required |
tx_power_w
|
float
|
Transmit power allocated to this beam in watts. |
required |
antenna
|
AntennaModel
|
Antenna model describing the beam's radiation pattern. |
required |
gain_toward_dbi
¶
Evaluate beam antenna gain toward a specific direction.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
az_deg
|
target azimuth (deg)
|
|
required |
el_deg
|
target elevation (deg)
|
|
required |
f_hz
|
frequency(Hz)
|
|
required |
Returns:
| Type | Description |
|---|---|
Gain in dBi toward the specified direction.
|
|
Source code in src/opensatcom/payload/beam.py
eirp_toward_dbw
¶
EIRP toward a specific direction.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
az_deg
|
float
|
Target azimuth in degrees. |
required |
el_deg
|
float
|
Target elevation in degrees. |
required |
f_hz
|
float
|
Frequency in Hz. |
required |
Returns:
| Type | Description |
|---|---|
float
|
EIRP in dBW toward the specified direction. |
Source code in src/opensatcom/payload/beam.py
BeamSet¶
BeamSet
¶
A set of satellite beams sharing common scenario, propagation, and RF chain.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
beams
|
list[Beam]
|
List of Beam objects forming the multi-beam payload. |
required |
scenario
|
Scenario
|
Link scenario defining frequency, bandwidth, and requirements. |
required |
propagation
|
PropagationModel
|
Propagation model used for path loss computation. |
required |
rf_chain
|
RFChainModel
|
Shared RF chain parameters (e.g., noise temperature). |
required |
Source code in src/opensatcom/payload/beamset.py
Capacity Map¶
capacity
¶
Capacity map computation — evaluates interference across an az/el grid.
compute_beam_map
¶
compute_beam_map(beamset, grid_az_deg, grid_el_deg, rx_antenna, rx_terminal, range_m, cond, beam_selection='max_gain')
Compute a beam map (capacity/interference map) over an az/el grid.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
beamset
|
multi-beam payload
|
|
required |
grid_az_deg
|
1-D array of azimuth values for the grid
|
|
required |
grid_el_deg
|
1-D array of elevation values for the grid
|
|
required |
rx_antenna
|
victim receive antenna
|
|
required |
rx_terminal
|
victim terminal (for noise temp)
|
|
required |
range_m
|
slant range to the victim
|
|
required |
cond
|
propagation conditions
|
|
required |
beam_selection
|
'max_gain'(default) or 'nearest'
|
|
'max_gain'
|
Returns:
| Type | Description |
|---|---|
BeamMap
|
Beam map with one |
Source code in src/opensatcom/payload/capacity.py
BeamMap¶
BeamMapPoint
dataclass
¶
A single evaluated point in the beam map grid.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
az_deg
|
float
|
Azimuth of the grid point in degrees. |
required |
el_deg
|
float
|
Elevation of the grid point in degrees. |
required |
serving_beam_id
|
str
|
Identifier of the beam serving this grid point. |
required |
result
|
InterferenceResult
|
Interference evaluation result at this point. |
required |
BeamMap
¶
Collection of evaluated beam map points with analysis methods.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
points
|
list[BeamMapPoint]
|
List of evaluated beam map points, each holding interference evaluation results for one grid location. |
required |
Source code in src/opensatcom/payload/beammap.py
to_dataframe
¶
Export beam map to a DataFrame for analysis and persistence.
Returns:
| Type | Description |
|---|---|
DataFrame
|
DataFrame with columns: |
Source code in src/opensatcom/payload/beammap.py
per_beam_summary
¶
Per-beam summary statistics.
Returns:
| Type | Description |
|---|---|
dict[str, dict[str, float]]
|
Mapping of |
Source code in src/opensatcom/payload/beammap.py
Interference Model¶
InterferenceResult
dataclass
¶
InterferenceResult(serving_beam_id, signal_dbw, interference_dbw, noise_dbw, cnir_db, sinr_db, cn0_dbhz, ebn0_db, margin_db, throughput_mbps=None)
Result of an interference evaluation at a single point.
All power values are in dB domain. Interference and noise are summed in linear domain then converted.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
serving_beam_id
|
str
|
Identifier of the beam serving this point. |
required |
signal_dbw
|
float
|
Received signal power from the serving beam in dBW. |
required |
interference_dbw
|
float
|
Total co-channel interference power from non-serving beams in dBW. |
required |
noise_dbw
|
float
|
Thermal noise power in dBW. |
required |
cnir_db
|
float
|
Carrier-to-noise-plus-interference ratio C/(N+I) in dB. |
required |
sinr_db
|
float
|
Signal-to-interference ratio C/I in dB (inf when no interference). |
required |
cn0_dbhz
|
float
|
Carrier-to-noise-density ratio C/N0 in dB-Hz. |
required |
ebn0_db
|
float
|
Energy-per-bit to noise-density ratio Eb/N0 in dB. |
required |
margin_db
|
float
|
Link margin relative to the scenario requirement in dB. |
required |
throughput_mbps
|
float or None
|
Achievable throughput in Mbps, or None if not computed. |
None
|
SimpleInterferenceModel
¶
Evaluate signal, interference, and noise for a multi-beam payload.
For a victim at a given direction and range: 1. Signal (C) = serving beam's EIRP toward victim / path_loss * rx_gain 2. Interference (I) = sum of non-serving beams' EIRP / path_loss * rx_gain 3. Noise (N) = kB * T_sys * bandwidth 4. SINR = C / I (linear, then to dB) 5. C/(N+I) = C / (N + I)
Path loss is the same for all beams (same satellite, same range to victim).
evaluate
¶
evaluate(beamset, serving_beam_id, victim_az_deg, victim_el_deg, range_m, rx_antenna, rx_terminal, cond)
Evaluate interference at a single victim location.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
beamset
|
BeamSet
|
The multi-beam payload containing all beams. |
required |
serving_beam_id
|
str
|
Identifier of the beam serving this victim. |
required |
victim_az_deg
|
float
|
Azimuth direction to the victim from the satellite in degrees. |
required |
victim_el_deg
|
float
|
Elevation direction to the victim from the satellite in degrees. |
required |
range_m
|
float
|
Slant range to the victim in meters. |
required |
rx_antenna
|
AntennaModel
|
Victim's receive antenna model. |
required |
rx_terminal
|
Terminal
|
Victim terminal (provides system noise temperature). |
required |
cond
|
PropagationConditions
|
Propagation conditions for path loss evaluation. |
required |
Returns:
| Type | Description |
|---|---|
InterferenceResult
|
Interference evaluation result containing signal, interference, noise powers, CNIR, SINR, C/N0, Eb/N0, and margin. |
Source code in src/opensatcom/payload/interference.py
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | |