Giter Club home page Giter Club logo

cmtj's Introduction

CMTJ

PyPI pages-build-deployment Version License Downloads

Short description

A name may be misleading -- the MTJ (Magnetic Tunnel Junctions) are not the only structures that may be simulated. The library allows for macromagnetic simulation of various multilayer spintronic structures. The package uses C++ implementation of (s)LLGS (stochastic Landau-Lifschitz-Gilbert-Slonczewski) equation with various field contributions included for instance: anisotropy, interlayer exchange coupling, demagnetisation, dipole fields etc.
It is also possible to connect devices in parallel or in series to have electrically coupled arrays.

Quickstart

Installation 🚀

Installation is as easy as doing: A recommended way is to use the pip package manager and virtualenv (or conda).

  1. With virtualenv
$(bash) python -m venv .my-venv
$(bash) source .my-venv/bin/activate
$(.my-venv) python -m pip install cmtj
  1. Straight from pip:
python3 -m pip install cmtj
  1. Straight from source:
python3 -m pip install https://github.com/LemurPwned/cmtj.git
  1. Clone the repository:
git clone https://github.com/LemurPwned/cmtj.git
python3 -m pip install .

Extra dependencies

The package requires (if utils subpackage is used):

- numpy
- scipy
- matplotlib

Read the docs

Documentation: https://lemurpwned.github.io/cmtj

WIKI 🎓

Read more in do the docs here.

Extensions

There's a GUI version available! If you wish to conduct a subset of simulations, mainly for experimental modelling, please see the PyMag project. It uses CMTJ as a backend for fast computation.

Citing

We would appreciate citing either of the listed work if you decide to use the project:

  1. Numerical model of Harmonic Hall voltage detection for spintronic devices
@article{PhysRevB.106.024403,
  title = {Numerical model of harmonic Hall voltage detection for spintronic devices},
  author = {Zi\ifmmode \mbox{\k{e}}\else \k{e}\fi{}tek, S\l{}awomir and Mojsiejuk, Jakub and Grochot, Krzysztof and \L{}azarski, Stanis\l{}aw and Skowro\ifmmode \acute{n}\else \'{n}\fi{}ski, Witold and Stobiecki, Tomasz},
  journal = {Phys. Rev. B},
  volume = {106},
  issue = {2},
  pages = {024403},
  numpages = {9},
  year = {2022},
  month = {Jul},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevB.106.024403},
  url = {https://link.aps.org/doi/10.1103/PhysRevB.106.024403}
}
  1. A comprehensive simulation package for analysis of multilayer spintronic devices
@article{mojsiejuk_comprehensive_2022,
	title = {A comprehensive simulation package for analysis of multilayer spintronic devices},
	url = {http://arxiv.org/abs/2207.11606},
	number = {{arXiv}:2207.11606},
	publisher = {{arXiv}},
	author = {Mojsiejuk, Jakub and Ziętek, Sławomir and Grochot, Krzysztof and Skowroński, Witold and Stobiecki, Tomasz},
	urldate = {2022-07-26},
	date = {2022-07-23},
	langid = {english},
	eprinttype = {arxiv},
	eprint = {2207.11606 [cond-mat]},
	keywords = {Condensed Matter - Materials Science},
}

Development

Contributions

All contributions are welcome, please leave an issue if you've encountered any trouble with setup or running the library.

Precommit

There's a .pre-commit-config.yaml that does some basic python and cpp lints and checks. More static analysis to come in the future. This may be run with:

pre-commit run -v

or

pre-commit run -a (or --files core/* cmtj/*)

Documentation builds

There are couple of stages to building the documentation

  1. Build Doxygen documentation
    doxygen Doxyfile
    
    This is mostly for the C++ documentation. Furture changes may couple C++ and Python docs.
  2. Build stubs The stubgen is pybind11-stubgen or mypy stubgen with the latter being preferred now. E.g. to generate Stack module stubs we can go:
    stubgen -m cmtj.stack -o target-stub-dir/
    
    More info here: https://mypy.readthedocs.io/en/stable/stubgen.html.
  3. Parse stubs to Markdown. This stage is done by running: python3 docs/docgen.py The deployment of the documentation is done via:
mkdocs gh-deploy

cmtj's People

Contributors

lemurpwned avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.