😎

HΦでcTPQ

2 min read

はじめに

\mathcal{H}\Phiは量子多体格子系の数値対角化packageです.
2021年9月29日にversion 3.5.0がreleaseされ, cTPQ(canonical thermal pure quantum (state))計算ができるようになりました.
cTPQは量子系のcanonical ensembleの熱期待値を計算する手法です.

この記事では\mathcal{H}\PhiでcTPQ計算を実行するにあたり必要なinput fileの計算parameterを整理したいと思います.

\mathcal{H}\Phiがinstallされ, 適切なPATHが通っていることを前提とします.

input fileの準備

version 3.5.0ではexpert modeのみcTPQ計算に対応しています.
したがって, expert mode用のinput fileを用意する必要があります.
例として以下のstandard mode用のinput fileからexpert mode用のinput fileを生成します.
このinput fileで計算する模型はS_{z,\mathrm{tot}}を指定しないJ=1の2 siteのS=1/2 Heisenberg模型になっています.

L = 2
model = "SpinGC"
method = "Time-Evolution"
lattice = "chain"
J = 0.5

method = "Time-Evolution"の設定値は何でも良いのですが, 後述のmodpara.defExpandCoefの行が設定されるようにmethod = "Time-Evolution"にしています.
他の設定値の場合, ExpandCoefの行は記載されませんので, 手で書き足さなければdefault値(=10)で計算されます.

standard mode用のinput fileからexpert mode用のinput fileを生成するには, 以下のcommandをs計算用のdirectoryで実行します.

HPhi -sdry stan.in

input fileの設定

cTPQ計算を実行するにあたり編集する必要のあるinput fileはcalcmod.defmodpara.defの2つです.

calcmod.def

calcmod.defは実行する計算の種類などを指定するinput fileです.
ここでcTPQ計算を行うことを指定します.
以下のような値を設定することでcTPQ計算が実行されます.

CalcType 5

modpara.def

modpara.defは計算条件などを指定するinput fileです.
modpara.defにおいて, cTPQ計算に関係するparameterは以下の通りです[1].
以下の設定値はdefault値を記載しています.
なお, LargeValueは模型の詳細によりdefault値が変わります.

Lanczos_max    2000 
LargeValue     1.125000000000000e+00    
NumAve         5    
ExpecInterval  20 
ExpandCoef    10

各parameterをそれぞれ順番に解説します.

k step目の逆温度\beta_k

\beta_k=k\Delta\tau

で与えられます.

Lanczos_max

dafault値の2000はLanczos法などの基底状態計算用の設定値です.
cTPQ計算では多すぎると思いますので減らしましょう.

LargeValue

逆温度刻み幅の逆数\Delta\tau=1/\mathrm{LargeValue}です.

\mathcal{H}\PhiのcTPQ計算では無限温度(\beta_0=0)から計算が始まりますので,
最高逆温度(最低温度)は\beta_\mathrm{Lanczos\_max}=(\mathrm{Lanczos\_max-1})/\mathrm{LargeValue}になります.

NumAve

異なる初期状態で何回同じ計算を実行するかを指定するものです.
cTPQ計算で正しい計算結果を得るにはNumAve個のdataの平均を取る必要があります.

ExpecInterval

相関函数を計算する頻度を指定します.
つまりExpecInterval step毎に相関函数を出力します.

ExpecIntervalは正の値である必要があるため, 相関函数が不要の場合はnamelist.defから相関函数に関するinput fileを指定する行を削除します.

GreenOne greenone.def この行を削除
GreenTwo greentwo.def この行を削除

ExpandCoef

指数函数を多項式近似する際に何次まで考慮するか指定します.

\exp{\left(\frac{-\beta\hat{\mathcal{H}}}{2}\right)}\approx\sum_{n=0}^{\mathrm{ExpandCoef}}\frac{1}{n!}{\left(\frac{-\beta\hat{\mathcal{H}}}{2}\right)^n}

小さすぎると正しい計算結果になりませんが, 大きくすると計算時間が長くなります.

実行例

tutorialに以前から使えていたmicrocanonical TPQ計算の実行例があるのでこれとcTPQ計算を実行して比較してみましょう.
やる気が出たら書きます.

脚注
  1. initial_ivも設定としてはrelevantですが, 基本的に変更する必要はないので省略します. ↩︎

Discussion

ログインするとコメントできます