Configuration
All simulation parameters are defined in config.json. The file uses a nested format where each parameter has a value and description field.
Config Format
{
"atmosphere_params": {
"num_layers": {
"value": 20,
"description": "Number of atmospheric layers"
}
}
}
Top-Level Flags
| Key | Type | Default | Description |
|---|---|---|---|
real_world_simulation_flag.value | bool | true | When true, simulation steps = whole_simulation_time / per_tick_simulation. When false, defaults to 100 steps. |
save.flag | bool | true | Whether to save output files |
create_data_set.flag | bool | false | Enable dataset generation mode |
create_data_set.number_of_datasets | int | 3 | Number of datasets to generate |
Atmosphere Parameters
Parameters under atmosphere_params:
| Parameter | Default | Units | Description |
|---|---|---|---|
num_layers | 20 | -- | Number of atmospheric turbulence layers |
total_r0 | 20e-2 | meters | Fried parameter (turbulence strength). Smaller values = stronger turbulence |
phase_screen_size | 2048 | pixels | NxN grid size for phase screens |
delta | 0.01 | meters | Spatial resolution (pixel scale) of phase screens |
ground_wind_speed | 5 | m/s | Wind speed at ground level |
L0 | 25 | meters | Outer scale of turbulence |
wavefront_wavelength | 1.55e-6 | meters | Propagating wavefront wavelength (1550 nm) |
satellite_zenith_angle_starting | 0 | degrees | Starting zenith angle (unvalidated -- do not change) |
Simulation Parameters
Parameters under simulation_params:
| Parameter | Default | Units | Description |
|---|---|---|---|
whole_simulation_time | 0.10 | seconds | Total simulation duration |
per_tick_simulation | 0.001 | seconds | Time step per iteration |
satellite_orbit | 600000.0 | meters | Satellite orbit altitude (600 km) |
Monte Carlo Configuration
Parameters under monte_carlo:
| Parameter | Default | Description |
|---|---|---|
enabled.value | false | Enable Monte Carlo mode |
num_runs.value | 1000 | Number of Monte Carlo iterations |
save_interval.value | 100 | Checkpoint save interval |
analysis_metrics.value | ["scintillation_index", "mcf"] | Metrics to compute per iteration |
Performance Testing Configuration
Parameters under performance_testing:
| Parameter | Default | Description |
|---|---|---|
enabled.value | false | Enable performance testing |
iterations_per_config.value | 100 | Iterations per test configuration |
configurations.value | Array | Test configs with num_layers, resolution, r0_values |
Monitoring Configuration
Parameters under monitoring:
| Parameter | Default | Description |
|---|---|---|
enabled.value | true | Enable system monitoring |
tensorboard.enabled.value | true | Enable TensorBoard logging |
tensorboard.log_interval.value | 10 | Steps between TensorBoard log entries |
system_metrics.enabled.value | true | Enable system metrics collection |
system_metrics.log_interval.value | 5 | Steps between system metric samples |
Example: Custom Config
{
"real_world_simulation_flag": { "value": true },
"save": { "flag": true },
"create_data_set": { "flag": false, "number_of_datasets": 1 },
"atmosphere_params": {
"num_layers": { "value": 10, "description": "Number of layers" },
"total_r0": { "value": 0.15, "description": "Fried parameter" },
"phase_screen_size": { "value": 1024, "description": "Grid size" },
"delta": { "value": 0.01, "description": "Pixel scale" },
"ground_wind_speed": { "value": 5, "description": "Ground wind" },
"L0": { "value": 25, "description": "Outer scale" },
"wavefront_wavelength": { "value": 1.55e-6, "description": "Wavelength" },
"satellite_zenith_angle_starting": { "value": 0, "description": "Zenith angle" }
},
"simulation_params": {
"whole_simulation_time": { "value": 0.05, "description": "Duration" },
"per_tick_simulation": { "value": 0.001, "description": "Time step" },
"satellite_orbit": { "value": 600000.0, "description": "Orbit altitude" }
}
}
Parameter Guidelines
| Parameter | Typical Range | Notes |
|---|---|---|
total_r0 | 0.05 -- 0.30 m | 0.05 = very strong turbulence, 0.30 = weak |
num_layers | 5 -- 30 | More layers = more accurate but slower |
phase_screen_size | 512 -- 4096 | Must be power of 2. Larger = more detail but more memory |
per_tick_simulation | 0.0005 -- 0.01 s | Smaller = finer temporal resolution |