plasticparcels.kernels#

plasticparcels.kernels.Biofouling(particle, fieldset, time)[source]#

Settling velocity due to biofouling kernel.

Description#

Kernel to compute the settling velocity of particles due to changes in ambient algal concentrations, growth and death of attached algae based on [2]. The settling velocity of the particle is computed as per [1], however the particle size and density is affected by a biofouling process. The algae attached to the particle \(A\) has a growth rate described by

\(\frac{dA}{dt} = C + G - M - R\)

Here, \(C\) models fouling of the plastic through collision with algae

\(C = \beta_A \cdot A_A / \theta_{pl}\),

where \(\beta_A\) is the encounter rate, \(A_A\) is the ambient algal concentration, and \(\theta_{pl}\) is the surface area of plastic particle.

\(G\) models the growth of the algae attached to the surface of the particle

\(G = \mu_A \cdot A\),

where \(\mu_A\) is the algal growth rate.

\(M\) models the grazing mortality of the algae attached to the surface of the particle

\(M = m_A \cdot A\),

where \(m_A\) is the algal mortality rate.

\(R\) models the respiration of the algae attached to the surface of the particle

\(R = Q_{10}^{(T-20)/10}R_{20}A\),

where \(Q_{10}\) is the temperature coefficient, which indicates how much the respiration increases when the temperature increases by 10C. \(T\) is the temperature, and \(R_{20}\) is the respiration rate.

Calculation steps:
  1. Compute the seawater dynamic viscosity from Eq. (27) in [2]

  2. Compute the kinematic viscosity from Eq. (25) in [2]

  3. Compute the dimensionless particle diameter from Eq. (4) in [2], equivalent to Eq. (6) in [1]

  4. Compute the dimensionless settling velocity from Eq. (3) in [2], equivalent to Eq. (8) in [1]

  5. Compute the settling velocity of the particle from Eq. (2) in [2], equivalent to Eq. (9) in [1]

Parameter Requirements#

particle :
  • diameter

  • density

  • seawater_density

fieldset :
  • fieldset.G - Gravity constant. Units [m s-2].

  • fieldset.conservative_temperature - The conservative temperature field. Units [C].

  • fieldset.absolute_salinity - The absolute salinity field. Units [g/kg].

  • fieldset.algae_cell_volume - The volume of 1 algal cell [m-3]

  • fieldset.biofilm_density - The density of the biofilm [kg m-3]

Kernel Requirements#

Order of Operations:

This kernel must run after the PolyTEOS10_bsq kernel, which sets the particle.seawater_density variable, relied on by this.

References

[1] Dietrich (1982) - https://doi.org/10.1029/WR018i006p01615 [2] Kooi et al. (2017) - https://doi.org/10.1021/acs.est.6b04702 [3] Menden-Deuer and Lessard (2000) - https://doi.org/10.4319/lo.2000.45.3.0569 [4] Bernard and Remond (2012) - https://doi.org/10.1016/j.biortech.2012.07.022

plasticparcels.kernels.PolyTEOS10_bsq(particle, fieldset, time)[source]#

A seawater density kernel.

Description:#

A kernel to calculate the seawater density surrounding a particle based on the polyTEOS10-bsq algorithm from Appendix A.2 of https://doi.org/10.1016/j.ocemod.2015.04.002

Parameter Requirements#

particle :
  • seawater_density

fieldset :
  • fieldset.conservative_temperature - The conservative temperature field. Units [C].

  • fieldset.absolute_salinity - The absolute salinity field. Units [g/kg].

Kernel Requirements:#

Order of Operations:

This kernel must be run before any kernel that requires an updated particle.seawater_density value.

References

Roquet, F., Madec, G., McDougall, T. J., Barker, P. M., 2014: Accurate

polynomial expressions for the density and specific volume of seawater using the TEOS-10 standard. Ocean Modelling.

McDougall, T. J., D. R. Jackett, D. G. Wright and R. Feistel, 2003:

Accurate and computationally efficient algorithms for potential temperature and density of seawater. Journal of Atmospheric and Oceanic Technology, 20, 730-741.

plasticparcels.kernels.SettlingVelocity(particle, fieldset, time)[source]#

Settling velocity kernel.

Description#

A kernel to calculate the settling velocity of a particle based on its size and density,and the surrounding seawater properties (density and kinematic viscosity). Based on the settling velocity paper of [1] as implemented in [2].

Calculation steps:
  1. Compute the seawater dynamic viscosity from Eq. (27) in [2]

  2. Compute the kinematic viscosity from Eq. (25) in [2]

  3. Compute the dimensionless particle diameter from Eq. (4) in [2], equivalent to Eq. (6) in [1]

  4. Compute the dimensionless settling velocity from Eq. (3) in [2], equivalent to Eq. (8) in [1]

  5. Compute the settling velocity of the particle from Eq. (2) in [2], equivalent to Eq. (9) in [1]

Parameter Requirements#

particle :
  • diameter

  • density

  • seawater_density

fieldset :
  • fieldset.G - Gravity constant. Units [m s-2].

  • fieldset.conservative_temperature - The conservative temperature field. Units [C].

  • fieldset.absolute_salinity - The absolute salinity field. Units [g/kg].

Kernel Requirements:#

Order of Operations:

This kernel must run after the PolyTEOS10_bsq kernel, which sets the particle.seawater_density variable, relied on by this.

References

[1] Dietrich (1982) - https://doi.org/10.1029/WR018i006p01615 [2] Kooi et al. (2017) - https://doi.org/10.1021/acs.est.6b04702

plasticparcels.kernels.StokesDrift(particle, fieldset, time)[source]#

Stokes drift kernel.

Description#

Using the approach in [1] assuming a Phillips wave spectrum to determine the depth dependent Stokes drift. Specifically, the ‘Stokes drift velocity’ \(u_s\) is computed as per Eq. (19) in [1].

We treat the Stokes drift as a linear addition to the velocity field

\(u(x,t) = u_c(x,t) + C_s * u_s(x,t)\)

where \(u_c\) is the current velocity, \(u_s\) is the Stokes drift velocity, and \(C_s\) is the depth-varying decay factor.

For further description, see https://plastic.oceanparcels.org/en/latest/physicskernels.html#stokes-drift

Parameter Requirements#

fieldset :
  • fieldset.Stokes_U and fieldset.Stokes_V, the Stokes drift velocity fields. Units [m s-1]

  • fieldset.wave_Tp, the peak wave period field (\(T_p\)). Units [s].

Kernel Requirements#

Order of Operations:

None - can be applied at any time.

References

[1] Breivik (2016) - https://doi.org/10.1016/j.ocemod.2016.01.005

plasticparcels.kernels.VerticalMixing(particle, fieldset, time)[source]#

A markov-0 kernel for vertical mixing.

Description#

A simple verticle mixing kernel that uses a markov-0 process to determine the vertical displacement of a particle [1]. The deterministic component is determined using forward-difference with a given delta_z.

Parameter Requirements#

particle:
  • settling_velocity

fieldset:
  • fieldset.mixing_kz - The vertical eddy diffusivity field. Units [m2 s-1].

Kernel Requirements#

Order of Operations:

To ensure the reflecting boundary condition of the random walk component, this kernel should be performed at the very end. Additionally, this kernel should be performed after the rising/sinking velocity of the particle has been computed.

References

[1] Ross & Sharples (2004) - https://doi.org/10.4319/lom.2004.2.289

plasticparcels.kernels.WindageDrift(particle, fieldset, time)[source]#

Leeway windage kernel.

Description#

A simple windage kernel that applies a linear relative ‘wind velocity’ to the particle.

We treat the windage drift as a linear addition to the velocity field

\(u(x,t) = u_c(x,t) + C_w * (u_w(x,t)-u_c(x,t))\)

where \(u_c\) is the ocean current velocity, \(u_w\) is the wind velocity at 10m height, and \(C_w\) is the windage coefficient (usually taken to be in [1%,5%], depending on particle size)

For further description, see https://plastic.oceanparcels.org/en/latest/physicskernels.html#wind-induced-drift-leeway

Parameter Requirements#

particle :
  • wind_coefficient - the particle windage coefficient in decimals (usually taken to be between 0.01 and 0.05, depending on particle size).

fieldset :
  • fieldset.Wind_U and fieldset.Wind_V, the wind velocity field at 10m height above sea surface. Units [m s-1].

Kernel Requirements#

Order of Operations:

None - can be applied at any time.

plasticparcels.kernels.checkErrorThroughSurface(particle, fieldset, time)[source]#

Surface error kernel.

Description#

Kernel to place a particle back on the surface if it goes through the surface.

Kernel Requirements#

Order of Operations:

This kernel should be performed after all other movement kernels, as it is an error kernel.

plasticparcels.kernels.checkThroughBathymetry(particle, fieldset, time)[source]#

Bathymetry error kernel.

Description#

A simple kernel to ensure particles are not advected below the bathymetry field.

Parameter Requirements#

Fieldset:
  • fieldset.z_start - A field constant representing the minimum depth. Units [m].

  • fieldset.bathymetry - A 2D field containing the ocean bathymetry. Units [m].

Kernel Requirements#

Order of Operations:

This kernel should be performed after all other movement kernels, as it samples the bathymetry field using the updated particle position.

plasticparcels.kernels.deleteParticle(particle, fieldset, time)[source]#

General error kernel.

Description#

Kernel to delete a particle if it throws an error other than ErrorThroughSurface.

Kernel Requirements#

Order of Operations:

This kernel should be performed after all other movement kernels, as it is an error kernel.

plasticparcels.kernels.delete_particle_interp(particle, fieldset, time)[source]#

DEPRECATED: Interpolation error kernel.

Description#

Kernel to delete a particle if it throws an interpolation error.

Kernel Requirements#

Order of Operations:

This kernel should be performed after all other movement kernels, as it is an error kernel.

plasticparcels.kernels.periodicBC(particle, fieldset, time)[source]#

A periodic boundary condition kernel.

Description#

Kernel to keep the particle between [-180,180] longitude

Kernel Requirements#

Order of Operations:

This kernel should be performed after all other movement kernels, as it sets the updated particle longitude to be within the [-180,180] longitudinal range.

plasticparcels.kernels.unbeaching(particle, fieldset, time)[source]#

Unbeaching kernel.

Description#

A simple kernel to ‘unbeach’ particles that have been advected onto non-ocean grid cells. This kernel uses a simple ‘unbeaching’ field, that provides (U,V) velocities with a magnitude of 1 m/s, normal to the grid cell face between an ocean and non-ocean grid cell.

Parameter Requirements#

Fieldset:
  • fieldset.unbeach_U - The zonal unbeaching velocity. Units [m s-1].

  • fieldset.unbeach_V - The meridional unbeaching velocity. Units [m s-1].

Kernel Requirements#

Order of Operations:

This kernel should be performed after all other movement kernels, as it samples the unbeaching field using the updated particle position.