Skip to main content

A lattice-gas Monte-Carlo simulation tool

Project description

lattice_mc: A Python Lattice-Gas Monte Carlo Module

PyPI version Build Status DOI JOSS status Documentation Status

lattice_mc is Python module for performing (kinetic) lattice-gas Monte Carlo (LGMC) simulations of ionic transport in solid electrolytes.

In solid electrolytes, ionic motion is typically effected by a series of discrete “jumps” where ions move between adjacent lattice sites [1]. For dilute mobile ions, ionic trajectories are random walks, and simple analytical expressions exits that relate macroscopic transport coefficients, i.e. diffusion coefficients and ionic conductivities, to the microscopic jump frequency of individual ions [2,3]. Practical solid electrolytes have high mobile ion concentrations, with significant interparticle interactions producing deviations from the dilute limit random walk behaviour. In general, the quantitative effect of interparticle interactions cannot be determined analytically. As an alternative, numerical simulations, such as lattice-gas Monte Carlo methods, can be used to directly calculate these relationships. Lattice-gas Monte Carlo methods are particularly suited to studying how varying properties across broad classes of materials give quantitative differences in macroscopic ionic transport, and can be used to understand the different transport properties of materials with, for example, different crystal structures or mobile ion stoichiometries.

lattice_mc has been written to allow materials scientists and solid-state chemists model how the microscopic physics of solid electrolytes (crystal structure, stoichiometry, interaction models) determine macroscopic transport behaviour (diffusion and ionic conduction), with the goal of understand the factors that make different materials more or less useful for specific applications (e.g. Li-ion batteries or fuel cells).

The code allows the programmatic construction of simple lattices (presently implemented are square, honeycomb, and cubic lattices). Lattices with arbitrary geometries can be constructed from a file format that defines the lattice sites and their connectivity, allowing models based on crystallographic data. The algorithms used and interaction models are described in more detail in Ref. [4]. Calculated properties include tracer and “jump” diffusion coefficients; where the latter is proportional to the mobility (and hence the conductivity for charged particles) [5]; and tracer (single particle) and collective correlation factors, f and fI [6]. The simplest interaction model is for “non-interacting” particles, where the only restriction is volume exclusion (two particles cannot simultaneously occupy a single site) [7]. Additional interaction models include nearest-neighbour repulsion and on-site energies for inequivalent sites. Simulations are performed using an efficient rejection-free Monte Carlo scheme [8].

Installation

pip install lattice_mc

Or download the latest release from GitHub

https://github.com/bjmorgan/lattice_mc/archive/1.0.0.tar.gz

Then install

cd lattice_mc
python setup.py install

Or you can clone the latest development version:

git clone git@github.com:bjmorgan/lattice_mc.git

and install the same way.

cd lattice_mc
python setup.py install

Alternatively, you can install the latest build using pip, direct from GitHub, e.g.

pip3 install git+https://github.com/bjmorgan/lattice_mc.git

Documentation

Full documentation and examples are contained in a Jupyter notebook at examples/lattice_mc_example.ipynb. The example notebook is also hosted on GitHub.

Tests

Automated testing of the latest build happens here.

Manual tests can be run using

python3 -m unittest discover

The code has been tested with Python versions 3.5 and above.

References

  1. C. R. A. Catlow, Sol. Stat. Ionics 8, 89 (1983).
  2. R. E. Howard and A. B. Lidiard, Rep. Prog. Phys. 27, 161 (1964).
  3. J. H. Harding, Defects and Transport in Ionic Solids, in Ionic Solids at High Temperatures ed. A. M. Stoneham, World Scientific (1989).
  4. B. J. Morgan, arXiv: 1707.00491
  5. A. Van der Ven et al. Acc. Chem. Res. 46, 1216 (2013).
  6. G. E. Murch Sol. Stat. Ionics 7, 177 (1982).
  7. R. Kutner Phys. Lett. 81A, 239 (1981).
  8. A. F. Voter, Introduction to the Kinetic Monte Carlo Method, in Radiation Effects in Solids, ed. K. E. Sicafus et al., Springer (2007).
  9. Morgan and Madden, J. Phys. Condens. Matter 24, 275303 (2012).
  10. G. E. Murch & R. J. Thorn, Phil. Mag. 36 529 (1977).

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

lattice_mc-1.0.4.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

lattice_mc-1.0.4-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file lattice_mc-1.0.4.tar.gz.

File metadata

  • Download URL: lattice_mc-1.0.4.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.6

File hashes

Hashes for lattice_mc-1.0.4.tar.gz
Algorithm Hash digest
SHA256 eb8a6992e45c7510e56c919d3d191744a249db79152d6a0cef5a9fc534601466
MD5 990c8eefb0eb1ab3647c84cf5e1126cd
BLAKE2b-256 91e73f954feacdac249e90e5116f5ee0099e765ce486c48e59999cf27efb95de

See more details on using hashes here.

File details

Details for the file lattice_mc-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: lattice_mc-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 23.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.6.6

File hashes

Hashes for lattice_mc-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9e710ce1c6e03edce37045905b8942bae2592663ccdf3db40c9dd83e2b9cba9b
MD5 cf844251534c7b423e691eb36ad50501
BLAKE2b-256 a86517b1b4dd823943ec17ba4887609579f63a549f3d52017863882fa1d37405

See more details on using hashes here.

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