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:
Compute the seawater dynamic viscosity from Eq. (27) in [2]
Compute the kinematic viscosity from Eq. (25) in [2]
Compute the dimensionless particle diameter from Eq. (4) in [2], equivalent to Eq. (6) in [1]
Compute the dimensionless settling velocity from Eq. (3) in [2], equivalent to Eq. (8) in [1]
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:
Compute the seawater dynamic viscosity from Eq. (27) in [2]
Compute the kinematic viscosity from Eq. (25) in [2]
Compute the dimensionless particle diameter from Eq. (4) in [2], equivalent to Eq. (6) in [1]
Compute the dimensionless settling velocity from Eq. (3) in [2], equivalent to Eq. (8) in [1]
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.parcels-code.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 vertical 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.parcels-code.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.reflectAtBathymetry(particle, fieldset, time)[source]#
Reflect at bathymetry kernel.
Description#
A simple kernel to reflect particles at the ocean bathymetry, if they go through the bathymetry.
Parameter Requirements#
- Fieldset:
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.reflectAtSurface(particle, fieldset, time)[source]#
A reflecting boundary condition kernel at the ocean surface.
Description#
A simple kernel to reflect particles at the ocean surface if they go through the surface.
Parameter Requirements#
None
Kernel Requirements#
- Order of Operations:
This kernel should be performed after all vertical displacement kernels have been applied.
References
None
- 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.
- plasticparcels.kernels.unbeachingBySamplingAfterwards(particle, fieldset, time)[source]#
Alternative unbeaching kernel.
Description#
A kernel to ‘unbeach’ particles that have been advected onto non-ocean grid cells. This kernel samples the velocity field in the four cardinal directions around the particle, and moves the particle in the direction of the highest velocity magnitude, assuming that this direction is the ocean direction. This kernel only acts if the particle displacement in both zonal and meridional directions is (near) zero, indicating that the particle is beached.
Parameter Requirements#
- Fieldset:
None
Kernel Requirements#
- Order of Operations:
This kernel should be performed after all other movement kernels.