Skip to main content

A Python library for generating (optimal) anisotropic power diagrams

Project description

Logo

PyAPD

A Python library for computing (optimal) anisotropic power diagrams using GPU acceleration. Current main application concerns geometric modelling of polycrystalline materials with curved boundaries with grains of prescribed volumes and fine control over aspect ratio and location of the grains.

Installation

Install with pip:

pip install PyAPD

Example usage

See /notebooks/tutorials/example_usage.ipynb nbviewer

Google Colab

To quickly test the speed of the GPU-acceleration, you can play around with the notebook example_usage.ipynb in Google Colab Open In Colab.

Note that by default the Google Colab runtime is CPU-only. To change to a GPU runtime, go to Runtime > Change runtime type and click on T4 GPU. Note that T4 GPU is considered pretty slow and is provided by Google Colab free of charge. To access the gold standard A100 GPU via Google Colab, a subscription is required.

For local use, if you do not have a GPU, you should expect a warning

[KeOps] Warning : Cuda libraries were not detected on the system ; using cpu only mode

but the library is fully functional.

Paper examples

This library is accompanied by the paper

  • M. Buze, J. Feydy, S.M. Roper, K. Sedighiani, D.P. Bourne, Anisotropic power diagrams for polycrystal modelling: Efficient generation of curved grains via optimal transport, Computational Materials Science, Volume 245, 2024, DOI, LINK.

The examples presented in the paper can be found in /notebooks/paper_examples, which includes all the Jupyter notebooks as they were run, the data that was generated and the plots from the paper. For the ease of access, here we list them with links to view them statically in NBViewer and also a link to an interactive version in Google Colab. Note that the notebooks relying the loading of data will not work out of the box in Google Colab -- the relevant data will have to be loaded manually.

  • Runtime tests
    1. APD generation
      • Gathering data nbviewer Open In Colab
      • Plotting the data for the 2D case nbviewer Open In Colab and for the 3D case nbviewer Open In Colab
    2. Finding optimal APDs
      • Gathering data nbviewer Open In Colab
      • Plotting the data for the 3D multi-phase case nbviewer Open In Colab
    3. EBSD data examples
      • Fitting to data and artificial sample generation nbviewer Open In Colab
      • Pixel level comparison nbviewer Open In Colab
    4. Additive manufacturing example nbviewer Open In Colab

Citing this work

If you use PyAPD for academic research, you may cite the paper to which our library is tied as follows.

@article{PyAPD,
title = {Anisotropic power diagrams for polycrystal modelling: Efficient generation of curved grains via optimal transport},
journal = {Computational Materials Science},
volume = {245},
pages = {113317},
year = {2024},
issn = {0927-0256},
doi = {https://doi.org/10.1016/j.commatsci.2024.113317},
url = {https://www.sciencedirect.com/science/article/pii/S092702562400538X},
author = {M. Buze and J. Feydy and S.M. Roper and K. Sedighiani and D.P. Bourne},
keywords = {Anisotropic power diagrams, Polycrystalline materials, Microstructure generation, Optimal transport},
}

Related projects

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

pyapd-0.1.3.tar.gz (21.0 kB view details)

Uploaded Source

File details

Details for the file pyapd-0.1.3.tar.gz.

File metadata

  • Download URL: pyapd-0.1.3.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for pyapd-0.1.3.tar.gz
Algorithm Hash digest
SHA256 b1773ac739e45698cb311963d720e486a8c8e0474f78a89f358193cb5db9e14d
MD5 4c838205a228f78eb92b773225ba866f
BLAKE2b-256 36d2c7c7d7e949f0dff0697a7a880ceec899daaf930bc44b2a717cb80016555b

See more details on using hashes here.

Supported by

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