pytwinnet.physics.ris_beam

Classes

RISBeamModel(base, ris[, extra_loss_db])

Wraps a base PropagationModel.

SmartRISPanel(position[, element_count, ...])

Toy RIS with a steerable mainlobe. Approximates array gain:

class pytwinnet.physics.ris_beam.RISBeamModel(base, ris, extra_loss_db=3.0)[source]

Bases: PropagationModel

Wraps a base PropagationModel. For a configured target UE (by id), the RIS contributes mainlobe gain on the two-hop path; others see sidelobe gain. Effective path loss = min( direct, (tx->RIS + RIS->rx - gain + extra_loss_db) ).

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

float

Parameters:
set_beam(rx_node_id)[source]

Point mainlobe toward rx_node_id (or None for no specific target).

Return type:

None

Parameters:

rx_node_id (str | None)

class pytwinnet.physics.ris_beam.SmartRISPanel(position, element_count=64, mainlobe_gain_db=None, sidelobe_gain_db=None)[source]

Bases: object

Toy RIS with a steerable mainlobe. Approximates array gain:

mainlobe_gain_db ~= 20*log10(N) sidelobe_gain_db ~= mainlobe - 13 dB (typical)

Parameters:
element_count: int = 64
mainlobe_gain_db: Optional[float] = None
position: Tuple[float, float, float]
sidelobe_gain_db: Optional[float] = None