discretize 0.11.0 Release Notes#

October 24, 2024

This minor release contains many bugfixes and updates related to new package builds.

Numpy 2#

discretize now fully supports numpy 2! It is both built against and tested against numpy 2.0. It still has a minimum required runtime of numpy 1.22 though, as building against numpy 2.0 emits ABI compatible calls for older numpy versions.

Of note to developers, we now require numpy 2.0 for building as it makes use of the numpy-config tool to locate the numpy include directory.

Python versions#

discretize has bumped its minimum supported python version to 3.10, and is tested against versions 3.10-3.13. In the future we intended to stay in line with the minimum python version supported by the most recent numpy release.

Random Generators#

discretize and its testing utilities now make use of numpy.random.RandomGenerator to make draws from random number generators instead of the deprecated numpy.random.rand functions. These functions now support a new keyword argument random_seed :

  • :func:discretize.tests.setup_mesh (only used when "random" in mesh_type)

  • :func:discretize.tests.check_derivative (only used when dx=None)

  • :func:discretize.tests.assert_isadjoint

  • :func:discretize.tests.OrderTest.orderTest (only used when "random" in mesh_type)

  • :func:discretize.utils.random_model

Maintainers of downstream packages should explicitly set seeded generators when using these methods for testing purposess to ensure reproducibility.

Cell Bounds#

:class:discretize.TensorMesh and :class:discretize.TreeMesh now have a cell_bounds property that returns the (x_min, x_max, y_min, y_max, z_min, z_max) of every cell in the mesh at once. Also now the :class:discretize.tree_mesh.TreeCell has a corresponding bounds property.

TreeMesh updates#

You can now query a :class:discretize.TreeMesh for cells contained in the same geometric primitives that are supported for refining. In addition there is a new :func:discretize.TreeMesh.refine_plane method for refining along a plane.

Contributors#

  • @jcapriot

  • @santisoler

  • @prisae

  • @xiaolongw1223

  • @lheagy

  • @omid-b

Pull requests#

  • #347: Replace deprecated Numpy’s product by prod

  • #351: Replace Slack links for Mattermost links

  • #353: Fix typo in tutorials

  • #354: Update year in LICENSE

  • #356: Expose TreeMesh geometric intersections used for refine functions.

  • #358: Replace hanging CurviMesh in docstring for CurvilinearMesh

  • #360: Update use of numpy’s random number generators.

  • #364: Fix slicer re #363

  • #366: Add TensorMesh.cell_bounds property

  • #367: Add TreeCell.bounds and TreeMesh.cell_bounds methods

  • #368: Set minimum to Python 3.10 (and general CI Maintenance)

  • #371: Add version switcher to discretize docs

  • #372: Deploy docs to a new folder named after their tagged version

  • #373: display dev doc banner

  • #374: Bump pydata_sphinx_theme version to 0.15.4

  • #375: Fix caching of internal projection matrices

  • #376: Fix macos-latest build

  • #379: Numpy2.0 updates

  • #380: Create build_distributions.yml

  • #381: 0.11.0 Release Notes