pytwinnet.physics.fading

Classes

FadedModel(base[, kind, K_dB, seed, epoch])

Wraps a base model and adds small-scale fading (Rayleigh or Rician) as an extra dB term: PL_faded = PL + fading_loss_db where fading_loss_db = -10*log10(|h|^2). Fading is deterministic per (tx, rx, epoch). Change 'epoch' to re-sample.

ShadowedModel(base[, sigma_db, seed, epoch])

Wraps a base propagation model and adds log-normal shadowing (Gaussian in dB).

class pytwinnet.physics.fading.FadedModel(base, kind='rayleigh', K_dB=6.0, seed=0, epoch=None)[source]

Bases: PropagationModel

Wraps a base model and adds small-scale fading (Rayleigh or Rician) as an extra dB term: PL_faded = PL + fading_loss_db where fading_loss_db = -10*log10(|h|^2). Fading is deterministic per (tx, rx, epoch). Change ‘epoch’ to re-sample.

Parameters:
K_dB: float = 6.0
base: PropagationModel
calculate_path_loss(tx, rx, environment)[source]
Return type:

float

Parameters:
epoch: Optional[int] = None
kind: str = 'rayleigh'
seed: int = 0
set_epoch(epoch)[source]
Return type:

None

Parameters:

epoch (int | None)

class pytwinnet.physics.fading.ShadowedModel(base, sigma_db=6.0, seed=0, epoch=None)[source]

Bases: PropagationModel

Wraps a base propagation model and adds log-normal shadowing (Gaussian in dB). Shadowing is deterministic per (tx, rx, epoch) for reproducibility. Change ‘epoch’ (int) to refresh the samples (e.g., per-drop or per-time-slot).

Parameters:
base: PropagationModel
calculate_path_loss(tx, rx, environment)[source]
Return type:

float

Parameters:
epoch: Optional[int] = None
seed: int = 0
set_epoch(epoch)[source]
Return type:

None

Parameters:

epoch (int | None)

sigma_db: float = 6.0