forked from stpaine/FERS
-
Notifications
You must be signed in to change notification settings - Fork 1
Direct Path (Tx Rx) Simulation
David Young edited this page Apr 30, 2025
·
1 revision
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.
- 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
lengthparameter (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
lengthinterval, meaning the geometric path characteristics (delay, loss) do not change significantly within that small time step.
-
Doppler Approximation: The Doppler shift is calculated using a finite difference method based on the change in path length (or phase) over the
lengthtime interval. The accuracy of this approximation depends on how welllengthresolves 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_NOPROPLOSSconfiguration flag specifically affects the RΒ² geometric spreading loss term. It may not disable other potential loss factors or underlying signal calculations.
- Core calculation function:
sim_threading.cpp::solveReDirect - Usage context / Control flag check:
sim_threading.cpp::simulatePair(checksFLAG_NODIRECT) - Input data dependencies:
Transmitterstate,Receiverstate,Platformgeometry (position, velocity). - Related flags:
FLAG_NODIRECT,FLAG_NOPROPLOSS - Interaction with Multipath: Uses
getMultipathDual()check.
- 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 / lambdafor monostatic equivalent, or bistatic formula) for various relative velocities (vr). - Correctness of the phase calculation, including wrapping behavior.
- Confirmation that the
FLAG_NODIRECTflag correctly disables this path calculation. - Precise quantitative effect of the
FLAG_NOPROPLOSSflag 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).