11. Soil P Dynamics
Apart from input and uptake, the P concentration in the topsoil and subsoil is affected by P accumulation. Modelling of P accumulation or release is included by using a Langmuir equilibrium, supplemented with rate limited diffusion, based on the approach used in the INITIATOR model (van der Salm et al., 2016; De Vries et al., 2023).
11.1. Division of pools
The soil P pool is divided into:
-
An inert P pool with no change over time,
-
A stable P pool, S, changing slowly according to a rate limited reaction with dissolved P in the soil solution, and
-
A labile P pool, L, changing rapidly according to an equilibrium reaction with dissolved P in soil solution.
11.2. Initialization
The sum of the labile and stable pool is assumed to be approximated by oxalate extractable P (Pox), further denoted as the reactive P pool. The initial size of Pox must be provided by user. The maximum size of Pox is assumed to be 1/2 of (Al + Fe)ox, with (Al + Fe)ox being the oxalate extractable Al and Fe contents (mmol kg–1). The labile pool, L, is at the start assumed to be 1/3 of Pox, and the stable pool, S, thus being equal to 2/3 of Pox.
where:
|
are the initial sizes (mmol kg–1) of the labile and stable P pools, respectively. |
|
|
is the initial size of the oxalate extractable P (mmol kg–1). |
11.3. Soil P concentrations
The concentration of inorganic P in soil solution, [Pi], is calculated from the size of the labile P pool (L) according to a Langmuir equation:
where:
|
is the size of the adsorbed labile P pool (mmol kg–1). |
||||||||||||||||
|
is the theoretical maximum adsorption (mmol kg–1). See Equation 11.11. |
||||||||||||||||
|
is a Langmuir adsorption constant (m3 kg–1).
|
||||||||||||||||
|
is the inorganic P concentration (g m–3, i.e., mg L–1). The value of 1000 is used to convert result from kg m–3 to g m–3. |
|
The calculated values of L and [Pi] are constrained by the following boundaries:
See Minimum and maximum pool sizes for further explanation. |
The total (both inorganic and organic) P concentration, Pt, is then derived using an exponential relationship between total P and inorganic P based on measurements in soil solution, drainage water and surface water, as reported by Chardon et al. (2007) (in Dutch):
where:
|
is the total P concentration (g m–3, i.e., mg L–1). |
|
|
is the inorganic P concentration (g m–3, i.e., mg L–1). See Equation 11.2. |
|
|
is the base for natural logarithms, approximately 2.71828. |
The transfer between P in the soil solution and the stable pool, Ptrans, is described by a rate-limited Freundlich equation:
where:
|
is the P transferred between the soil solution and the stable pool (mmol kg–1 day–1).
|
|||
|
is the rate constant (day–1) for the transfer from soil solution to the stable pool, with a default value of 0.0014. |
|||
|
is the rate constant (day–1) for the transfer from the stable pool to soil solution, with a default value of 2 × 10–6 for sand, and 44 × 10–6 for clay and peat soils. |
|||
|
is the Freundlich constant of the stable pool (mmol kg–1 (mg L–1)–n).
Lmax and Smax are the maximum sizes of the labile and stable P pool, respectively (mmol kg–1). See Equation 11.11 and Equation 11.12. |
|||
|
is the inorganic P concentration (g m–3, i.e., mg L–1). See Equation 11.2. |
|||
|
is the exponent of stable pool, with a default value of 0.26. |
|||
|
is the size of the stable pool (mmol kg–1), as calculated in Equation 11.9. |
11.4. P surplus
P surplus is simply calculated as the difference between P input and crop P uptake:
where:
|
is the difference between P input and crop P uptake (g P ha–1 day–1). |
|
|
is the annual P deposition (kg P ha–1 yr–1). |
|
|
is the annual P input from mineral fertilisers (kg P ha–1 yr–1). |
|
|
is the annual P input from animal manure (kg P ha–1 yr–1). |
|
|
is the annual P removed from soil by crop uptake (kg P ha–1 yr–1). |
11.5. Runoff and leaching
P runoff and leaching are calculated based on the total P concentration and the water flux:
where:
|
is the P loss via surface runoff (g P ha–1 day–1). |
|
|
is the P leached below root zone (g P ha–1 day–1). |
|
|
is the combined P loss via runoff and leaching (g P ha–1 day–1). |
|
|
is the total P concentration (g m–3, i.e., mg L–1). See Equation 11.3. |
|
|
is the daily interflow (subsurface runoff) (m3 ha–1 day–1). See 5. Water Fluxes. |
|
|
is the daily leaching effluent to shallow groundwater (m3 ha–1 day–1). See 5. Water Fluxes. |
11.6. P accumulation
P accumulation (Pacc) is calculated as:
where:
|
is the P accumulation in soil (g P ha–1 day–1). |
|
|
the P surplus (g P ha–1 day–1). See Equation 11.5. |
|
|
is the loss of P by leaching and runoff (g P ha–1 day–1). See Equation 11.6. |
11.7. Pool dynamics
The changes in the labile and stable pools are calculated on a daily basis.
The change in the labile P pool is calculated by a mass balance:
where:
|
are the sizes of the labile P pools (mmol kg–1) at time t and time t–1 (the previous time step), respectively. |
|||||||||
|
is the P accumulation (g ha–1 day–1). See Equation 11.7.
|
|||||||||
|
is the transfer flux from the soil solution to the stable pool of adsorbed P (mmol kg–1 day–1). See Equation 11.4. |
|||||||||
|
is the length of the time step (1 day). |
The change in the stable P pool is calculated as:
where:
|
are the sizes of the stable P pools (mmol kg–1) at time t and time t–1 (the previous time step), respectively. |
|
|
is the transfer flux from the soil solution to the stable pool of adsorbed P (mmol kg–1 day–1). |
|
|
is the length of the time step (1 day). |
The change in the reactive P pool, Pox, can be determined as:
where:
|
are the sizes of the reactive P pool (mmol kg–1) at time t and time t–1 (the previous time step), respectively. |
|
|
are the sizes of the labile and stable P pools (mmol kg–1) at time t, respectively. See Equation 11.8 and Equation 11.9 . |
|
|
is the P accumulation (g ha–1 day–1). See Equation 11.7. |
|
|
is the length of the time step (1 day). |
Minimum and maximum pool sizes
From Equation 11.2 it can be deduced that when L approaches L'max, [Pi] can become infinitely high. To maintain [Pi] in a reasonable range, we set for [Pi] a minimum value of 0.001 mg L–1, and a maximum value of 90 mg L–1.
The minimum and maximum boundaries Lmin and Lmax may be determined as:
where:
|
is the theoretical maximum size of the adsorbed labile P pool (mmol kg–1). |
|
|
is the oxalate extractable Al and Fe contents (mmol kg–1). |
|
|
are the applicable minimum and maximum sizes of the labile P pools (mmol kg–1), respectively. |
|
|
is a Langmuir adsorption constant (m3 kg–1). See Equation 11.2. |
The upper boundary of S pool is equal to Smax, which is defined as:
where:
|
is the maximum size of the stable P pool (mmol kg–1). |
|
|
is the oxalate extractable Al and Fe contents (mmol kg–1). |
|
|
are the maximum size of the labile P pool (mmol kg–1). See Equation 11.11. |
The calculated size of L and S in each time step is checked so that they do not exceed the boundaries:
where:
|
are the sizes of the labile and stable P pools (mmol kg–1) at time t, respectively. See Equation 11.8 and Equation 11.9. |
|
|
are the applicable minimum and maximum sizes of the labile P pools (mmol kg–1), respectively. See Equation 11.11. |
|
|
is the maximum size of the stable P pool (mmol kg–1). See Equation 11.12. |
Buffer pool for excess P
Following Equation 11.13, in the case of Lt > Lmax or St > Smax, Lt and St are clipped to their respective maximums. The excess P (Lt − Lmax, or St − Smax) must go to a provisional buffer pool B, which acts as a precipitation pool to temporarily store these excess P.
The buffer pool also have precedence over L and S in P mining. When B > 0, any transfer of adsorbed P to soil solution will first come from B, and any remainder will then come from L and S.
The following pseudocode in Python demonstrates how the buffer pool is used. The dynamics of S is calculated before the dynamics of L.
P_trans = ... # Transfer flow between dissolved P and adsorbed stable P pool.
B = ... # Buffer precipitation pool.
dB = ... # Change in the B pool.
S = ... # Adsorbed stable P pool.
S_max = ... # Maximum size of the S pool.
if P_trans < 0: (1)
if abs(P_trans) > B: (2)
dB = -B
P_trans = P_trans + B
else: (3)
dB = P_trans
P_trans = 0
else: (4)
if S + P_trans < S_max: (5)
dB = 0
else: (6)
dB = S + P_trans - S_max
(7)
B = B + dB
S = S + P_trans
S = min(S, S_max)
| 1 | A negative Ptrans indicates transfer from adsorbed stable pool S to dissolved P. The buffer pool B is mined before the S pool. |
| 2 | If the buffer pool size B is smaller than what’s required for Ptrans, B is depleted (i.e., ΔB = –B), and Ptrans is offset by B (Ptrans = Ptrans + B, where Ptrans < 0 and B > 0). |
| 3 | If the size of B is larger than the requirement by Ptrans, Ptrans is set to 0 as all transfer to dissolved P will come from the buffer and none from S, and B is reduced by the amount of Ptrans (ΔB = Ptrans, where Ptrans < 0).
|
| 4 | A positive Ptrans indicates transfer from dissolved P to adsorbed stable pool S. B acts as a buffer for any excess P. |
| 5 | If the size of S after receiving the transfer (S + Ptrans) is less than Smax, there is no excess P going into the buffer B (i.e., ΔB = 0). |
| 6 | If the size of S after receiving the transfer (S + Ptrans) is greater than Smax, S will be constrained to Smax. The excess P (S + Ptrans − Smax) will go into B. There is no need to adjust the sizes of Ptrans or S, since S + Ptrans will automatically become Smax in later steps.
|
| 7 | Finally, update the sizes of B and S. |
P_acc = ... # P accumulation.
P_trans = ... # Transfer flow between dissolved P and adsorbed stable P pool.
B = ... # Buffer precipitation pool.
dB = ... # Change in the B pool.
L = ... # Adsorbed labile P pool.
L_min = ... # Minimum size of the L pool.
L_max = ... # Maximum size of the L pool.
dL = P_acc - P_trans (1)
if dL < 0: (2)
if abs(dL) > B: (3)
dB = -B
dL = dL + B
else: (4)
dB = dL
dL = 0
else: (5)
_L = L + dL
if _L < L_min: (6)
if abs(_L - L_min) > B: (7)
dB = -B
else: (8)
dB = _L - L_min
elif _L > L_max: (9)
dB = _L - L_max
else: (10)
dB = 0
(11)
B = B + dB
L = L + dL
L = max(L_min, min(L, L_max))
| 1 | Change in size of the L pool (ΔL) is determined according to Equation 11.8. |
| 2 | Ptrans > Pacc > 0, B is used before L. |
| 3 | B is smaller than ΔL, B is depleted, and ΔL is offset by B. |
| 4 | B is larger than ΔL, ΔL is set to 0 since no P will be coming from L, and B is reduced by ΔL. |
| 5 | Pacc > Ptrans and/or Ptrans < 0, and the size of L will increase to a provisional new size L'. |
| 6 | When L' < Lmin, L' will be padded to Lmin, and the difference ( |L' − Lmin| ) will come from B. |
| 7 | B is smaller than the difference, B is depleted. Note that in this case a small amount of P ( |L' − Lmin| − B ) will appear to be coming out of nowhere. However, since this value will be very small, it may be safely neglected. |
| 8 | B is larger than the difference, B is reduced by the amount of the difference. |
| 9 | When L' > Lmax, B acts as a buffer pool for excess P. |
| 10 | When Lmin < L' < Lmax, B remains unchanged. |
| 11 | Update the sizes of B and L. |