Skip to content

Releases: simpeg/discretize

v0.10.0

27 Oct 23:37
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.9.0...v0.10.0

0.9.0 Release

06 Jun 16:45
e14e13e
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.8.3...v0.9.0

0.8.3

13 Apr 19:48
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.8.2...v0.8.3

Discretize restructure

18 Nov 17:35
Compare
Choose a tag to compare

This minor release is intended to bring consistent pep8 style naming across all of discretize's classes and functions.

There are two major types of renaming, aliases and deprecations. We have chosen to move to more descriptive property names for classes, generally. For example, mesh.area is deprecated and now is mesh.face_area. Also properties like mesh.vnC are now officially mesh.shape_cells due to the more descriptive name, but can also be accessed as mesh.vnC to speed up some code writing for users. We have included a full list of aliases and deprecations below. In PR #227 we have detailed our reasonings behind individual name choices.

The other big change that will likely cause previous code to break is that all of these mesh.shape_* type properties are now explicitly tuple-s, making them immutable. These properties could previously be modified which would result in undefined and unsafe behavoir. A side effect of this, is that any code that relied on these properties being numpy.ndarray-s, will break. This is intentional.

There's a few internal changes as well, to reorganize the file structure. importing items in discretize.utils from their individual module files is not recommended and might result in future broken code. Please only import these items from the discretize.utils module.

We have also separated the matplotlib plotting code into a separate module: discretize.utils.mixins.mpl_mod. At the same time we have further improved the plotting speed of discretize.TreeMesh and discretize.CurvilinearMesh. This also allows all of these functions to have a unified calling convention.

Finally, we have removed assert errors in favor of throwing the proper exception when checking inputs. We have removed all references to __future__ and six to clean up and drop python 2 compatibility.

Changes


For a full list of deprecations and aliases please visit the release notes in the documentation here.

Volume Average

03 Sep 00:22
Compare
Choose a tag to compare

discretize 0.5.0 Release Notes

This minor release has a few small bug fixes as well as a new volume averaging operator.

The Volume Averaging operator has been implemented for arbitrary TensorMesh, TreeMesh, and combinations of them. It is defined as being a mass conserving operation. More details can be found in its documentation discretize.utils.volume_average

There are also some updates for the new deprecations in matplotlib to hopefully throw less deprecation warnings internally. There are still a few left which are on our radar to fix in the next patch.

We are also dropping support for python 3.5 which will reach end-of-life within a few weeks.

Contributors

Pull requests

  • #212: Volume average
  • #216: Update 2_tensor_mesh.py
  • #217: Fix Slicer matplotlib-warning.
  • #220: 0.5.0 release notes and requirements update

NumPy Build & Bug Fixes

11 Jan 00:23
Compare
Choose a tag to compare

summary of changes

This is a patch to fix a few bugs that have popped up over the last few months, as well as a single function addition to output only the model for a TreeMesh.

Also we have dropped testing of discretize on Python 2.7 as it is officially in end-of-life stage (as of January 1st, 2020).

  • From #191:
    Enables discretize to be installed on a system without NumPy present beforehand (for example when pip installing discretize).
    It also contains a small update to the curvilinear mesh view that updates that function to be in line with the other plotImage functions.

  • From #189:
    Bugfix. Slicer failed if xslice was provided without a yslice, because of wrong comparison.
    Before, if you provided a homogenous model, it looked like this:
    Selection_002
    So the colour in the xy- and xz-plots is wrong. As soon as you scroll, the colour in the yz-plot will change to the wrong colour too.
    With the bug-fix, they all get the right colour, and will remain correct if scrolling:
    Selection_001
    The bug only affects homogeneous fullspaces, which caused an issue with the range used by colorbar().

  • From #187:
    We can output models through the writeUBC method of the TreeMesh. However, we might want, for symmetry with TensorMesh, also have the writeModelUBC function, which will only write out the model.

serialization of meshes

06 Aug 23:24
Compare
Choose a tag to compare

summary of changes

  • Update instantiation of basemesh so meshes can be formed from their serialized state, e.g.

    mesh = discretize.BaseMesh.deserialize(mesh_json)
    

    will have the value of _n stored, thus, n does not need to be provided on instantiation

  • Update the x0 property on the TreeMesh so that it goes through the

  • Allow complex scalars to return true in the isScalar util, as well as numpy.number (rather than specifically np.int, np.float)

  • Add testing on the serialization / deserialization of meshes

Tree functions

08 Jul 21:12
Compare
Choose a tag to compare

Updates

  • Several of the functions are used to integrate line source terms for FDEM.
  • The TreeCell object now exposes it's node/edge/face indices to python, a TreeCell object can be obtained by directly indexing the TreeMesh.
  • Added much documentation to the TreeMesh objects and their functions.
  • The TreeMesh plotSlice and plotGrid functions now have the same calling conventions as the respective TensorMesh functions

0.4.7

05 Jul 19:15
Compare
Choose a tag to compare

Tutorials in the discretize docs

Addition of tutorials for:

  • Mesh generation (tensor, cyl and tree)
  • Averaging and differential operators
  • Discretized approximations to inner products using finite volume (basic, constitutive relations, differential operators and an advanced section)
  • Solving PDE examples

image

Update TensorMesh-OMF interface

03 Jul 18:36
Compare
Choose a tag to compare

Overview

This release adds full support for going back and forth between OMF and discretize.TensorMesh. The OMF support implemented in a previous release only went one way (disscretize ➡️ OMF) and had a bug that messed up the spatial reference of the OMF mesh. This release makes it seamless to go back and forth (discretize ↔️ OMF). Give it a try with the new to_omf(models) method and load your TensorMeshs into other software that supports OMF (e.g. Leapfrog)!

Notes

  • At the moment, only TensorMeshs are supported by OMF
  • OMFv2 should bring more support for Curvilinear and Tree meshes. When that's released we can fill in the methods that currently raises a NotImplementedError
  • These changes makes updates to the TensorMesh-OMF interface to make going to/from OMF/discretize more fluid.

Example

import discretize
import omf
import numpy as np

# Make a TensorMesh
h = np.ones(16)
mesh = discretize.TensorMesh([h, 2*h, 3*h])
vec = np.arange(mesh.nC)
models = {'arange': vec}

# Make an OMF Element
omf_element = mesh.to_omf(models)

# Use OMF to save that element to an OMF project
proj = omf.Project(
    name='My project',
    description='The most awesome project I have ever worked '\
                'on and this is a lengthy description of how '\
                'awesome it is.',
)

# Add the volume element
proj.elements = [omf_element,]

# Verify all is good
assert proj.validate()

# Write it out
omf.OMFWriter(proj, 'myproject.omf')

And now you can use the .omf project file with your tensor mesh or many tensor meshes in your favorite software that supports OMF (e.g. Leapfrog).

Or you could verify this all worked with omfvista:

import omfvista
foo = omfvista.load_project('myproject.omf')
foo.plot()