Monte Carlo Analysis
The Monte Carlo analyzer runs repeated simulations with regenerated phase screens to compute statistical properties of the turbulent channel.
Usage
python gpu_main.py --mode monte_carlo
How It Works
The MonteCarloAnalyzer class (analysis/monte_carlo.py):
- Runs
num_runsindependent simulations - Regenerates phase screens before each run (
recreate_initial_ps()) - Computes requested metrics per run
- Saves checkpoints at configurable intervals
- Aggregates statistics across all runs
Configuration
Set Monte Carlo parameters in config.json:
{
"monte_carlo": {
"enabled": { "value": true },
"num_runs": { "value": 1000 },
"save_interval": { "value": 100 },
"analysis_metrics": {
"value": ["scintillation_index", "mcf"]
}
}
}
| Parameter | Default | Description |
|---|---|---|
num_runs | 1000 | Total number of independent simulations |
save_interval | 100 | Save checkpoint every N iterations |
analysis_metrics | ["scintillation_index", "mcf"] | Metrics to compute |
Available Metrics
Scintillation Index
Measures intensity fluctuations:
SI = Var(I) / <I>^2
where I is the intensity (amplitude squared) and <I> is the mean intensity.
Mutual Coherence Function (MCF)
Computes the spatial coherence of the output field by averaging over multiple realizations using MCF_calc().
Output Structure
RUN_N/
iterations/
iter_0000/
result.npy
iter_0001/
result.npy
...
checkpoints/
checkpoint_0100.json
checkpoint_0200.json
...
results/
all_results.json
statistics.json
scintillation_histogram.png
metric_evolution.png
performance_metrics.png
summary_report.txt
Statistics Output
The statistics.json file contains aggregated results:
{
"scintillation_index": {
"mean": 0.42,
"std": 0.08,
"min": 0.21,
"max": 0.73,
"median": 0.41
}
}
Checkpointing
Intermediate results are saved every save_interval iterations. If a run is interrupted, previously completed iterations are preserved in the iterations/ directory.