Skip to main content

Adaptive-grid phase diagram calculation and plotting routines

Project description

PhaseDiagram

Adaptive-grid phase diagram calculation and plotting routines

2D phase diagrams

A small piece of code for plotting integer-valued functions over strangely shaped regions.

The general idea:

  1. Define an initial series of points, and evaluate the phase function at those points.
  2. Compute the Delaunay triangulation of this grid.
  3. For every triangle with disagreeing edges, add an extra point in its centre.
  4. Repeat.

This is defined for both 2D phase digrams, and for 3D unit sphere projections where 3 competing parameters are normalised, e.g. to an overall energy scale.

Baisc usage (phaseplane)

import numpy as np                 
import matplotlib.pyplot as plt

from PhaseDiagram import PhasePlane


def phase(X, Y):
    return np.where(X**2 + 4*Y**2 > 1, 1, 0) + np.where(X + Y > 0, 1, 0) 

p = PhasePlane(phase, ['A','B','C'], ['x1','x2'])
p.set_initpts(np.linspace(-1.5,1.5,10),np.linspace(-1.5,1.5,10))
           
p.refine(6)

p.plot()

plt.show()

p.refine() may be called any number of times. This is particularly useful in e.g. jupyter notebooks or ipython.

More examples are present in te examples folder, which I will gradually add to.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PhaseDiagram-0.3.3.tar.gz (19.8 kB view hashes)

Uploaded Source

Built Distribution

PhaseDiagram-0.3.3-py3-none-any.whl (23.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page