Configuration

A run is described by a TOML file, never by editing source. The loader checks presence, type, enumerated choice and numerical bound, rejects any key it does not read, and attaches every failure to the key it failed on by its full dotted path.

julia> load_configuration("broken.toml")
ERROR: ConfigurationError at `grid.spacing`: must be smaller than grid.extent (20000.0 m), got 20000.0

julia> load_configuration("misspelt.toml")
ERROR: ConfigurationError at `model.mixing_layr`: unknown key; expected one of plume_rise, resuspension, mixing_layer, washout

An unread key is an error because it cannot be told from a misspelt one, and a misspelt optional key would otherwise take its default without a word.

Validation runs at load and constructs the solver types immediately, so anything those constructors reject in turn — frequencies that do not sum to one, a negative stack height — fails at the same point rather than deep into a run.

config/reference.toml is the annotated template: every key, its unit and its bounds. The comments there are limited to that; what the choices mean is below.

The [model] table

Where published schemes disagree, the choice is made here. Every key is optional and defaults to the first value listed.

KeyValueMeaning
plume_risebriggsBRIGGS_RISE: 2β² = 0.72, 3 w₀D/u, 2.6 [F/(uS)]^(1/3)
xoqdoqXOQDOQ_RISE: as briggs, with the stable coefficient 2.4 of NUREG/CR-2919 (Sagendorf et al., 1982)
nsr23NSR23_RISE: 0.5 and 1.5, the constants of CNCAN NSR-23 (Comisia Națională pentru Controlul Activităților Nucleare, 2004) as the 2021 code carried them
stable_rise_windmean_over_riseWIND_MEAN_OVER_RISE: the u of the stable final rise is the mean of the profile between the release height and the top of the rise, as the Handbook (Hanna et al., 1982) defines it for its Eq. 2.19
release_heightWIND_AT_RELEASE_HEIGHT: the transport wind at the release height, as XOQDOQ and the 2021 code took it
dispersionhoskerDISPERSION_HOSKER: Briggs' open-country σ_y with Hosker's roughness-corrected σ_z, the normative's pairing
briggs_open_countryDISPERSION_BRIGGS_OPEN_COUNTRY: both parameters from Briggs (1973), Handbook Table 4.5
briggs_urbanDISPERSION_BRIGGS_URBAN: Briggs' urban set, fitted to the St. Louis experiment of McElroy and Pooler (1968)
eimutis_konicekDISPERSION_EIMUTIS_KONICEK: the fit of Eimutis and Konicek (1972) to the Pasquill–Gifford curves, as NRC XOQDOQ and PAVAN (Bander, 1982) evaluate it
extrapolationwarna receptor grid reaching outside the scheme's validity_range is loaded with a warning naming the offending end
refusethe same grid is refused, on grid.spacing or grid.extent
allowthe grid is accepted silently; the reference configuration says this, its 20 km extent being twice the 10 km band of the default scheme
resuspensioniaea_ss57IAEA Safety Series 57 (International Atomic Energy Agency, 1982), Eq. (3.14A)
maxwell_anspaughMaxwell and Anspaugh (2011); NUREG/CR-7270 (Bixler et al., 2022)
washoutnormativeNSR-23 Table 7 throughout
htosnow scavenging from Ogram (1985) Eq. (38), for tritiated water; rain unchanged

See RiseCoefficients, StableRiseWind, DispersionScheme, ResuspensionModel and WashoutModel for the physics behind each. The validity range of a scheme is the range of distance its parameters were fitted over; every Briggs-based scheme is quoted for 100 m to 10 km, the Eimutis–Konicek fit for 100 m to 100 km. Nothing in the evaluation refuses a distance outside it; the policy applies to the receptor grid at load, and scripts/run.jl reports how many radii extrapolate.

The [mixing_layer] table

KeyValueMeaning
schemetabulatedHPA-RPD-058 (Smith and Simmonds, 2009) Table 3.5(a) by class: A 1300, B 900, C 850, D 800, E 400, F 100 m
uniformone depth for every class, given as uniform_depth in metres; HPA-RPD-058 §3.2.2.2.3 recommends 800
customsix depths in metres, class A to F; inf leaves a class unbounded
unboundedno lid
above_lidrise_inhibiteda plume above the lid is held at it, NRPB-R157 (Jones, 1983) §B2.3
full_penetrationa plume above the lid leaves the layer and gives no ground-level concentration, EPA ISC3 vol. II (U.S. Environmental Protection Agency, 1995) §1.1.6.1

uniform_depth is required by, and only legal with, scheme = "uniform", and depths likewise with scheme = "custom". See MixingLayer and LidRule.

The [nuclide] table

deposition_velocity_low feeds the depletion of the airborne plume and deposition_velocity_high the ground deposition, each conservative for the endpoint it feeds; see DepositionVelocity. The reference values, 0.4–0.8 × 10⁻² m/s for HTO, are those of the notes to NSR-23 Table 6, attributed there to Murphy (1993). IAEA SRS-19 (International Atomic Energy Agency, 2001) §3.9, EUR 15760 (Simmonds et al., 1995) §3.2 and HPA-RPD-058 §3.2.2.3 instead assign tritium no dry deposition at all; set both velocities to zero to follow them.

washout_species selects the row of NSR-23 Table 7: tritium_iodine, the default, or other for every other radionuclide. See WashoutSpecies.

The [buildings] table

wake_coefficient is C in √(σ² + C A/π). The default of 1 is IAEA SRS-19 Eq. (6) and AVV (Bundesregierung, 2012) Eqs. (4.31)/(4.32); NSR-23 uses 1.5 (NSR23_WAKE_COEFFICIENT). Zero disables the correction.

The [wind_rose] table

convention is required and has no default: blowing_from for a measured rose or an ADMS .met file, blowing_toward for frequencies already expressed as transport towards a sector. See WindRose.

The reference frequencies are illustrative

The rose in config/reference.toml is not a measured rose for any one site. I assembled it in 2021 from meteorological data for the Pitești fuel plant and the Cernavodă NPP, and it is unusually flat for a real site. Replace it before using the configuration for an assessment.

Reference

AtmosphericDispersion.RunConfiguration — Type
RunConfiguration

Everything a dispersion run needs, assembled and validated from a TOML file by load_configuration.

  • site — the Site, with its source, atmosphere and buildings
  • rose — the WindRose, already resolved to blowing-towards
  • nuclide — the released Nuclide
  • resuspension — the ResuspensionModel to apply
  • washout — the WashoutEvent, of zero duration for a dry plume
  • activity — released activity, Bq
  • release_duration — duration of the release, s
  • extent, spacing — the receptor grid, m
source