✌️ Hands-on
🛠️ Configurations
TESEO model configuration counts with a wide-range of options that make possible to adress diferent problematics with the same numerical model.
Simulation parameters
The model can be cofigured to work in a bidimensional space 2D or in a quasi-3D mode where depth-average currents can be provided to the model to simulate the motion of a release in depth. The model works in World Geodetic System 1984 epsg:4326 and needs for the configuration some external data, mainly to define the simulation domain and the metocean conditions (currents, waves, winds…)
Data |
Description |
Load data in TESEO format |
Preprocess new data |
|---|---|---|---|
domain |
Domain of the simulation |
||
forcings |
Metocean Forcings |
Forcings
From an input, point of view of the forcings (currents, winds and waves) the model can use Cte Values, Temporal Series or Spatial and Temporal varaying fields. These inputs can be provided locally be the user or collected from some online metocean data providers as CMEMS, NOAA, EMODNet, IHCantabria…
Release points
Regarding the type of elements released, 4 main types are alowed: (i) drifter for floating elements, (ii) sar for Search and Rescue operations, (iii) oil for the evaluation of the transport and weathering of oil substances, and (iv) hns for the evolution of hazardous nocious substances. Release point can be configurated as a single release puntual and instantaneous or as a continuous release. The location of the release is defined by a point and the width and lenght of the initial seeding-box where the particles will be located randomly.
Examples
Generate domain
The user is capable to define a DomainRequest instance where the definition of the desiered domain is stored, this object has a method called .process_request() to process the domain and generate all the TESEO files of a domain (grid.dat and costa.dat) in a specific folder created with the name of the domain and a random alpha-numerical key mydomain_9fe2c4e93f654fdbb24c02b15259716c.
DomainRequest is in charge of store all the user configurations needed to define the desired domain. The most simply way to define this object is defining a dictionary with all the parameters needed.
PARAMETER |
TYPE |
DESCRIPTION |
|---|---|---|
name |
string |
Name of the domain |
bbox |
tuple |
Bounding box (lon_min, lat_min, lon_max, lat_max) |
n_polygons* |
integrer |
Maximum number of polygons to define de coastline |
elevation |
dict |
OnlineSource or LocalSource to fetch elevation data |
coastline* |
dict |
OnlineSource or LocalSource to fetch coastline data |
*optional parameters
.process_request() method is in charge of triger the creation process of the domain, following the parameters defined in the object. Optional parameter base_path is allowed to define where the domain folder will be located in your computer; if no definition is made, the domain folder containing all the domain files will be generated at the current working directory.
from pyteseo.models.domain_request import DomainRequest
user_input = {
"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,
}
domain_request = DomainRequest(**user_input)
domain_request.process_request()
Results:
Domain folder and files will be created at the path defined at base_path parameter in process_request method.
In this specific case, as base_path is not defined, domain folder will be created at current working directory, like ./ibiza_9fe2c4e93f654fdbb24c02b15259716c.
Read and plot domain
The user is able to instance a class based on a domain folder path to read and manage all the relevant data from the grid.dat and costa.dat files if they exists.
Domain class is in charge of manage domain information. The user needs to instance the class Domain by passing the parameter path to define where the folder of the domain is located. During the initiation of the class, the following steps are automatically addressed:
search
grid.datandcosta.datfiles in the domain folder.read
grid.datand calculate main domain properties at following fieldspath,dx,dy,nx,ny,bboxand also instanceGridatgridfield.read
costa.datand instanceCoastlineatcoastlinefield.
Finally, once Domain is initiated, the user can use the class method .plot() to obtain a standard figure of the domain
from pyteseo.models.domain import Domain
domain_path = "../pyteseo/tests/data/ibiza_domain"
domain = Domain(path=domain_path)
domain.plot()
Results:

Generate forcigns
from pyteseo.models.forcigns_request import ForcignsRequest, create_forcigns
bbox = (-1.80, 37.25, 6.18, 40.98)
timebox = (datetime(2024, 1, 1), datetime(2024, 1, 2))
forcings = {
"currents": {
"provider": "cmems",
"service": "opendap",
"dataset": "cmems_global_hourly",
},
"winds": {
"provider": "cmems",
"service": "opendap",
"dataset": "cmems_global_winds",
},
"waves": None,
}
create_forcings(
forcings_request=ForcingsRequest(**forcings),
bbox=bbox,
timebox=timebox,
dir_path=tmp_dir,
)
Results:
Read and plot forcigns
Results:
Generate a TESEO simulation
from pyteseo.models.simulation_request import SimulationRequest
user_input = {
"name": "test_simulation",
"domain": "./pyteseo/tests/data/ibiza_domain",
"duration": "P1D",
"forcings": {
"currents": {
"provider": "ihcantabria",
"service": "opendap",
"dataset": "cmems_global_hourly",
},
"winds": {
"provider": "ihcantabria",
"service": "opendap",
"dataset": "dwd_icon_europe",
},
},
"releases": [
{
"release_type": "hns",
"release_datetime": '2024-02-19T15:15:00',
"lon": 1.2,
"lat": 38.7,
"depth": 0.0,
"initial_width": 10,
"initial_length": 10,
"substance": "benceno",
"mass": 1000,
"thickness": 0.1,
},
{
"release_type": "hns",
"release_datetime": '2024-02-19T16:15:00',
"lon": 1.6,
"lat": 38.8,
"depth": 0.0,
"initial_width": 10,
"initial_length": 10,
"substance": "acetona",
"mass": 100,
"thickness": 0.1,
},
],
}
simulaiton_request = SimulationRequest(**user_input)
simulation_request.process_request(base_path=tmp_dir, gif=True)
Results:
