Main modules#
A tour of the tracmass package, in the spirit of the Fortran
documentation’s Main modules chapter. The API reference
has the full signatures and docstrings.
src/tracmass/
__init__.py top-level API, free_device_memory()
driver.py run(): settings-driven one-call entry point
config.py Dynaconf settings (tracmass.toml), subset helpers
runsetup.py settings resolution for the integrators, run metadata
particle.py ParticleState, reason codes, ParticleRecorder
seed.py seeding helpers
output.py load(), output file names
monitoring.py RunMonitor (print / log / rich)
verbose.py set_verbose(), timed() debug logging
integrate/
full_grid.py steady_state, time_dependent, the compiled window loop
streaming.py time_dependent_patched, time_dependent_streaming
advection_scheme/
full_grid.py piecewise, analytical (kernels on the whole grid)
stencil.py piecewise_local (patches), piecewise_stencil (stencils)
gcm/
flux_grid.py GridFields, LazyFluxFields, FluxFields, new_grid,
new_flux, update_flux, extract_stencil, edge_mask
theoretical.py synthetic double gyre
fabboni.py Fabboni analytical case
glorys.py, ecco2.py, scrippsgog.py reanalysis adapters
seagrid/
glorys.py, ecco2.py, scrippsgog.py download / cache / open raw data
coast.py landmask, distance_to_land
trajs/
coords.py xy_to_lonlat, lonlat_to_xy for any grid
tracmass.driver#
run() activates a settings environment, builds the grid and the flux
buffer, seeds and calls the integrator. INTEGRATORS maps the names
allowed in the integrator setting to functions. Counterpart of
TRACMASS.F90. See Main program.
tracmass.config#
Loads the settings files
into tracmass.settings (also available as tracmass.config.settings).
Helpers: move_vertically(), n_particle_batches(), gcm_name(),
gcm_subset() and apply_gcm_subset(module). Counterpart of
init_namelist in mod_init.F90.
tracmass.runsetup#
Everything that turns “argument not given” into a value from the settings:
manage_run_io (the decorator that builds and closes the monitor and
recorder), resolve_no_wflux, resolve_n_windows, resolve_rampup,
resolve_seed_freq, resolve_timax, and run_metadata, which writes the
tracmass.run metadata into each output file.
tracmass.particle#
ParticleState is a NamedTuple of arrays, one entry per particle (a
struct of arrays, where Fortran has an array of trajectory structs):
Field |
Description |
|---|---|
|
Position in grid-cell units |
|
1-based cell indices |
|
Elapsed time, s |
|
Normalised time, |
|
Release time, s |
|
Transport carried by the particle |
|
Sub-cycle counter |
|
Still being integrated |
|
Why it stopped (0 while active or paused) |
The module also defines the REASON_* codes (see
Stopping trajectories), ParticleRecorder for
streaming output to Parquet, and write_trajectories_parquet for writing
one state. Counterpart of mod_vars.F90 (trajectory variables) and
mod_write.F90.
tracmass.seed#
ijk, mask, from_df, from_df_xyz, latlon_box, latlon_point,
latlon_list and from_settings. Counterpart of mod_seed.F90. See
Seeding.
tracmass.integrate#
The window loop (_run_window, a lax.while_loop around the kernel), the
sub-step cap and snapping (_substep_cap, _snap_to_substep), particle
batching (_integrate_batched), resuming paused particles
(_resume_paused), and the four public integrators. Counterpart of
mod_loop.F90. See Integrators.
tracmass.advection_scheme#
Kernel factories. piecewise(grid) and analytical(grid, tseas) close over
a whole-grid GridFields. piecewise_local(imt, jmt, km, iperio) takes the
patch geometry as an argument, and piecewise_stencil(grid) works on
per-particle stencils. Counterpart of mod_pos_tstep.F90 and
mod_pos_tanalytical.F90. See Advection schemes.
tracmass.gcm#
The grid and flux containers and their constructors (flux_grid.py), and
the adapters. Counterpart of mod_getfile.F90, mod_swap.F90 and the
projects’ setup_grid.F90 and read_field.F90. See
Grid and flux data and GCM adapters.
tracmass.seagrid#
Raw data access for each reanalysis: open_dataset(dtm),
grid_definition(), retrieve(dtm), plus landmask(k) and
distance_to_land(k).
tracmass.output#
load() finds and reads trajectory files, and the helpers that name them
(output_stem, output_folder, output_filename). See
Output.
tracmass.monitoring and tracmass.verbose#
RunMonitor prints per-window progress (counterpart of mod_print.F90).
set_verbose() turns on time-stamped debug logging of every stage. See
Monitoring.
tracmass.trajs#
Coordinate conversion for any grid with lon/lat arrays. See
Coordinates.