Releases: PMEAL/OpenPNM
Version 2.2.0
This is the first release of 2020, and is hopefully part of a new 'semester-based' release schedule. So instead of waiting an undefined amount of time until we have enough new features for a release, we will release all the new features we have added in the past semester.
🚀 New features (experimental)
- The MultiPhase class for better automated handling of multiphase simulations, including species partitioning between phases
- The Mixtures submodule for better automated handling of mixtures such as air or brine
🐛 Improvements and bugfixes
- Example scripts have been moved out of the main directory and into /scripts
- Enhanced the cooperative pore filling models for the MixedIP algorithm
- Improved speed of InvasionPercolation very substantially (about 25x)
- Enhanced purge_object to accept list of objects
- Added reset method to GenericTransport and ReactiveTransport so objects can be reused inside a for-loop
- Bug fix in plot_networkx method
Fixing error when git not installed
I recently added a small feature that appends the git commit to the version number for users working on a branch other than master, but the import of gitpython apparently fails if the host machine does not have git installed. Now this import occurs inside a try-accept so will not break
Fixing broken pip install
Several of our dependencies broke with the release of numpy 1.15, so users doing pip install with a recent conda installation (on windows) would receive a build error. This version has moved the offending deps to be optional.
There are a number of other small bug fixes and tweaks that were also added, but these were not as urgent.
Version 2 is finally ready!
🚀 New features and capabilities
- All Transport algorithms are now transient, including non-linear reactions
- A Dispersion algorithm with 4 optional discretization schemes has been added
- A mixed percolation algorithm has been added that can model drainage and/or imbibition, and includes detailed menisci movements such as snap-off, burst, and coalescence
- Several new network generators have been added such as bcc and fcc lattices
- Support for several new solvers, including pyAMG and scikit-umfpack which can now both be installed using
pip
, and PetSc, assuming you are able to install it yourself (not supported bypip
). - The symmetry of the coefficient matrix is now maintained when boundary conditions are are added, which significantly improves the speed of some CG based solvers (>2x faster).
Pore-Scale Models
- Much more rigorous and accurate pore-scale conductance models
- Pore-scale models can now be assigned to any object, so a model that calculates pore diameters can be assigned to a network if desired
- Pore-scale models are now stored in a top level module, making then more prominent and easier to find
Importing and Exporting Data
- Added support for two new data export formats: hdf5 and xdmf. These are designed for storing massive data sets with maximum speed, and the xdmf format can be open in Paraview for vastly sped-up visualization
- The PNM file format was refined to save either single projects or entire workspaces seamlessly
Better Organization and General Housekeeping
- The algorithm classes have been completely re-written for better consistency
- A settings attribute has been added to all objects to contain various flags and values which used to be stored as hidden attributes
- Topological manipulation tools have been moved from a sub-module of
network
to a top level module (topotools
) to make it easier to access and more prominent - A
Project
class has been added, that acts as a container for a given pore network simulation, such that theWorkspace
is populated with a collection ofProjects
, each of which contains a Network object and all other associated objects (i.e. geometries, phases, etc.)
📖 Documentation
- The documentation has been thoroughly overhauled, and now includes complete coverage of all modules, classes, methods, and functions.
- The OpenPNM-Example repository has been converted to Jupyter Notebooks so users can download actual functioning code to get started
⚠️ Backwards incompatible changes
One of the main reasons for the version bump to 2.0 was to allow several long delayed changes that break backward compatibility. These are all quite superficial, so any experience using V1.0 should be easily transferred:
- All module names, including the package itself, have been changed to lowercase in accord with pep8 rules
- Neumann and Dirichlet boundary conditions have been renamed to Rate and Value to be more descriptive
- The behavior of the various lookup methods (
pores
,find_neighbor_pores
) have been cleaned up for better consistency - A unique Physics objects must be defined for each Geomery object. This is a bit more effort for the user, but allows much more reliable associations between objects. The new
Project
class has agrid
method that can help to organize and visualize these associations.
Version 2, Beta-2
v2.0.0-beta.2 Merge branch 'dev'
Version 2, Beta-1
This adds the last few weeks of bug fixes and tweaks to the master code. The final release is schedule for July 27th, 2018.
Version 2, Beta-0
This is a beta release of V2. A more verbose release announcement will come when the beta tag is dropped.
Version 1.7.0
The main addition of this release is a Mixed Invasion Percolation algorithm, which was used in our recent publication in TiPM.
The OpenPNM team has been working VERY hard on V2, which is now available on PyPI in beta form, so this will be the last release of the V1 branch.
Patch for indexing errors in latest Numpy version
Numpy has been warning us for a while that certain indexing tricks would be deprecated, and that moment has arrived. This minor patch fixes a few places in the code where this error occurred.
Deploying to PyPI
Merge pull request #682 from PMEAL/deploy_to_pip adding version number to openpnm, setting up autodeploy to pip