Version 1.5
🍏 Major enhancements and changes
- Added two new import classes for importing from iMorph and 3DMA-Rock.
- Now uses dill instead of Python's standard pickle library. This means that custom pore scale models and classes can be saved to "pnm" files.
- Changed the name of the "Controller" object to "Workspace", which more literally describes it's role. "Controller" can still be used for backward compatibility.
- All Network and topology manipulation tools are now found under
Network.tools
although they can still be accessed viaUtilities.topology
for backwards compatibility. - Completely reworked documentation. The 'user guide' now consists of 3 tutorials of varying levels, with the aim that users will know how to use OpenPNM pretty well after completing all three. There is also a separate 'reference' section in the user guide that explains the inner workings of the code in more detail, but users don't have to sift through these to get started anymore.
- All documentation is now hosted on ReadTheDocs, which rebuilds the documentation every time a new commit is pushed to Github. The docs will now always be up-to-date!
- A new parallel repository has been created to house all Examples at https://github.com/PMEAL/OpenPNM-Examples. All the code in this repository is tested against the latest version of OpenPNM on PyPI, so if there are any broken examples we'll know about it. This will remedy the frustration felt by many users when trying to learn OpenPNM by examples. This is also why the Tutorials were created as the main User Guide (see 5 above).
🚀 New features
- Added ability to have spatially varying pore seed values, which is useful for creating porosity distributions or undulations.
- Added new arguments to
num_neighbors
. It can now apply set logic (i.e. 'union' and 'intersection') when counting neighbors, and it can now count neighboring throats as well as pores with theelement
keyword (which is 'pores' by default to maintain backwards compatibility). - Object handles are now stored in dicts rather than lists, so you can access them by name (geom.phases['air']) and also iterate on the dict (pn.phases.values()). This was implemented in a backwards compatible way so geom.phases() and geom.phases('air') still work as they used to...of course using the dict syntax is encourage henceforth.
🐛 Minor improvements and bugfixes
- Fixed code coverage reporting on Codecov
- Changed many print statements to logger messages
- Several private methods were removed that were never called by the code
🥇 Acknowledgements
The OpenPNM Developers would like to thank the following people for contributing to this release:
- Matthew Stadelman (@stadelmanma) for crafting the iMorph IO class
- Masa Prodanovic for help with the 3DMA-Rock import class