Skip to content

Direct Path (Tx Rx) Simulation

David Young edited this page Apr 30, 2025 · 1 revision

Description

This component calculates the characteristics of the signal traveling directly between a Transmitter (Tx) platform and a Receiver (Rx) platform within the simulation. It determines the received power, propagation delay, phase shift, and Doppler frequency shift for this direct path based on the relative geometry (position, orientation, velocity) of the two platforms and fundamental electromagnetic wave propagation principles (free-space path loss).

This calculation can be optionally disabled for specific simulation runs using the FLAG_NODIRECT configuration setting.

Assumptions

  • Assumes the transmitter and receiver are operating in the far-field, meaning they are sufficiently separated for standard far-field propagation models to apply.
  • Assumes signal propagation primarily follows the free-space loss model, where power decreases proportionally to the square of the distance (1/RΒ²), neglecting atmospheric absorption or complex environmental effects unless modeled elsewhere.
  • Assumes the length parameter (representing a small time interval for calculation) is short enough that the relative velocity between Tx and Rx can be considered approximately constant for calculating Doppler shift via finite differencing.
  • Assumes the channel is quasi-static over the length interval, meaning the geometric path characteristics (delay, loss) do not change significantly within that small time step.

Limitations

  • Doppler Approximation: The Doppler shift is calculated using a finite difference method based on the change in path length (or phase) over the length time interval. The accuracy of this approximation depends on how well length resolves the dynamics of the platforms' relative motion.
  • Phase Wrapping: The calculated phase value is wrapped (using modulo arithmetic, likely fmod) to stay within a standard range (e.g., -Ο€ to +Ο€ or 0 to 2Ο€). This means the total accumulated phase over multiple cycles is not explicitly tracked by this output value itself.
  • Multipath Interaction: If the multipath model is active and either the Transmitter or Receiver involved is identified as a "dual" object (representing its geometric image for reflection), the power contribution from this direct path calculation is abruptly set to zero (results.power = 0). It does not attempt to model constructive or destructive interference (superposition) between the direct and reflected paths at the receiver.
  • Minimum Range Check: The implementation likely includes a check against a small distance threshold (EPSILON) to prevent numerical instability (e.g., division by zero in the path loss calculation) if the Tx and Rx are co-located or extremely close.
  • Propagation Loss Flag Behavior: The FLAG_NOPROPLOSS configuration flag specifically affects the RΒ² geometric spreading loss term. It may not disable other potential loss factors or underlying signal calculations.

Related Components

  • Core calculation function: sim_threading.cpp::solveReDirect
  • Usage context / Control flag check: sim_threading.cpp::simulatePair (checks FLAG_NODIRECT)
  • Input data dependencies: Transmitter state, Receiver state, Platform geometry (position, velocity).
  • Related flags: FLAG_NODIRECT, FLAG_NOPROPLOSS
  • Interaction with Multipath: Uses getMultipathDual() check.

Validation Status

  • Needs Verification: The accuracy and specific behavior of this direct path calculation require targeted validation.
  • Key Areas for Validation:
    • Verification of the calculated power against the theoretical 1/RΒ² free-space path loss formula across various ranges.
    • Accuracy of the calculated propagation delay compared to the geometric distance / speed of light.
    • Accuracy of the calculated Doppler shift against the theoretical formula (fd = 2 * vr / lambda for monostatic equivalent, or bistatic formula) for various relative velocities (vr).
    • Correctness of the phase calculation, including wrapping behavior.
    • Confirmation that the FLAG_NODIRECT flag correctly disables this path calculation.
    • Precise quantitative effect of the FLAG_NOPROPLOSS flag on the output power.
    • Verification that the direct path power is reliably zeroed (and only when expected) when getMultipathDual() returns true for either the Tx or Rx involved.
  • Priority: Medium (Essential for scenarios with significant direct path signals or bistatic configurations, but target interaction might be higher priority).

Clone this wiki locally