Skip to main content

AtmoTurbSim

AtmoTurbSim is a GPU-accelerated atmospheric turbulence simulator for satellite-to-ground (downlink) optical communication links operating at 1550 nm.

What It Does

The simulator models how a laser beam propagates from a satellite through Earth's atmosphere to a ground receiver. It computes the effects of atmospheric turbulence on the beam's phase and amplitude as it passes through multiple turbulent layers.

Key Features

  • GPU-Accelerated -- TensorFlow-based computation for fast simulation on NVIDIA GPUs
  • Physically Accurate -- Hufnagel-Valley Cn2 model, Bufton wind model, Von Karman phase screens with subharmonic compensation
  • Configurable -- All parameters (turbulence strength, number of layers, grid resolution, simulation time) are set via a single JSON config file
  • Streaming Mode -- Process long simulations without running out of GPU memory by chunking frames to disk
  • Analysis Tools -- Built-in performance testing, Monte Carlo analysis, and benchmarking

Output

Each simulation produces a 4D NumPy array of shape:

(steps, 2, nx_size, nx_size)
ChannelContentUnits
[t, 0, :, :]PhaseRadians
[t, 1, :, :]AmplitudeUnitless

Architecture

The simulator has two parallel implementations:

CPU (NumPy)GPU (TensorFlow)
Layercore/layer/layer.pygpu_core/gpu_layer/gpu_layer.py
Simulatorsimulator/simulator.pygpu_core/gpu_simulator/gpu_simulator.py

The GPU implementation (GpuSimulator) inherits from the CPU version (Simulator) and is the primary production path. All @tf.function-decorated methods run as compiled TensorFlow graphs for maximum throughput.

Next Steps