Skip to content

Version 2 is finally ready!

Compare
Choose a tag to compare
@jgostick jgostick released this 23 Aug 19:58

馃殌 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 by pip).
  • 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 the Workspace is populated with a collection of Projects, 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 a grid method that can help to organize and visualize these associations.