What’s New¶
3.2.0 (April 9, 2026)¶
Now validates geojson geometries to have the correct number of dimensions and coordinates.
Updated docs.
Updated environment files to point to the commit for changes to
OpenDriftthat supportLarvalFishandPhytoplanktonmodels.Removed references to “legacy” in
LarvalFishand now points toLarvalFishExtendedinOpenDriftinstead of the originalLarvalFishmodel.
3.1.0 (March 26, 2026)¶
Fixed bug so that
seed_floorcan be used. Now ifseed_seaflooris selected,zis automatically set toNonewhich activatesseed_seafloorinOpenDrift.
3.0.0 (March 12, 2026)¶
Fixed bug so that horizontal diffusivity is now properly applied to model output.
Added
wind_driftparameter which when False makes sure thatwind_drift_factor=0so that wind drift is not on.If
do3D==False, vertical_mixing is now also turned to False. Otherwise it is easy to run 2D with vertical mixing on.Made sure the
vertical_mixing_at_surfaceis consistent withvertical_mixingandvertical_advection_at_surfaceis consistent withdo3D.
2.5.0 (March 9, 2026)¶
Change to NWGOA config to fix issue with wet/dry sims not running with NWGOA.
Fixed change to “all” plots to add depth and mean depth in time.
2.4.2 (March 6, 2026)¶
changed some defaults in new work
updated tests accordingly
do not use land_binary_mask to plot in animation when plotting after the simulation has been run previously
v2.4.0 (March 5, 2026)¶
Changed default value of
use_static_masksto False from True, so that wet/dry masks from ocean models are used by default.Added
time_step_output_integerto the schema which is a multiplier ontime_stepto calculatetime_step_output.time_step_outputis calculated in a field and input to theOpenDriftmodel.If global land mask was not used in simulation, plot the model land mask in animations and not the global land mask. This is especially helpful for a wet/dry landmask to see how it changes in time.
“all” plots option now includes two more plots: depth of all particles in time and mean depth of particles in time.
Changed to mp4 instead of gif for built in animations default.
Deprecated
HarmfulAlgalBloomdrift model in favor ofPhytoplanktondrift model:Removed biomass tracking and temperature/salinity response parameters
Removed
species_typepresets (PN, AX, DP)Renamed parameters:
swim_speed→w_active,band_center_depth→z_pref,diel_day_depth/diel_night_depth→z_day/z_nightChanged
vertical_behavior→vertical_behavior_modewith new options:none,depth,dvmPhytoplankton requires
do3D=Trueandvertical_mixing=True
Enhanced
LarvalFishdrift model with new vertical behavior modes and hatching methods:Added
vertical_behavior_modeparameter:none,depth,dvm, orlegacy(preserves original behavior)Added new depth-targeting parameters:
z_pref,z_day,z_night,w_activeAdded band expansion parameters:
dz_min,dz_rel,dz_maxAdded
hatching_methodparameter:temperature(default, legacy) orfixed_timeAdded
hatch_time_daysparameter for fixed-time hatching method
Updated test suite to use
Phytoplanktoninstead ofHarmfulAlgalBloomand added comprehensive tests for newLarvalFishfeatures
v2.3.0 (January 15, 2026)¶
The depths required for
HarmfulAlgalBloomspecies types are now calculated for the 3 available species from the mixed layer depth.
v2.2.4 (January 12, 2026)¶
add new
OpenDriftparametervertical_advection_at_surfacewhich is necessary to have vertical advection at the very surface. These new parameters are in all 3D scenarios except oil.
v2.2.3 (January 12, 2026)¶
added new
OpenDriftparametervertical_mixing_at_surfacewithout which particles will stick to the surface
v2.2.2 (January 12, 2026)¶
No longer requiring
z==Nonewhenseed_seabed==True; alsozcan no longer have the valueNone.Max value of
wind_drift_depthis now 1 instead of 10.Max value of
wind_drift_factoris now 0.1 instead of 1.
v2.2.1 (January 9, 2026)¶
Added parameters
do3D=Trueandvertical_mixing=Truefor the HarmfulAlgalBloom scenarioChange so that when
hatched==1,stage_fractionneeds to be a number that will be ignored instead ofNone
v2.2.0 (January 7, 2026)¶
Changes to
HarmfulAlgalBloomto support updates inOpenDriftmodel:Added and renamed some parameters.
Added another test, to test growth in the HAB scenario since that has now been added.
Added vertical behavior
Added two new species
Fixed
mixed_layer_depthso it is actually used nowunpinned
OpenDrift
v2.1.2 (December 19, 2025)¶
Fixed bug so that CIOFSOP
end_timeis updated before the simulation runend_timegets validated against it.
v2.1.1 (December 17, 2025)¶
Fixed bug when using geojson particle seeding. Now
PTMwill properly assignradiusandradius_typewhen using a geojsonPoint,LineString, orPolygon.
v2.1.0 (December 15, 2025)¶
Fixed bug so now CIOFSOP
end_timeis updated each time a new instance ofOpenDriftModelis created.fixed logging issue so
OpenDriftlogs show up more fully again.seed_flagis no longer in the schema and whether to input particle locations is determined by whetherlonandlatare input or ageojsoninput is input. If neither are input, default lon/lat are available that work with the default ocean model.
v2.0.6 (December 11, 2025)¶
output_format="parquet"is still present and will work with the newest version ofOpenDriftonce a PR is merged.A new option has been added:
output_format="both". This savesOpenDriftoutput to a netCDF file but then after the simulation is over also saves a parquet file, not usingOpenDriftfor that step. This allows PTM to produce both a netCDF file and parquet file for the sameOpenDriftsimulation, which is helpful because the same metadata is not currently available in an output parquet file as is a netCDF file, so you can’t go between without losing information.
v2.0.5 (December 10, 2025)¶
Changed the schema for
HarmfulAlgalBloomso that “PN”, for example, is input, though a nice label is also provided through “title” in the schema.
v2.0.4 (Decemeber 9, 2025)¶
Fixed a log file path bug where the log file path was just the filename only. Because of that it would get created in the current working directory and not in the outputs directory next to the simulation output.
Refactored the
SetupOutputFilesmodel to simplify things a bit and update tests.
v2.0.3 (Decemeber 5, 2025)¶
Fixed docs.
v2.0.2 (Decemeber 5, 2025)¶
Changed “name” of
HarmfulAlgalBloomspecies_typeenum to be an abbreviation “PN” and the value for the initial species to be “Pseudo nitzschia” instead of “Pseudo_nitzschia”.Added to the
HarmfulAlgalBloomschema to have a “oneOf” output containing the preset values associated with aspecies_typein the description.
v2.0.0 (December 4, 2025)¶
Added a new model scenario:
HarmfalAlgalBloom.Fix a bug for running backward in time.
Ocean model configuration files now need to include
chunks
v0.13.2 (November 20, 2025)¶
If timezone-aware
start_time,start_time_end, orend_timeis input, the timezone is now removed and it is assumed they are in the same timezone as the model times.
v0.13.1 (November 19, 2025)¶
Fixed kerchunk JSON file filtering.
Added CIOFS3 as ocean model option.
Refactored
OilTypeEnumso that it’s value is only the oil ID. Also add the “oneOf” json schema mapping directly to the field’sjson_schema_extraso that it is part of the schema by default.
v0.12.2 (April 15, 2025)¶
fixed issue when setting
vertical_mixingFalse forOpenOilwas not passed through correctlynow
do3d=Falseandvertical_mixing=Truecan be set at the same time.updated some config descriptions
found error in
OilTypeEnumleading to oil_types with duplicate labels not being separated out in the Enum. This is fixed. Now oil should be input with either the ID from ADIOS or with the syntax(ID, label). Once in the configuration, it will be presented as onlylabelsince that is howOpenDriftacceptsoil_type.OilTypeEnumwas reordered so the first 5 oils are most relevant to Alaska work.Reverted
time_stepunits back to seconds from minutes. It was being mapped unexpectedly inOpenDriftso using seconds is better.Updated list of options for
object_typeand it is now fully consistent with that inOpenDrift.Now enforce that for Leeway model if
hatched==1thenstage_fraction=None, for seeding.Updated descriptions in a lot of parameters in
config_the_manager.pyandconfig_opendrift.py.Updated defaults in config classes.
v0.12.1 (April 8, 2025)¶
Correction to
interpolator_filenamehandling and improvement in testing.
v0.12.0 (April 9, 2025)¶
Major refactoring:
Removed
surface_onlyflag.Changed default value for
vertical_mixingto False to matchdo3Ddefault of False.Moved some configuration parameters between configuration objects.
Major improvements of log handling.
time_stepandtime_step_outputchanged to minutes from seconds.ocean_model_registry for known and user-input models
changed some logger statement from “info” to “debug”
now pinned to
opendriftv1.13.0 andkerchunkv0.2.7 because not ready for zarr v3can run plots from a parquet or netcdf output file now
can’t run idealized simulations using
OpenDriftdirectly in PTM anymore but this could be added back in if neededupdated docs
property plot now requires keyword “variable” instead of “prop” (this change is from
OpenDrift)most configuration parameters are under
m.confignow instead of justm, ifmrepresents a Manager instance.a geojson dict can be input but it is not fully working at the moment
oil_typecan be input as the name or the id from the adios database..model_json_schema()is overridden inOpenDriftConfigto include a bit of custom code to modify theoil_typeoutput in the JSON schema “properties” area. This shouldn’t affect anything other than it being available if people want that.
v0.11.2 (February 6, 2025)¶
Suffix for parquet file format is now “.parquet” instead of “.parq”.
Added a method to run plots from saved OpenDrift output file; also available in CLI. Updated docs.
v0.11.1 (February 4, 2025)¶
Move known model hard-wired model times into the class so they are refreshed each time the library is read.
Add dockerfile for running PTM in a container.
v0.10.1 (January 30, 2025)¶
Added built-in way to create plots for simulation using OpenDrift. Details available in Detailed Built-In Plots Demonstration.
User can now input a location to both save and read the interpolator, which avoids using the built-in cache location.
v0.9.6 (November 15, 2024)¶
made caching directory creation and saving to cache optional with input option
use_cache.
v0.9.5 (November 14, 2024)¶
fixed error in output file
v0.9.4 (November 14, 2024)¶
Updated locations for local model output.
v0.9.3 (November 13, 2024)¶
Moved
output_formatparameter to manager config from model configChanged source location for CIOFSOP local model output
v0.9.2 (November 11, 2024)¶
Added ability to save output files as parquet instead of netcdf.
Partially updated docs
v0.9.1 (October 25, 2024)¶
Added local model option of CIOFS Fresh for which kerchunk files also can be generated on the fly.
v0.9.0 (July 26, 2024)¶
Added utilities to generate kerchunk files on the fly for the time period of the simulation length for CIOFS and NWGOA. This has majorly sped up CIOFS simulations and modestly sped up NWGOA simulations.
depth z should be negative! Fixed this in tests.
added
start_time_end, which adds OpenDrift capability for starting drifters over linear time framefixed so unique log file is output for each simulation even if run in a script, and has the same name as
output_file.small fix to histogram plot
v0.8.4 (April 24, 2024)¶
updated the
ptm_levelof a bunch of config parameters
v0.8.3 (April 23, 2024)¶
removed
Dcritbecause realized it is not necessaryimproved log handling for CLI
changed
OpenDriftdefault handling so they are now changed to None
v0.8.2 (April 10, 2024)¶
updated docs
improved
drift_model_config()updated tests
now include PTM metadata with output file
v0.8.1 (April 5, 2024)¶
updated docs
v0.8.0 (April 2, 2024)¶
time_step_outputbehavior has changed — 1 hour by defaulttime_stepis now 5 min by defaultadded
Dcritparameter for accurately finding where drifters are stranded in tidal flatsvertical_mixingis True by default nowadded seafloor_action option
fixed some Leeway/3D handling and log messaging
export_variables are specific to drift_model as needed
do not drop zeta anymore since used in opendrift
output_file is now an option
v0.7.1 (February 21, 2024)¶
Small fix to some attributes to be less verbose
Fix setup.cfg to have correct config path since name changed
v0.7.0 (February 21, 2024)¶
Now initialize all class attributes with None and removed usage of
hasattrwhich simplifies and clarifies some code.Improved handling of
start_time,end_time,duration, andstepsinmanager.pywhich fixed a bug in which users couldn’t inputstart_timeand have the simulation run successfully.simplified handling of
horizontal_diffusivityinopendriftmodel.user can change
end_time,duration, andstepsand have the others update accordingly. Tests added to check this.changed known model “CIOFS_now” to “CIOFSOP” to avoid upper/lower issues and include “OP” for “operational”.
many more tests and improved behavior for attribute checks and updates
v0.6.0 (February 15, 2024)¶
is set up to tell
opendriftROMS reader to save the interpolator to a cache that is set up the first time it is run. This only works with the newest dev version ofopendriftat the moment, and the files saved are hundreds of MB, but it speeds up the simulations pretty well (12 to 30 seconds).reworked which variables are dropped in which scenarios for
opendriftand integrated with using wetdry vs static masks.added package
appdirsto manage the cache for storing interpolator pickles.fix to CLI so duration input is formatted correctly.
can now input
nameto accompany user-inputxarray Datasetforocean_model.added
ocean_model“CIOFS_now” local and remote links.
v0.5.0 (February 12, 2024)¶
updated to using version of
opendriftin which you can input an xarray Dataset directlyadded new parameter for built-in ocean_models to specify whether to look locally or remote for the output (
ocean_model_local)added local model output information for known models using parquet files for kerchunk access to model output
changed
max_speedparameter, which controls buffer size inopendrift, to 2 from 5.improved handling of “steps”, “duration”, and “end_time” parameters.
improved reader interaction and speed with
opendriftby dropping unnecessary variables from ocean_model Dataset, separating out thestandard_namemapping input to the ROMS reader inopendrift, added option for whether or not to use wet/dry masks in ocean_model output if available
v0.4.0 (January 25, 2024)¶
modified level of surfacing for some configuration parameters
made
ptman entry pointfinished removing WKT code, which hadn’t been working
added “excludestring” as an option for filtering configuration parameters
updated checks for necessary
drift_model=="Leeway"and parameter combinations.updated docs according to software updates