vegas
Introduction
This is an experimental implementation of an atomistic simulation package for magnetic systems. vegas's main goal is to determine how performant is the rust language for this kind of application.
Installation
To install vegas you need to have the rust installed. Then, you can install vegas by running the following command:
If you want to install vegas as a library, you can add it via cargo:
Features
As a library
- Statistical metrics accumulators.
- Static dispatching of compund Hamiltonians.
- Pre-defined energy components: Gauge, Exchange, Anisotropy, Zeeman.
- Powerful error handling via the
thiserrorcrate. - Flexible instrumentation system, using dynamic dispatching.
- Support for different integration algorithms such as Metropolis.
- Parquet input output support via the
parquetcrate. - Pre-defined programs: Relax, CoolDown, HysteresisLoop.
As a command line tool
You can use the toml input file format to run simulations. An example of input file is given below:
# Model definition can be Ising or Heisenberg
= "Ising"
# You can create unit cells of different lattice types.
[]
= "sc"
# You can expand your unit cell to create larger samples.
[]
= 10
= 10
= 1
# You can set periodic boundary conditions in each direction.
[]
= true
= true
= false
# You can control the steps of the simulation.
[[]]
= "Relax"
= 1000
= 4.0
[[]]
= "CoolDown"
= 4.0
= 0.1
= 0.1
= 1000
= 20000
# You can define outputs to be written during the simulation.
[]
= "./output.parquet"
[]
= "./state.parquet"
= 1000
You can run the simulation by executing the following command:
There's a similar input for the Wolff algorithm, you can run with the following command:
Contributing
Contributions are welcome! Please open an issue or submit a pull request on GitHub. There are currently some missing features that would benefit the package, such as:
- Custom exchange interaction values (so far we only support
1.0). - More Hamiltonian terms (Dzyaloshinskii-Moriya, Dipolar, etc).
- More integration algorithms (Wolff, Swendsen-Wang, etc).