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)
| Channel | Content | Units |
|---|---|---|
[t, 0, :, :] | Phase | Radians |
[t, 1, :, :] | Amplitude | Unitless |
Architecture
The simulator has two parallel implementations:
| CPU (NumPy) | GPU (TensorFlow) | |
|---|---|---|
| Layer | core/layer/layer.py | gpu_core/gpu_layer/gpu_layer.py |
| Simulator | simulator/simulator.py | gpu_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
- Installation -- Set up the environment
- Quick Start -- Run your first simulation