#monte-carlo #mcmc #physics

bin+lib vegas

使用 Rust 编写的微型蒙特卡洛代码

2 个版本

使用旧 Rust 2015

新版本 0.0.3 2024 年 8 月 19 日
0.0.2 2024 年 8 月 19 日

#60模拟

Download history 130/week @ 2024-08-14

130 每月下载量

MIT 许可证

24KB
529 代码行

vegas-rs

这是磁系统原子模拟包的实验性实现。 vegas-rs 的主要目标是确定 Rust 语言在类似应用中的性能。

了解更多关于 vegas 项目


lib.rs:

vegas 是一个库,允许您创建磁性材料的原子模拟。

目录表

安装

通过在您的 Cargo.toml 中添加以下内容来安装 vegas

[dependencies]
vegas = "*"

自旋

自旋是库的基本构建块。它们代表磁性材料中原子的自旋。库提供了一个 Spin 特征,您可以为您的自旋类型实现它。

库提供了一个 HeisenbergSpin 类型,它代表 Heisenberg 模型中的自旋。该 HeisenbergSpin 类型是一个三维向量,表示原子的自旋。

此外,库提供了一个 IsingSpin 类型,它代表 Ising 模型中的自旋。该 IsingSpin 类型实现为枚举,可以取向上或向下的变体。

哈密顿量

哈密顿量是一个计算自旋系统能量的函数。

此库提供了一个 EnergyComponent 特征,您可以为您的哈密顿量实现它。

此库提供以下哈密顿量,等等

  • Exchange - 计算自旋系统交换能量的哈密顿量。
  • Gauge - 计算自旋系统规范能量的哈密顿量。
  • UniaxialAnisotropy - 计算自旋系统单轴各向异性能量的哈密顿量。
  • ZeemanEnergy - 计算自旋系统塞曼能量的哈密顿量。
  • Compound - 结合多个哈密顿量的哈密顿量。

示例

use vegas::hamiltonian;
use vegas::integrator::{Integrator, MetropolisIntegrator, StateGenerator};
use vegas::energy::{HamiltonianComponent, Gauge};
use vegas::state::{HeisenbergSpin, State};

let hamiltonian = hamiltonian!(Gauge::new(10.0));
let mut integrator = MetropolisIntegrator::new(3.0);
let mut state: State<HeisenbergSpin> = integrator.state(1000);
loop {
    let steps = 1000;
    let mut energy_sum = 0.0;
    for _ in 0..steps {
        state = integrator.step(&hamiltonian, &state);
        energy_sum += hamiltonian.total_energy(&state)
    }
    println!("{} {}", integrator.temp(), energy_sum / steps as f64);
    if integrator.temp() < 0.1 {
        break;
    }
    integrator.cool(0.1);
}

依赖关系

~14MB
~233K SLoC