Package: pace-util
This package is a toolkit of Python objects and routines for writing weather and climate models.This is research software and still in development. We welcome external contributions. If you would like to contribute to this project, please get in touch with one of our developers!Free software: BSD licenseHistorylatestv0.9.0Minor changes:
- Modifiedpace.util.Quantity.transposeto retain attributes, and loosenedpace.util.ZarrMonitor.storerequirements on attribute consistency, both to ease fv3net integration issues not addressed in v0.8.0v0.8.0Major changes:
- ChangedZarrMonitor.storebehavior to allow passing quantities with different dimension orders
- AddedCachingCommWriterwhich wraps aCommobject and can be serialized to a file-like object with a.dumpmethod
- AddedCachingCommReaderwhich can be loaded from the dump output ofCachingCommWriterand replays its communication in the order it occurred.
-NullCommis now public api inpace-util- Deleted deprecatedfinish_vector_halo_updatemethod fromCubedSphereCommunicator- Renamed DummyComm to LocalComm, and added support for message tags. The DummyComm symbol is still in place for backwards compatibility, but points to LocalComm
- added error in CubedSphereCommunicator init if given a communicator with a size not equal to the total ranks of the given partitioner
-subtile_extentmethod of Partitioner classes now takes in a requiredrankargument
- TilePartitioner has a newedge_interior_ratioargument which defaults to 1.0, and lets the user specify the relative 1-dimensional extent of the compute domains of ranks on tile edges and corners relative to ranks on the tile interior. In all cases, the closest valid value will be used, which enables some previously invalid configurations (e.g. C128 on a 3 by 3 layout will use the closest valid edge_interior_ratio to 1.0)Minor changes:
- Thesplit_cartesian_into_storagesmethod is moved out of pace-util, as it is more generally used, and now lives in pace.dsl.gt4py_utils
- createdDriverGridData.new_from_grid_variablesclass method to initialize from grid variable data
- updated QuantityFactory to accept the more generic GridSizer class on initialization
- addedsizeras public attribute on QuantityFactory
- addedNamelistclass to initialize namelist files used in fv3gfs-fortran
- addedCubedSphereCommunicator.from_layoutconstructor method
- added support for built-indatetimein ZarrMonitor
-edge_interior_ratiois now an optional argument oftile_extent_from_rank_metadata- added support for writing constant data (written once, does not change with time) in ZarrMonitorv0.7.0Major changes:
- Renamed package from fv3gfs-util to pace-util
- Added NullTimer to use for default Timer value, it is a disabled timer which cannot be enabled (raises NotImplementedError)
- Added pace.util.grid, keeping symbols out of top level as they are still unstable
- Added HaloUpdater and associated code, which compiles halo packing for more efficient halo updates
- Added physical constants to pace.util.constantsMinor changes:
- Added method set_extra_dim_lengths to QuantityFactoryFixes:
- Fixed bug where ZarrMonitor depended on dict.items()always returning items in the same orderOther changes may exist in this version, as we temporarily paused updating the history on each PR.v0.6.0Major changes:
- Usecftime.datetimeobjects to represent datetimes instead
ofdatetime.datetimeobjects.  This results in times stored in a format compatible with
the fortran model, and accurate internal representation of times with the calendar specified
in thecoupler_nmlnamelist.
-Timerclass is added, with methodsstartandstop, and propertiesclock(context manager), andtimes(dictionary of accumulated timing)
-CubedSphereCommunicatorinstances now have a.timerattribute, which accumulates times for “pack”, “unpack”, “Isend”, and “Recv” during halo updates
- makeSubtileGridSizer.from_tile_paramspublic API
- New methodCubedSphereCommunicator.synchronize_vector_interfaceswhich synchronizes edge values on interface variables which are duplicated between adjacent ranks
- Added.selmethod to corner views (e.g.quantity.view.northeast.sel(x=0, y=1)) to allow indexing these corner views with arbitrary dimension ordering.
- Halo updates now use tagged send/recv operations, which prevents deadlocks in certain situations
- Quantity.data is now guaranteed to be a numpy or cupy array matching its.npmodule, and will no longer be a gt4py Storage
- Quantity accepts agt4py_backendon initialize which is used to create its.storageif one was not used on initialize
- parent MPI rank now referred to as “root” rank in variable names and documentation
- Added TILE_DIM constant for tile dimension of global quantities
- Added Partitioner base class implementing features necessary for scatter/gather
- Moved scatter and gather from TileCommunicator to the Communicator base class, so its code can be re-used by the CubedSphereCommunicator
- Implemented subtile_slice, global_extent, and subtile_extent routines on CubedSpherePartitioner necessary for scatter/gather in CubedSphereCommunicator
- Renamed argumenttile_extentandtile_dimstoglobal_extentandglobal_dimsin routines to refer generically to the tile in the case of tile scatter/gather or cube in the case of cube scatter/gather
- Fixed a bug where initializing a Quantity with a numpy array and a gpu backend would give CPUStorage
- raise TypeError if initializing a quantity with both a storage and a gt4py_backend argument
- eagerly create storage object when initializing Quantity
- make data type of quantity and storage reflect the gt4py_backend chosen, instead of being determined based on the data type being numpy/cupyFixes:
- Ifonly_namesis provided toopen_restart, it will return those fields and nothing more.  Previously it would include“time”in the returned state even if it was not requested.
- Fixed a bug where quantity.storage and quantity.data could be out of sync if the quantity was initialized using data and a gt4py backend string
- Default slice for corner views when not given at all as an index (e.g. when providing one index to a 2D view) now gives the same result as providing an empty slice (:)
- Fixed a bug where quantity.view could refer to a different array than quantity.data if the quantity was initialized using data and a gt4py backend string, and then quantity.storage was accessedv0.5.1enable MPI tests on CircleCIv0.5.0Breaking changes:
-send_bufferandrecv_bufferare modified to take in acallable, which is more easily serialized than anumpy-like module (necessary because we serialize the arguments to re-use buffers), and allows custom specification of the initialization if zeros are needed instead of empty.Major changes:
- Added additional regional views to Quantity as attributes on Quantity.view, includingnortheast,northwest,southeast,southwest, andinterior- Separated fv3util into its own repository and began tracking history separately from fv3gfs-python
- Added getters and setters for additional dynamics quantities needed to call an alternative dynamical core
- Addedstorageproperty to Quantity, implemented as short-term shortcut to .data until gt4py GDP-3 is implementedDeprecations:
-Quantity.valuesis deprecatedv0.4.3 (2020-05-15)Last release of fv3util with history contained in fv3gfs-python.