Skip to content

Deposition calculation

This submodule contains the infrastructure for calculating deposition, such as \(v_g\) (fallout velocity) per nuclide, etc. That is, fallout and washout, then \(\xi\) and \(\xi_p\).

ensi_g14_calculator.deposition

Modules

activity_inventory

Here we implement the equations in A2.3.

For long term studies, we are interested in the steady-state activity stored on the ground and in the plant products. The baseline is 100 years, this to make sure we reach steady state.

For short term studies, we need a more detailed inventory.

We have two base classes:

  • GroundActivityTemplate
  • PlantActivityTemplate

Which do the loading of the parameters and define the methods common between short and long term.

Then, we inherenit this structure to implement the short and long term formulae, with the short- and long- term versions of the classes, see below.

Comment about long term versions
  • LongTermGroundActivity: give it a radioactive decay rate, then use the get_steady_state_a0 to get a density of activity in Bq/surface unit.
  • LongTermPlantActivity: give it a radioactive decay rate and a category (fodder or plant), then use the get_summer_concentration and get_winter_concentration to get Bq/kg
Comment about short term verions

The goal is the same, provide an inventory of nuclides in soil and plants, but we need a more detailed activity release than a yearly release. For this reason, the short ter classes take a Scenario class, which defines a sequence of releases.

Classes
GroundActivityTemplate
Functions
__init__(recorder=NULL_RECORDER)

Loads ground-specific environment parameters and nuclide decay data.

ShortTermGroundActivity

Bases: GroundActivityTemplate

Functions
get_A_BS(nuclide, scenario, t)

formula A2.3.1.1

Parameters:

Name Type Description Default
nuclide str

string

required
scenario Scenario

Scenario (see ensi_g14_calculator.short_term_scenarios.release_by_time_interval)

required
t Quantity

time since beginning of release

required

Returns:

Type Description

Quantity, activity on the soil in Bq/m^2

get_root_zone_concentration(nuclide, plant_category, scenario, t)

Formula A2.3.2.1

Parameters:

Name Type Description Default
nuclide str

string, e.g. 'Cs-137'

required
plant_category str

string, 'FP' or 'PP'

required
scenario Scenario

Scenario (see ensi_g14_calculator.short_term_scenarios.release_by_time_interval)

required
t Quantity

time since beginning of release, with astropy units (time)

required

Returns:

Type Description

Quantity, activity in the soil (at the level of roots) in Bq/kg

LongTermGroundActivity

Bases: GroundActivityTemplate

Functions
__init__(recorder=NULL_RECORDER)

Loads ground-specific environment parameters and nuclide decay data.

get_steady_state_a0(nuclide, Q, xi_L)

Calculates initial deposition after 100 years of steady release.

Parameters:

Name Type Description Default
nuclide

string, nuclide, e.g. 'Be-7'

required
Q

yearly released activity, in Bq

required
xi_L

long term deposition coefficient, 1/m².

required

Returns:

Type Description

a tuple, A_bo_0_fast and A_bo_0_slow, in Bq/m².

calculate_iterative_a0(nuclide, Q_history, xi_L)

Calculates A_BS(0) components iteratively from historical releases

Parameters:

Name Type Description Default
nuclide

string, e.g. 'Cs-137'

required
Q_history

list of yearly emission, e.g. [1e10Bq, 1e9Bq, ...] -- with astropy units (Bq)

required
xi_L

long term deposition coefficient, 1/m².

required

Returns:

Type Description

tuple, fast and slow components of surface activity (Bq/m^2)

get_total_activity_at_time_t(nuclide, t, a_f_0, a_s_0, Q_current, xi_L)

Calculates A_BS(t) for the current year.

Parameters:

Name Type Description Default
nuclide

string, e.g. 'Cs-137'

required
t

time since release, with astropy units (time)

required
a_f_0

fast component of ground activity, with astropy units (Bq / m^2)

required
a_s_0

slow component of ground activity, with astropy units (Bq / m^2)

required
Q_current

emission in Bq of the current year, with astropy units (Bq)

required
xi_L

long term deposition coefficient, 1/m².

required

Returns:

Type Description

surface activity at time t, with astropy units (Bq / m^2)

get_steady_state_root_zone_concentration(nuclide, Q, xi_L, plant_category)

Steady state concentration of the nuclide in the root zone of plants (but still soil, which is why I am leaving this method in the soil-related class). Second formula in A2.3.2.2.

Parameters:

Name Type Description Default
nuclide

string, nuclide

required
Q

annual release of activity (average), in Bq

required
xi_L

dispersion for ground, 1/m^2

required
plant_category

str, 'PP' or 'FP'

required
PlantActivityTemplate
Functions
__init__()

Loads plant-specific environment parameters, decay data, and transfer factors.

ShortTermPlantActivity

Bases: PlantActivityTemplate

Functions
get_leaf_activity(nuclide, scenario, t, plant_category)

Formula A2.4.1.1, concentration on leaves only in phase 1. if t >= T_{PP,FP} -- else returns 0.

Parameters:

Name Type Description Default
nuclide str

str

required
scenario Scenario

Scenario, see other classes here for explanation

required
t Quantity

Quantity, time since release

required
plant_category str

str, 'PP' or 'FP'

required

Returns:

Type Description

Quantity, activity in leaves, Bq/kg

get_stored_produce_activity(nuclide, scenario, t, plant_category, release_date)

Formula A2.4.1.2, concentration in produce only in phase 2. if T_P > t >= T_P+T_05 -- else returns 0.

Parameters:

Name Type Description Default
nuclide str

str

required
scenario Scenario

Scenario, see other classes here for explanation

required
t Quantity

Quantity, time since release

required
plant_category str

str, 'PP' or 'FP'

required
release_date str

str, release date in 'mm-dd' format (e.g., '06-15' for June 15).

required

Returns:

Type Description

Quantitiy, activity in stored produce, Bq/kg

get_root_activity(nuclide, scenario, t, plant_category, release_date)

Formula A2.4.1.3, concentration in roots only in phase 3. if t > T_P+T_05 -- else returns 0.

Parameters:

Name Type Description Default
nuclide str

str

required
scenario Scenario

Scenario, see other classes here for explanation

required
t Quantity

Quantity, time since release

required
plant_category str

str, 'PP' or 'FP'

required
release_date str

str, release date in 'mm-dd' format (e.g., '06-15' for June 15).

required

Returns:

Type Description

Quantity, activity in roots, Bq/kg

LongTermPlantActivity

Bases: PlantActivityTemplate

Functions
get_summer_concentration(nuclide, t, c_bo_0, Q, xi_L_prime, plant_category)

Calculates activity, around the time when the crops have not been harvested yet.

Parameters:

Name Type Description Default
nuclide

string, nuclide, e.g. 'Be-7'

required
t

Quantity, time since the beginning of the calendar year

required
c_bo_0

Quantity, steady state soil concentration of this nuclide.

required
Q

Quantity (Bq), annual release of activity for this nuclide.

required
xi_L_prime

Quantity, deposition on leaves for this nuclide calculated at this location.

required
plant_category

string, 'PP' (plant products) or 'FP' (fodder products)

required

Returns:

Type Description

tuple of concentrations (Quantity, Bq/kg), the first one for leaves, the second for roots.

get_winter_concentration(nuclide, t, c_bo_0, Q, xi_L_prime, plant_category)

Calculates storage concentrations C_Bl,L and C_W,L.

Parameters:

Name Type Description Default
nuclide

string, nuclide, e.g. 'Be-7'

required
t

Quantity, time since the beginning of the calendar year

required
c_bo_0

Quantity, steady state soil concentration of this nuclide.

required
Q

Quantity (Bq), annual release of activity for this nuclide.

required
xi_L_prime

Quantity, deposition on leaves for this nuclide calculated at this location.

required
plant_category

string, 'PP' (plant products) or 'FP' (fodder products)

required

Returns:

Type Description

tuple of concentrations (Quantity, Bq/kg), the first one for leaves, the second for roots.

Functions

deposition

Implementing ENSI-G14 Annex A2.2:

  • fallout (dry deposition): \(F_K = \chi_K \; v_g\)
  • washout (wet deposition): \(W_K\) for Gaussian plume
  • \(\xi = F + W\) (deposition onto soil)
  • \(\xi_p = F + f_d \, W\) (deposition onto plants, \(f_d<1\))

Nuclide parameters (or nuclide-group defaults) are read from ensi_g14_calculator.data.nuclide_fallout_washout.yaml, using the DepositionModel.params method. These are the parameters:

  • \(v_g\) deposition velocity (m/s)
  • \(\Lambda_0\) reference washout coefficient at 1 mm/h (1/s)
  • \(\kappa\) precipitation exponent
  • \(f_d\) fraction of wet deposition on plant surfaces

Then the washout coefficient is calculated based on the rainfall intensity \(I_r\) as: \(\Lambda = \Lambda_0 \; (I_r / I_0)^\kappa,\, I_0 = 1\) mm/h

so to be clear: in this file, \(\Lambda\) always refer to the "Washoutkoeffizienten" from the guideline, not a radioactive decay constant or organic elimination decay constant.

Classes
NuclideParams dataclass

small data class for storing nuclide parameters.

DepositionModel

Class handing the deposition of nuclides from the gaussian plume onto the ground.

Functions
params(nuclide)

looks up the fallout parameters for the nuclide at hand, basically see the nuclide_fallout_washout.yaml data file.

Parameters:

Name Type Description Default
nuclide

string, e.g. 'Cs-137'

required

Returns:

Type Description

a NuclideParam container, with v_g, Lambda0, kappa, f_d.

washout_coefficient(I_r, nuclide)

Implementation of the formula given in A2.2.4 for \(\Lambda\), ENSI-G14 2025.

Parameters:

Name Type Description Default
I_r

scalar with astropy units (length/time)

required
nuclide

string, e.g. 'Cs-137'.

required

Returns:

Type Description

Lambda, to be used in the computation of the washout factor (A2.2.2.1), with astropy units (1/time).

fallout_factor(chi, nuclide=None, v_g=None)

Implementation of A2.2.1 ENSI-G14 2025.

Parameters:

Name Type Description Default
chi

dispersion factor, array or scalar with astropy units (time/length^3).

required
nuclide

string, e.g. 'Cs-137'. If given, the fallout speed v_g is looked up.

None
v_g

scalar with units (length/time). if given, bypasses nuclide lookup and uses this v_g directly.

None
washout_factor(sigma_y, U_Ha, y, G_t, sigma_y0, U0, nuclide=None, Lambda=None, I_r=None, weight_elevated=1.0, weight_ground=1.0)

Implementation of A2.2.2.1, ENSI-G14 2025.

Parameters:

Name Type Description Default
sigma_y

array or scalar with astropy unit (length).

required
U_Ha

scalar with astropy units, corrected wind speed (length/time)

required
y

array or scalar with astropy units (length), distance perpendicular to the wind-axis at the location of the point of interest.

required
G_t

scalar, unitless, ground factor.

required
sigma_y0

same as sigma_y, but computed at ground level.

required
U0

same as U_Ha, but computed at ground level

required
nuclide

string, e.g. 'Cs-137'. if given, param I_r must be also given to compute Lambda.

None
Lambda

scalar with astropy unit (1/time), if given, bypasses the computation of Lambda in this method.

None
I_r

rain intensity, scalar with astropy units (length/time, e.g. mm/h).

None
weight_elevated

optional dimensionless factor (scalar or array) multiplying the elevated component, e.g. radioactive decay during transport (see plume_decay.py).

1.0
weight_ground

same for the ground-level component.

1.0
xi_soil(F, W)

A2.2.3 ENSI-G14 2025

Parameters:

Name Type Description Default
F

fallout factor, with astropy units (1/length^2)

required
W

washout factor, with astropy units (1/length^2)

required

Returns:

Type Description

xi, deposition on soil (1/length^2)

xi_plant(F, W, nuclide=None, f_d=None)

A2.2.3 ENSI-G14 2025

Parameters:

Name Type Description Default
F

fallout factor

required
W

washout factor

required
nuclide

string, providing this triggers f_d lookup

None
f_d

fraction deposited on plant, by nuclide.

None
Functions