π TL;DR guide[1]ο
πͺ Model capabilitiesο
type |
currents |
winds |
waves |
beaching |
spreading |
entrainment |
evaporation |
emulsification |
dissolution |
volatilization |
sedimentation |
biodegradation |
---|---|---|---|---|---|---|---|---|---|---|---|---|
drifter |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
β |
β |
β |
β |
β |
β |
β |
β |
sar |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
β |
β |
β |
β |
β |
β |
β |
β |
oil |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
β |
β |
β |
β |
hns |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
β |
βοΈ |
βοΈ |
βοΈ |
βοΈ |
π Processesο
Brief explanation of the main processes modeled by TESEO. As the majority of lagrangian models, TESEO use a simplified linear super-position technique to approximate particle motion. In this strategy the transport rate for a slick is represented by employing a vector sum of the transports induced by the mean flow, tides, wind, waves (wich is known as advection) and the transport due to turbulent dispersion.
where
Weathering processes also are taking into account to evaluate the degradation and mass balance of the substances when an oil or hns release is defined. See the full catalog of processes with a brief explanation bellow:
π Currentsο
The velocity of the currents velocity is directly transfered to the particle
π¨ Wind dragο
The velocity of the particle due to the wind drag over the particle area outside of the waterbody is expressed as
Reference |
||
---|---|---|
0.025 - 0.044 |
0 |
|
Note deflection angles correction is not aplied in TESEO |
π Stokes driftο
Wave effect on particlesβ transport is calculated based on wave-induced Stokes drift, calculated as
Reference |
|
---|---|
0.005 - 0.015 |
βοΈ Turbulent diffusionο
The turbulent diffusion formulation is based on a random walk algorithm to evaluate the turbulent velocity. The turbulent velocity is part of the total velocity that moves the particles on the water and responds to the action of the eddy vorticity of the water in turbulent regimes, which is a chaotic motion.
Turbulent diffusion velocities are calculated using a Monte Carlo sampling in the range of velocities
where
Formulation |
||
---|---|---|
1-100 m2/s |
0.01-1 m2/s |
Moreover, a different implementation is availbale to use TESEO in riverine environments following Shen and Yapa (1988)
ποΈ Beachingο
Process of evaluation of each particleβs location to consider if the particle is in the water or on the land. If the particle is on water is particle able to be moved in the following timestep (active particle); If the particle is on land it gets fixed to the land (inactive particle).
This process is subdivided in two main subprocesses: a) Evaluate if the particle is on water or land, based on domain grid or based on coastline polygons, and b) when particle is on land, move the particle to the closest grid or coastline point.
Algorithm |
Domain data needed |
Description |
---|---|---|
|
grid |
Uses euclidean distance to grid points to check location. If land, it will move the particle to the closest land point |
|
grid and coastline |
Same as grid but moves the particle to the closest coastal point |
|
grid and coastline |
Uses in-polygon algorithm to check water or land location, and moves it to the closest coastal point |
π« Spreadingο
One of the main oil transportation processes is the initial spreading. For small oil spills, a complete spreading process occurs during the first hour after the spill. It occurs due to viscosity, gravity, buoyancy and surface tension forces. The spreading process also depends on wind drift, surface current and other mixing processes like diffusion. These mechanisms can transport oil long distances (Pilzis, 2017).
Activating the spreading process in the simulations the model can calculate the initial area and thickness of a puntual release based on the substance properties and the mass or volume released, this is the cause why this process is always activated by default in oil and hns simulation. In the case of the Oil implementation the user should provide a maximum duration and a minimum thickness to let the model stop the spreading process when one of this conditions will be reached.
π§ Entrainmentο
Due to wind and wave effects it is common that part of the substance will be disperssed into the water column creating droplets of different sizes. This change in the mass balance from surface to the water colunm can be also addresed based on Delvigne & Hulsen, 1994
β¨οΈ Evaporationο
Oil evaporation is calculated based on an analytical model proposed by Stiver and Mackay (1980). In their formulation, the rate of evaporation is related to vapor pressure, spill area, a mass transference coefficient that depends on wind speed, environmental temperature, and oil type.
where
(!) Check implementation in TESEO
HNS evaporation is based on Kawamura and Mackay (1985) and Fernades (2014). According to these authors, evaporation is estimated following the equaction:
where
The mass transfer coefficient (
where
where
where
π₯ Volatilizationο
A correction for volatilization is included based on Brighton (1985), (1990), and Reynolds (1992). Correction coefficient is defined as:
where P_a is the atmospheric pressure (
π§½ Emulsificationο
This process is simulated by means of a first-order rate law proposed by Mackay (1980). In this method, the rate of water incorporation is related to wind speed, maximum water-in-oil content, and a constant rate that depends on the type of oil.
where
βοΈ Dissolutionο
Dissolution is calculated according to Mackay and Leinoen (1977) and Fernandes (2014). The dissolved mass following the authors reads as follows:
Where
where
where
β¬οΈ Sedimentationο
π¦ Biodegradationο
π₯ Quick startο
The 2 main processes that any user needs:
1. Make a simulationο
This βRequestβ to the library is made by instance the class SimulationRequest
and for this class definition other main sub-clasessand fields have to be passed:
Required field |
Value |
Comment |
---|---|---|
domain |
domain object |
|
releases |
|
each release point is defined by |
duration |
|
duration of the simulation |
forcings |
Object in wich the dataset and how to obtain them (online or local) are defined |
domain:
forcings:
ForcingsRequest
release_points: list of
DrifterReleasePoint
,SarReleasePoint
, {py:classOilReleasePoint<pyteseo.models.release_points.OilReleasePoint>
, orHnsReleasePoint
.duration:
datetime.timedelta
For extra configurations see the complete class at API reference For a simple example, see hands-on section.
2. Make a domainο
PyTESEO is developed based on Pydantic models, which allows users to instance clasess passing an unpacked dictionary to the parent class like MyClass(**my_dict)
. Pydantic takes care to check that all the fields are right and parse all the necessary standard fileds, like datetimes and timedeltas from standard notations (ISO_8601). Also, it takes into account nested instances of child classes so it is possible to define all you need in the same dictionary.
Letβs see an example to create a domain:
We are going to use the class DomainRequest
from pyteseo.models.domain_request import DomainRequest
domain_definition = {
"name": "ibiza",
"bbox": (0.9, 38.5, 1.9, 39.3),
"elevation": {
"service": "opendap",
"provider": "ihcantabria",
"dataset": "gebco_2023_1min",
},
"coastline": {
"service": "wfs",
"provider": "ihcantabria",
"dataset": "osm_land_polygons",
},
"n_polygons": None,
}
# Instance the class with the desired definition
domain_request = DomainRequest(**domain_definition)
# Execute the process to generate the domain
domain_request.process_request()
The easiest way to start is checking the examples in hands-on section but mainly, you need to create a dictionary following the next steps:
Set up a domain by means of passing the folder location.
Set up some general configurations like
duration
.Set up the release points you desire (take into account that all have to be of the same type).
Set up the forcings datasets you want to drive the simulation.
if you need to check all options related to any model you can find them at the API Reference.