Scenarios API¶
Scenario classes for defining operating conditions.
Overview¶
from phased_array_systems.scenarios import (
ScenarioBase,
CommsLinkScenario,
RadarDetectionScenario,
)
Classes¶
ScenarioBase
¶
Bases: BaseModel
Base class for all scenario types.
All scenarios must have a frequency, which is used to compute wavelength and other frequency-dependent parameters.
| ATTRIBUTE | DESCRIPTION |
|---|---|
freq_hz |
Operating frequency in Hz
TYPE:
|
name |
Optional name for the scenario
TYPE:
|
CommsLinkScenario
¶
Bases: ScenarioBase
Scenario for communications link budget analysis.
Defines the parameters needed for a point-to-point or satellite communications link budget calculation.
| ATTRIBUTE | DESCRIPTION |
|---|---|
freq_hz |
Operating frequency (Hz)
TYPE:
|
bandwidth_hz |
Signal bandwidth (Hz)
TYPE:
|
range_m |
Link range/distance (meters)
TYPE:
|
required_snr_db |
Required SNR for demodulation (dB)
TYPE:
|
scan_angle_deg |
Beam scan angle from boresight (degrees)
TYPE:
|
rx_antenna_gain_db |
Receive antenna gain (dB), None for isotropic
TYPE:
|
rx_noise_temp_k |
Receive system noise temperature (K)
TYPE:
|
path_loss_model |
Propagation model to use
TYPE:
|
path_loss_exponent |
Path loss exponent for log-distance model
TYPE:
|
rain_rate_mmh |
Rain rate for rain attenuation (mm/hr)
TYPE:
|
elevation_deg |
Link elevation angle for atmospheric model (degrees)
TYPE:
|
atmospheric_loss_db |
Additional atmospheric losses (dB)
TYPE:
|
rain_loss_db |
Rain fade margin (dB)
TYPE:
|
polarization_loss_db |
Polarization mismatch loss (dB)
TYPE:
|
total_extra_loss_db
property
¶
Total additional losses beyond free space path loss.
RadarDetectionScenario
¶
Bases: ScenarioBase
Scenario for radar detection analysis.
Defines the operating conditions for monostatic radar detection, including target characteristics, detection requirements, pulse integration parameters, clutter environment, and propagation effects.
| ATTRIBUTE | DESCRIPTION |
|---|---|
freq_hz |
Operating frequency (Hz)
TYPE:
|
bandwidth_hz |
Signal bandwidth (Hz)
TYPE:
|
range_m |
Target range (meters)
TYPE:
|
target_rcs_dbsm |
Target radar cross section (dBsm)
TYPE:
|
rx_noise_temp_k |
Receiver noise temperature (K)
TYPE:
|
pfa |
Probability of false alarm
TYPE:
|
pd_required |
Required probability of detection
TYPE:
|
n_pulses |
Number of pulses integrated
TYPE:
|
scan_angle_deg |
Beam scan angle from boresight (degrees)
TYPE:
|
integration_type |
Coherent or non-coherent integration
TYPE:
|
clutter_type |
Type of clutter environment
TYPE:
|
sea_state |
Sea state for sea clutter (0-6 Douglas scale)
TYPE:
|
terrain_type |
Terrain type for ground clutter
TYPE:
|
rain_rate_mm_hr |
Rain rate for rain clutter/attenuation
TYPE:
|
grazing_angle_deg |
Grazing angle for clutter calculations
TYPE:
|
antenna_height_m |
Antenna height above surface
TYPE:
|
target_height_m |
Target height above surface
TYPE:
|
polarization |
Antenna polarization
TYPE:
|
cfar_type |
CFAR detector type
TYPE:
|
cfar_ref_cells |
Number of CFAR reference cells
TYPE:
|
cfar_guard_cells |
Number of CFAR guard cells
TYPE:
|
include_atmos_loss |
Include atmospheric attenuation
TYPE:
|
temperature_c |
Ambient temperature for atmos model
TYPE:
|
humidity_pct |
Relative humidity for atmos model
TYPE:
|
Usage Examples¶
Communications Scenario¶
from phased_array_systems.scenarios import CommsLinkScenario
# Point-to-point link
scenario = CommsLinkScenario(
freq_hz=10e9,
bandwidth_hz=10e6,
range_m=100e3,
required_snr_db=10.0,
scan_angle_deg=0.0,
rx_antenna_gain_db=30.0,
rx_noise_temp_k=290.0,
)
print(f"Wavelength: {scenario.wavelength_m * 100:.2f} cm")
print(f"Total extra loss: {scenario.total_extra_loss_db:.1f} dB")
Radar Scenario¶
from phased_array_systems.scenarios import RadarDetectionScenario
scenario = RadarDetectionScenario(
freq_hz=10e9,
target_rcs_m2=1.0,
range_m=100e3,
required_pd=0.9,
pfa=1e-6,
pulse_width_s=10e-6,
prf_hz=1000,
n_pulses=10,
integration_type="coherent",
swerling_model=1,
)
Satellite Link¶
geo_scenario = CommsLinkScenario(
freq_hz=12e9,
bandwidth_hz=36e6,
range_m=36000e3,
required_snr_db=8.0,
rx_antenna_gain_db=45.0,
rx_noise_temp_k=80.0,
atmospheric_loss_db=0.3,
rain_loss_db=5.0,
)