337.1 nm CLOUDSCAT CALCULATIONS - 21 OCTOBER 2026

Scope: questions A-1 to A-3, cloud transport, Rayleigh column, arrival delays,
and illustrative finite-pulse rise-time calculations. No event-rate estimate
or mission noise budget is claimed without source yield/background inputs.

READ FIRST
analysis/CloudScat_337nm_calculation_results.pdf
analysis/fluence_and_delay_summary.csv
analysis/pulse_timing_summary.csv
analysis/noiseless_sampling_phase.csv

Primary results have group full_air_tau_grid and full_air_top in the summary.
The original compact/cutoff-domain grid is retained for sensitivity checks.
Do not confuse its tau_grid rows with the extended atmospheric-column grid.
Do not treat total/vacuum >1 as transmission or photon multiplication.

MODEL
Point source is isotropic, at nadir. Receiver altitude 550 km. Wavelength
337.1 nm. Main cloud: 12-18 km, radius20 km. Main source16 km. The extinction
coefficient sets vertical overhead optical depth0,.1,.3,1,3,10,30,100.
Spherical ice radius10 micrometres from WarrenBrandt.dat; phase propagation
uses HG, not the full angular Mie solution. No gas absorption or aerosols.
Primary molecular atmosphere extends to a black bottom at0km, lateral400km,
top120km; flat geometry. The instrument has a circular60degree full cone
with projected flat-aperture response. Timelines are excess path delay.

Four seeded batches, normally50,000 packets/batch,25,000 at tau100.
2microsecond bins and12ms transport record. Each saved curve is a density
in photons/m2/s per emitted source photon. Sum*deltat gives photons/m2 per
emitted source photon; multiply by aperture area and efficiency afterward.
The25mm aperture and20% efficiency examples are assumptions, not requirements.

The finite pulse has exp(-t/3ms)*(1-exp(-t/tau_r)) shape; tau_r is tuned to
30/80us10-90% rise. Source3ms decay is an assumption. Electronic response is
one pole with10/50kHz cutoff. Noise is NOT simulated. Photon-delay quantiles,
finite-pulse10-90% rise, and source-onset-to-peak are different metrics.

FILES
photometer_model.jl - wrapper and makecase function; leaves upstream clean.
run_grid.jl - compact-domain science/sensitivity grid and acceptance tests.
run_boundary_checks.jl - lower-air,50ms record,1us bin comparisons.
run_full_air_grid.jl - extended-air primary optical-depth grid.
scaled_depth_checks/ - fixed tau10/total tau30 similarity test, no Rayleigh.
timing_metrics.py - source tuning, convolution, timing and sampling metrics.
analyze_grid.py - aggregates batches and generates tables/figures.
create_calculation_report.py - creates the calculation PDF.
analytic_baseline/ - direct analytic results and pressure-profile comparison.
validation_audit.txt,results/validation.txt,timing_selfcheck.json - checks.
results/,full_air_grid/,boundary_checks/ - raw curves and parameter tables.

IMPORTANT IMPLEMENTATION CHANGES
CloudScat's stock timeline is not gated by its camera FOV and omits the
current collision albedo. The runtime observer override applies both, plus
projected entrance-aperture area. fov=30 in this wrapper means30degree
circular half-angle. It also bins excess delay relative to straight travel;
do not apply stock stime() to these custom curves (would subtract twice).
All transport remains upstream CloudScat. Debug reduction must remain1.

REPRODUCTION ON THIS PC (PowerShell from this calculations directory)
$csRoot = (Resolve-Path '..').Path
$env:JULIA_DEPOT_PATH = Join-Path $csRoot 'julia-depot'
$env:JULIA_NUM_THREADS = '2'
$env:JULIA_PKG_OFFLINE = 'true'
$env:CLOUDSCAT_DEBUG_REDUCTION = '1'
$juliaExe = Join-Path $csRoot 'runtime/julia-1.13.2/bin/julia.exe'
& $juliaExe --startup-file=no --project="$csRoot/environment" ./run_grid.jl
& $juliaExe --startup-file=no --project="$csRoot/environment" ./run_boundary_checks.jl
& $juliaExe --startup-file=no --project="$csRoot/environment" ./run_full_air_grid.jl

$pythonExe = 'C:/Users/user/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe'
$env:MPLCONFIGDIR = Join-Path (Get-Location) 'plot_cache'
& $pythonExe ./timing_metrics.py
& $pythonExe ./analyze_grid.py
& $pythonExe ./create_calculation_report.py

The optional scaled-depth check has its own script. Its outputs do not
replace the main atmospheric grid. Rerunning scripts overwrites their
calculation outputs. Independent seed batches permit Monte Carlo errors;
bitwise repeatability can depend on Julia RNG version and thread count.

LIMITS
Actual anvil ice habits, structure, source extent/angular emission,
Earth curvature, ozone/aerosol absorption, surface reflection, lower cloud
layers, filter response and detector noise are not represented. Finite
boundaries and finite photon batches constrain the very faint late tail.
Model uncertainty exceeds the quoted Monte Carlo standard errors.

CloudScat1.2.1 commit25e11044308d4abe8e788fb19e10befbc4f4b008; Julia1.13.2.
Algorithm paper https://gmd.copernicus.org/articles/13/5549/2020/
