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:
GroundActivityTemplatePlantActivityTemplate
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
__init__(recorder=NULL_RECORDER)
Loads ground-specific environment parameters and nuclide decay data.
ShortTermGroundActivity
Bases: GroundActivityTemplate
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
__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
__init__()
Loads plant-specific environment parameters, decay data, and transfer factors.
ShortTermPlantActivity
Bases: PlantActivityTemplate
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
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.
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
|