Releases: Parcels-code/Parcels
Parcels v2.2.0: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.2.0 builds upon previous versions of Parcels and adds a number of new features. most importantly
- Improved advection-diffusion kernels, as detailed in this tutorial by @daanreijnders (#823)
- Support for time-evolving sigma-grids (#660)
- New interpolation scheme for tracers near coastlines, as detailed in this tutorial, thanks to @pierrick-giffard. (#815)
- Addition of Kernels to calculate the TEOS-10 equation of state, thanks to @pdnooteboom (#816)
- Partial implementation of AnalyticalAdvection Kernel following Döös et al 2017, see also this tutorial
- Support for dimensions of length-1. This greatly simplifies creating FieldSets that are constant in longitude and/or latitude (#817)
Plus a large number of minor bug fixes
Parcels v2.1.5: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.1.5 builds upon previous versions of Parcels and both improved the reliability as well as the efficiency and versatility of Parcels. In particular
- Speed up by perhaps a factor 10(!) in some use-cases by switching data structure of
ParticleSetfrom Array-of-Structures to Structure-of-Arrays (#678, thanks @angus-g!) - Support for sigma-grids with time-varying depth dimensions (#660, see also this tutorial)
- Further fixes some issues with
daskchunking (# 764, #774, #776) - Improves reliability when
dtis very small (< 0.001 s) (#762) - Support for a new ErrorCode
StopExecution(#780) - Support for python3.8 (#753)
And various other minor bug fixes
Parcels v2.1.4: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.1.3: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.1.3 is an update mostly focussing on improved memory behaviour when doing large simulations. In particular
- It fixes some serious issues with memory usage for field chunking (see #668, #703 and #711), which have now been addressed in #719
- Fixing xarray compatibility (#716)
- Fixing a bug in cartopy.quiver (#714)
- New kernels to compute density (#688)
And various other minor bug fixes
Parcels v2.1.2: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.1.2 is a quick release build on previous versions v2.1.1. In particular:
- It fixes a serious bug on some systems with floating point accuracy, that could lead to incorrect output files (see #670 and solution at #672). For this reason, all users are encouraged to use this new version v2.1.2 instead of v2.1.1.
- It also fixes a smaller bug (#676) with the
timestampsargument inField.from_netcdf()
Parcels v2.1.1: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.1.1 builds on previous versions v2.0.0. The major changes of v2.1.1 are:
[Note that v2.1.1 comes after a botched release of v2.1.0]
- Parcels has a parallel MPI version! While working on multiple processors, the particles are spread over the processors for an efficient integration. (#625). See https://oceanparcels.org#parallel_install for instructions on how to install.
- For an efficient loading of the
Fieldset, theFieldobjects are now loaded by chunks, controlled by the parameterfield_chunksize(#632). This results in lower memory usage and faster simulation. It is also a fundamental part of the parallel implementation, since for low number of particles per processor, the computation time is dominated by the loading of the data. A more efficient parallel version will be dynamically balancing the particles between the processors such to minimise the number of chunks loaded per processor. See this document for further background on the implementation. - An efficient writing of the particleset. For a quicker export of the data, particles are now dumped into npy files during simulation. The pickles are gathered into one single file at the end of the simulation. (#614)
- A proper management of
particle.dtmodified by the kernel. If the kernel modifiesparticle.dt, the kernel will automatically be restarted with the updateddt. If you want to simply updates thedtfor next kernel call, useparticle.update_next_dt(new_dt). (#657) - New particles can now be added to the
ParticleSetonly via a temporaryParticleSetobject. This enables a proper control of theparticle.idin parallel (#629) Field.gradient()function is not available anymore. This functionality was providing spurious results on curvilinear grids and was conflicting with the use of chunked fields. Users can still obtain easily an accurate field gradient (see example proposed in #633)- Using the
time_periodicflag inFieldSetcreation now requires the length of the period (#659) - Numerous bug fixes
Note that Parcels v2.1.1 is the last version to officially support Python 2.7. While all functionalities currently work with both Python 2 and 3, new development and code dependencies will progressively lead to incompatibility with Python 2. We strongly advice the users to switch to Python 3.
Parcels v2.1.0: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.1.0 builds on previous versions v2.0.0. The major changes of v2.1.0 are:
- Parcels has a parallel MPI version! While working on multiple processors, the particles are spread over the processors for an efficient integration. (#625). See https://oceanparcels.org#parallel_install for instructions on how to install.
- For an efficient loading of the
Fieldset, theFieldobjects are now loaded by chunks, controlled by the parameterfield_chunksize(#632). This results in lower memory usage and faster simulation. It is also a fundamental part of the parallel implementation, since for low number of particles per processor, the computation time is dominated by the loading of the data. A more efficient parallel version will be dynamically balancing the particles between the processors such to minimise the number of chunks loaded per processor. See this document for further background on the implementation. - An efficient writing of the particleset. For a quicker export of the data, particles are now dumped into npy files during simulation. The pickles are gathered into one single file at the end of the simulation. (#614)
- A proper management of
particle.dtmodified by the kernel. If the kernel modifiesparticle.dt, the kernel will automatically be restarted with the updateddt. If you want to simply updates thedtfor next kernel call, useparticle.update_next_dt(new_dt). (#657) - New particles can now be added to the
ParticleSetonly via a temporaryParticleSetobject. This enables a proper control of theparticle.idin parallel (#629) Field.gradient()function is not available anymore. This functionality was providing spurious results on curvilinear grids and was conflicting with the use of chunked fields. Users can still obtain easily an accurate field gradient (see example proposed in #633)- Using the
time_periodicflag inFieldSetcreation now requires the length of the period (#659) - Numerous bug fixes
Note that Parcels v2.1.0 is the last version to officially support Python 2.7. While all functionalities currently work with both Python 2 and 3, new development and code dependencies will progressively lead to incompatibility with Python 2. We strongly advice the users to switch to Python 3.
Parcels v2.0.0: a Lagrangian Ocean Analysis tool for the petascale age
Parcels v2.0.0 builds on previous versions v2.0.0.beta and v2.0.0.beta2. It's the release which is fully described in the paper The Parcels v2.0 Lagrangian framework: new field interpolation schemes, by Delandmeter and van Sebille, 2019, GMD.
The major changes of v2.0.0 compared to v1.1.1 are
-
The order of arguments for
Fieldinterpolation has changed. This is nowfield[time, depth, lat, lon], which is consistent with the dimension order in which data is stored in thefield.datanumpy array (#503 and #276). -
The
dtargument has been dropped from Kernel definitions, so that the only arguments allowed in a Kernel aredef kernelfunc(fieldset, particle, time)(#503) -
Interpolation for C-grids is now done in a fluxes framework, instead of a velocity framework (#499 and #494).
-
Interpolation for B-grids (#573)
-
Support for
np.float64accuracy of particle locations. This can be set using thelonlatdepth_dtypeargument in ParticleSet construction. Default isnp.float64for C-grids, andnp.float32for all other grids (#552 and #557)
Note also a number of other minor development:
- See v2.0.0.beta
- See v2.0.0.beta2
- Unpinning netcdf4 1.4.1 (#597)
- Numerous bug fixes
Parcels v2.0.0-beta2: a Lagrangian Ocean Analysis tool for the petascale age
This is the second beta version of Parcels v2.0.0. It builds upon v2.0.0beta, and compared to that version has a few important fixes and improvements:
- Support for
np.float64accuracy of particle locations. This can be set using thelonlatdepth_dtypeargument inParticleSetconstruction. Default isnp.float64for C-grids, andnp.float32for all other grids (#552 and #557) - Renaming of the
full_loadargument inFieldSet.from_netcdf()construction todeferred_load, wheredeferred_load = not full_load, for consistency with how we normally call this mode. Default for netcdf files with more than three snapshots isdeferred_load=True(#550) - Support for Netcdf files without a
timedimension, by using thetimestampsargument inFieldSetconstruction (#540) - New tutorials on how to work with 3-dimensional C-grid data such as NEMO (#531) and the
UnitConverterclasses (#516) - Check if the keys in the
dimensionsdictionary are onlylon,lat,depthandtime(#545) - Change in how variable name should be set in
Field.from_netcdf(). Now use tuplevariable=(Field_name, variable_name_in_NetCDF_file)(#545) - Numerous bugfixes
Note also that there is a problem with the latest release of the netCDF4 library, v1.4.2 (Issue #513). For the time being, we recommend downgrading to v1.4.1, using conda install netcdf4=1.4.1
Parcels v2.0.0-beta: a Lagrangian Ocean Analysis tool for the petascale age
This is the beta-release of Parcels v2. Compared to the last v1.1.1 release, there are three important changes
-
The order of arguments for Field interpolation has changed. This is now
field[time, depth, lat, lon], which is consistent with the dimension order in which data is stored in thefield.datanumpy array (#503 and #276). -
The
dtargument has been dropped from Kernel definitions, so that the only arguments allowed in a Kernel aredef kernelfunc(fieldset, particle, time)(#503) -
Interpolation for C-grids is now done in a fluxes framework, instead of a velocity framework. The details of this will be presented in a manuscript, to be submitted soon (#499 and #494)
Note that 1) and 2) above mean that Kernels written for Parcels v1 will break in this Parcels v2. If you're updating to this v2.0.0beta, therefore please update your custom Kernels.
Other updates since v1.1.1 are: