Skip to content

Returns

Target and electronic-attack return models.

Defines :class:Target (kinematics and RCS), :class:EaPlatform (DRFM jammer transmitter parameters), and :class:Return (pairing of a target with an optional EA platform) used as inputs to the RDM generator.

EaPlatform dataclass

Electronic attack (EA) platform — hardware and signal modulation parameters.

All fields beyond the first three are modulation parameters that control how the stored pulse is modified before retransmission.

Attributes:

Name Type Description
tx_power float

Transmit power [W].

tx_gain float

Transmit antenna gain [linear].

total_losses float

Total system losses [linear].

rdot_delta float | None

VBM Doppler spread [m/s]. None disables VBM entirely.

rdot_offset float

Doppler frequency offset applied to the retransmitted pulse [m/s]. Defaults to 0.

range_offset float

Additional apparent range offset injected by the EA [m]. Defaults to 0.

delay float

Additional time delay applied to the retransmitted pulse [s]. Defaults to 0.

vbm_noise_function Callable | None

Phase-noise function used for VBM slow-time modulation. None selects the default LFM noise function.

Source code in src/rad_lab/returns.py
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
@dataclass
class EaPlatform:
    """Electronic attack (EA) platform — hardware and signal modulation parameters.

    All fields beyond the first three are modulation parameters that control how
    the stored pulse is modified before retransmission.

    Attributes:
        tx_power: Transmit power [W].
        tx_gain: Transmit antenna gain [linear].
        total_losses: Total system losses [linear].
        rdot_delta: VBM Doppler spread [m/s].  ``None`` disables VBM entirely.
        rdot_offset: Doppler frequency offset applied to the retransmitted
            pulse [m/s].  Defaults to 0.
        range_offset: Additional apparent range offset injected by the EA [m].
            Defaults to 0.
        delay: Additional time delay applied to the retransmitted pulse [s].
            Defaults to 0.
        vbm_noise_function: Phase-noise function used for VBM slow-time
            modulation.  ``None`` selects the default LFM noise function.
    """

    tx_power: float
    tx_gain: float
    total_losses: float
    rdot_delta: float | None = None
    rdot_offset: float = 0.0
    range_offset: float = 0.0
    delay: float = 0.0
    vbm_noise_function: Callable | None = None

delay = 0.0 class-attribute instance-attribute

range_offset = 0.0 class-attribute instance-attribute

rdot_delta = None class-attribute instance-attribute

rdot_offset = 0.0 class-attribute instance-attribute

total_losses instance-attribute

tx_gain instance-attribute

tx_power instance-attribute

vbm_noise_function = None class-attribute instance-attribute

__init__(tx_power, tx_gain, total_losses, rdot_delta=None, rdot_offset=0.0, range_offset=0.0, delay=0.0, vbm_noise_function=None)

Return dataclass

A simulated radar return — skin, jammer-based EA, or both simultaneously.

The two contributions are independent and additive:

  • Skin return fires when target.rcs is not None. The radar's own transmitted pulse reflects off the target. target.rcs sets the physical amplitude via the two-way range equation.
  • Memory return fires when platform is not None. A DRFM jammer receives the pulse, stores it, and retransmits with the modulation specified in platform. Amplitude is derived from the one-way link equation.

Both can be active on the same Return, modelling a jammer co-located with the target (set target.rcs and supply a platform).

Attributes:

Name Type Description
target Target

Target kinematics and (for skin) RCS.

platform EaPlatform | None

EA platform parameters. None disables jammer return.

Source code in src/rad_lab/returns.py
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
@dataclass
class Return:
    """A simulated radar return — skin, jammer-based EA, or both simultaneously.

    The two contributions are independent and additive:

    - Skin return fires when ``target.rcs is not None``.  The radar's own
      transmitted pulse reflects off the target.  ``target.rcs`` sets the
      physical amplitude via the two-way range equation.
    - Memory return fires when ``platform is not None``.  A DRFM jammer
      receives the pulse, stores it, and retransmits with the modulation
      specified in ``platform``.  Amplitude is derived from the one-way
      link equation.

    Both can be active on the same Return, modelling a jammer co-located
    with the target (set ``target.rcs`` and supply a ``platform``).

    Attributes:
        target: Target kinematics and (for skin) RCS.
        platform: EA platform parameters.  ``None`` disables jammer return.
    """

    target: Target
    platform: EaPlatform | None = None

platform = None class-attribute instance-attribute

target instance-attribute

__init__(target, platform=None)

Target dataclass

Target kinematics and scattering parameters.

Attributes:

Name Type Description
range float

True target range [m].

range_rate float

Radial velocity (positive = receding) [m/s].

rcs float | None

Radar cross section [m^2]. Required for skin return amplitude; unused by jammer return amplitude in physical mode.

sv complex

Steering vector component for a single array element [dimensionless]. Defaults to 1 (isotropic / no array).

Source code in src/rad_lab/returns.py
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@dataclass
class Target:
    """Target kinematics and scattering parameters.

    Attributes:
        range: True target range [m].
        range_rate: Radial velocity (positive = receding) [m/s].
        rcs: Radar cross section [m^2].  Required for skin return amplitude;
            unused by jammer return amplitude in physical mode.
        sv: Steering vector component for a single array element [dimensionless].
            Defaults to 1 (isotropic / no array).
    """

    range: float
    range_rate: float
    rcs: float | None = None
    sv: complex = 1

range instance-attribute

range_rate instance-attribute

rcs = None class-attribute instance-attribute

sv = 1 class-attribute instance-attribute

__init__(range, range_rate, rcs=None, sv=1)