All notable changes to this project will be documented in this file.
imod.wq.SeawatModel.write()) no longer automatically appends the model
name to the directory where the input is written. Instead, it simply writes to the directory as specified.
from_file()) constructors have been added to all imod.wq.Package. This allows loading directly package from a netCDF file (or any file supported by
xarray.open_dataset), or a path to a Zarr directory with suffix “.zarr” or “.zip”.
This can be combined with the cache argument in (
from_file()) to enable caching of answers to avoid repeated computation during (
imod.wq.SeawatModel.write()); it works by checking whether input and output files have changed.
resultdir_is_workspaceargument has been added to (
imod.wq.SeawatModel.write()). iMOD-wq writes a number of files (e.g. list file) in the directory where the runfile is located. This results in mixing of input and output. By setting it
True, all model output is written in the results directory.
imod.visualize.imshow_topview()) has been added to visualize a complete DataArray with atleast dimensions
y; it dumps PNGs into a specified directory.
Some support for 3D visualization has been added. (
imod.visualize.grid_3d()) and (
imod.visualize.line_3d()) have been added to produce
shapelypolygons, respectively. (
imod.visualize.GridAnimation3D) and (
imod.visualize.StaticGridAnimation3D) have been added to setup 3D animations of DataArrays with transient data.
Support for out of core computation by
imod.ipf.read()) now reports the problematic file if reading errors occurs.
densityis no longer an optional argument in (
imod.wq.GeneralHeadboundary) and (:class:`imod.wq.River). The reason is that iMOD-WQ fully removes (!) these packages if density is not present.
imod.visualize.plot_map()) enforces decreasing
y, which ensures maps are not plotted upside down.
[0.9.0] - 2020-01-19¶
IDF files representing data of arbitrary dimensionality can be opened and saved. This enables reading and writing files with more dimensions than just x, y, layer, and time.
Added multi-species support for (
64-bit IDF files can be opened (
SeawatModelto support taking out a subdomain
Docstrings for the Modflow 6 classes in
imod.select.upper_active_layer()function to get the upper active layer from ibound
[0.8.0] - 2019-10-14¶
[0.7.1] - 2019-08-07¶
"multilinear"has been added as a regridding option to
imod.prepare.Regridderto do linear interpolation up to three dimensions.
Boundary condition packages in
imod.wqsupport a method called
add_timemapto do cyclical boundary conditions, such as summer and winter stages.
imod.idf.saveno longer fails on a single IDF when it is a voxel IDF (when it has top and bottom data).
imod.prepare.celltablenow succesfully does parallel chunkwise operations, rather than raising an error.
regridmethod now succesfully returns
sourceif all dimensions already have the right cell sizes, rather than raising an error.
imod.idf.open_subdomainsis much faster now at merging different subdomain IDFs of a parallel modflow simulation.
imod.idf.saveno longer suffers from extremely slow execution when the DataArray to save is chunked (it got extremely slow in some cases).
Package checks in
imod.wq.SeawatModelsuccesfully reduces over dimensions.
Fix last case in
imod.prepare.reprojectwhere it did not allocate a new array yet, but returned
likeinstead of the reprojected result.
[0.7.0] - 2019-07-23¶
imod.wqmodule to create iMODFLOW Water Quality models
conda-forge recipe to install imod (https://github.com/conda-forge/imod-feedstock/)
significantly extended documentation and examples
imod.preparemodule with many data mangling functions
imod.selectmodule for extracting data along cross sections or at points
imod.visualizemodule added to visualize results
imod.idf.open_subdomains()function to open and merge the IDF results of a parallelized run
imod.ipf.read()now infers delimeters for the headers and the body
imod.ipf.read()can now deal with heterogeneous delimiters between multiple IPF files, and between the headers and body in a single file
Namespaces: lift many functions one level, such that you can use e.g. the function
All that was deprecated in v0.6.0
[0.6.1] - 2019-04-17¶
Support nonequidistant models in runfile
Time conversion in runfile now also accepts cftime objects
[0.6.0] - 2019-03-15¶
The primary change is that a number of functions have been renamed to better communicate what they do.
load function name was not appropriate for IDFs, since the IDFs
are not loaded into memory. Rather, they are opened and the headers are
read; the data is only loaded when needed, in accordance with
xarray’s design; compare for example
function has been renamed to
load for IPFs has been deprecated.
reads both single and multiple IPF files into a single
Opening IDFs with
Opening a set of IDFs with
Reading IPFs with
Reading IDF data into a dask array with
Reading an iMOD-seawat .tec file, use
np.datetime64when dates are within time bounds, use
cftime.DatetimeProlepticGregorianwhen they are not (matches
assertis no longer used to catch faulty input arguments, appropriate exceptions are raised instead
idf.open: sorts both paths and headers consistently so data does not end up mixed up in the DataArray
idf.open: Return an
xarray.CFTimeIndexrather than an array of
idf.writecoerces coordinates to floats before writing
ipf.read: Significant performance increase for reading IPF timeseries by specifying the datetime format
ipf.writeno longer writes
,,for missing data (which iMOD does not accept)
[0.5.0] - 2019-02-26¶
Reading IDFs with the
Reading IDFs with the
Reading IDFs gives delayed objects, which are only read on demand by dask
IDF: instead of
dycoordinates (0D or 1D)
cftime.DatetimeProlepticGregorianto support time instead of
np.datetime64, allowing longer timespans
Repository moved from
examplesfolder for synthetic model example
Support for nonequidistant IDF files, by adding
IPF support implicit