このドキュメントでは、C実装のmVMC(many-variable Variational Monte Carlo)の使い方について説明します。
mVMCは量子格子模型に対する高精度な変分モンテカルロ計算を実行するためのソフトウェアです。Hubbard模型、Heisenberg模型、近藤格子模型などの強相関電子系の従来模型に対応しており、シンプルで柔軟なユーザーインターフェースと大規模並列化をサポートしています。
本プロジェクトには以下のドキュメントが含まれています:
- 英語版マニュアル:
doc/mVMC-1.3.0_en.pdf- 最新版の英語マニュアル - 日本語版マニュアル:
doc/mVMC-1.3.0_ja.pdf- 最新版の日本語マニュアル - HTML版マニュアル:
doc/userguide.html- ブラウザで閲覧可能なマニュアル
- 英語版ソース:
doc/en/source/- reStructuredText形式の英語ドキュメント - 日本語版ソース:
doc/ja/source/- reStructuredText形式の日本語ドキュメント
intro.rst- mVMCの概要と特徴start.rst- インストールと基本的な使用方法tutorial.rst- チュートリアルstandard.rst- 標準モードの使用方法expert.rst- エキスパートモードの詳細output.rst- 出力ファイルの説明algorithm.rst- アルゴリズムの詳細fourier/- フーリエ変換関連の機能wannier/- Wannier関数との連携
mVMCのコンパイル・使用には以下が必要です:
- Cコンパイラ(Intel、Fujitsu、GNU など)
- MPIライブラリ
- LAPACKライブラリ(Intel MKL、Fujitsu、ATLAS など)
- オプション:ScaLAPACKライブラリ
プロジェクトのmVMCディレクトリで、環境に応じて設定スクリプトを実行します:
cd mVMC
bash mVMCconfig.sh [system_name]利用可能なシステム設定:
gcc-fujitsu: GCC/FCC混合コンパイル(富岳向け)intel-impi: Intel Compiler + IntelMPI(物性研システムC向け)intel-mpi: Intel Compiler + OpenMPI/MPICH2aocc-aocl: AMD AOCC + AOCL + OpenMPI/MPICH2gcc-aocl: GCC + AOCL + OpenMPI/MPICH2(物性研システムB向け)gcc-mkl-mpi: GCC + MKL + OpenMPI/MPICH2gcc-x86-mpi: GCC + OpenMPI/MPICH2(一般的なx86_64)gcc-arm-mpi: GCC + OpenMPI/MPICH2(Armv8-A)
設定後、コンパイルを実行:
make mvmc実行ファイル vmc.out と vmcdry.out が src/ ディレクトリに生成されます。
mkdir build
cd build
cmake -DCONFIG=gcc ../
make利用可能なCONFIGオプション:
gcc: GCC compiler + Linux PCintel: Intel compiler + Linux PCfujitsu: Fujitsu compilersekirei: 物性研システムB "sekirei"
mVMC/
├── src/ # ソースコード
│ ├── mVMC/ # メインのmVMCソースコード
│ ├── StdFace/ # 標準格子・模型定義
│ ├── pfapack/ # Pfaffian計算ライブラリ
│ └── ...
├── samples/ # サンプル計算
│ ├── tutorial_1.1/ # 基本チュートリアル
│ ├── tutorial_1.2/ # 相関関数計算
│ ├── tutorial_1.3/ # UHF計算との比較
│ └── ...
├── doc/ # ドキュメント
├── tool/ # 解析ツール
└── CMakeLists.txt # CMake設定ファイル
最もシンプルな例(1次元Hubbard模型):
# stan.in
L = 2
Lsub = 2
model = "FermionHubbard"
lattice = "chain"
t = 0.5
U = 4.0
ncond = 2
NSPGaussLeg = 1
2Sz = 0
NSROptItrStep = 100
NSROptItrSmp = 10
NVMCSample = 1000
DSROptRedCut = 1e-8
DSROptStaDel = 1e-2
DSROptStepDt = 1e-2
- 最適化計算:
vmcdry.out stan.in # 入力ファイルの準備
mpirun -np 4 vmc.out namelist.def # 最適化実行- 物理量計算:
vmcdry.out stan.in # 物理量計算用設定
cp green1 greenone.def # Green関数設定
cp green2 greentwo.def # Green関数設定
mpirun -np 4 vmc.out namelist.def zqp_opt.dat # 計算実行チュートリアル1.2の実行:
cd samples/tutorial_1.2
# Python環境での入力ファイル生成
python3 MakeInput.py input.toml
# 最適化計算
vmcdry.out ./stan_opt.in
mpirun vmc.out namelist.def
cp ./output/zqp_opt.dat .
mv output opt
# 物理量計算
vmcdry.out ./stan_aft.in
cp green1 greenone.def
cp green2 greentwo.def
mpirun vmc.out namelist.def ./zqp_opt.dat
mv output aft
# 後処理
python3 VMClocal.py input.toml
python3 VMCcor.py input.toml主要な出力ファイル:
output/: 計算結果の出力ディレクトリzqp_opt.dat: 最適化された変分パラメータEne.dat: エネルギーの時系列データgreenone.def,greentwo.def: Green関数の設定ファイル
mVMC/samples/ ディレクトリには以下のサンプル計算が含まれています:
- tutorial_1.1: 基本的なmVMC計算の入門
- tutorial_1.2: 相関関数計算の実例
- tutorial_1.3: UHF(非制限Hartree-Fock)計算との比較
- tutorial_2.1: より高度な計算手法
- tutorial_2.2: 専門的な解析手法
- Standard/: 標準的な格子模型のサンプル
Hubbard/: Hubbard模型Kondo/: 近藤格子模型Spin/: スピン模型
- Wannier/: Wannier関数を用いた実材料計算
Sr2CuO3/: Sr2CuO3の計算例Sr2VO4/: Sr2VO4の計算例
詳細なチュートリアル手順については、各サンプルディレクトリ内のREADMEファイルを参照してください。
MPIを使用した並列計算:
# 4プロセスでの実行
mpirun -np 4 vmc.out namelist.def
# SLURMを使用したジョブ投入例
#SBATCH -N 4
#SBATCH -n 64
#SBATCH -c 8
export OMP_NUM_THREADS=${SLURM_CPUS_PER_TASK}
srun vmc.out namelist.defより詳細な制御が必要な場合は、namelist.defファイルを直接編集して計算パラメータを調整できます。
tool/ ディレクトリには以下の解析ツールが含まれています:
greenr2k: 実空間Green関数から運動量空間への変換respack2wan90.py: RESPACK形式からWannier90形式への変換
-
コンパイルエラー:
- 必要なライブラリ(MPI、LAPACK)が正しくインストールされているか確認
mVMCconfig.shで適切なシステム設定を選択
-
実行時エラー:
- 入力ファイルの形式を確認
- MPI環境が正しく設定されているか確認
-
収束しない:
- 最適化パラメータ(
NSROptItrStep、DSROptStepDtなど)を調整 - より多くのサンプル数(
NVMCSample)を設定
- 最適化パラメータ(
- マニュアル(PDF):
doc/mVMC-1.3.0_en.pdf(英語) /doc/mVMC-1.3.0_ja.pdf(日本語) - ソースドキュメント:
doc/en/source/(英語) /doc/ja/source/(日本語) - HTML版:
doc/userguide.htmlからブラウザでアクセス可能
- フーリエ変換機能:
doc/en/source/fourier/またはdoc/ja/source/fourier/ - Wannier関数連携:
doc/en/source/wannier/ - アルゴリズム詳細:
doc/en/source/algorithm.rstまたはdoc/ja/source/algorithm.rst
mVMCを研究で使用する場合は、以下の論文を引用してください:
mVMC - Open-source software for many-variable variational Monte Carlo method, Takahiro Misawa, Satoshi Morita, Kazuyoshi Yoshimi, Mitsuaki Kawamura, Yuichi Motoyama, Kota Ido, Takahiro Ohgoe, Masatoshi Imada, Takeo Kato, Computer Physics Communications, 235, 447-462 (2019)