HΦによる励起スペクトル計算
Last Update:2021/12/09
はじめに
量子スピン系において、動的構造因子 \(S(q,\omega)\) は、中性子散乱などの実験と直接比較可能な物理量です。そのため、これを計算できるかどうかというのは理論と実験との協働という面からみても重要です。たとえば \(S=1/2\) 反強磁性ハイゼンベルグ鎖 (AFH chain)における動的構造因子の縦成分 \(S_{zz}(q,\omega)\) は、 \(e_1(q) = J\pi/2 |\sin(q)|\) と \(e_2(q) = J\pi |\sin(q/2)|\) の2つのモード (des Cloizaux-Pearson mode) に挟まれた連続励起になっています。 この励起は、実際に \(\mathrm{Sr}_2\mathrm{Cu}\mathrm{O}_3\) などの一次元物質で観測されています。
HΦ(HPhi) は、ハバード模型や量子スピン模型の厳密対角化ソルバーです。 HPhi を用いることで、これらの基底状態だけではなく、動的構造因子を計算することもできます。 今回は、HPhi v3.1.2 を用いて \(S=1/2\) AFH chain のスピノン励起スペクトルを調べてみます。
インストール
プレインストール環境を使う
計算物質科学向け Live Linux システムである MateriAppsLIVE! や物性研スパコンにはHPhi がプリインストールされています。 これらを用いたHPhi の利用については、既存のレビュー記事があるのでそちらを参照してください。
ソースからインストール
HPhi はソースコードがGitHub 上に公開されています(以下、行頭の$
は端末のプロンプトです。)。
$ cd && mkdir -p work && cd work $ git clone https://github.com/issp-center-dev/HPhi
CMake をつかってMakefile を生成し、ビルドします。
$ mkdir build && cd build $ cmake -DCONFIG=gcc -DCMAKE_INSTALL_PREFIX=../usr ../ $ make -j3 install
$HOME/work/HPhi/usr/bin
に実行可能ファイルが生成されるので、このディレクトリにパスを通しておきます。
$ export PATH=$HOME/work/HPhi/usr/bin:$PATH
スペクトル計算
単一波数
まず、励起する前の基底状態を求めます。 入力ファイルとして、次の内容をもつ gs.in
を用意します。
method = "cg" model = "spin" lattice = "chain lattice" L = 16 J = 1 2S = 1 2Sz = 0 EigenVecIO = "out"
これをHPhi に与えることで基底状態を計算し、出力します。
$ HPhi -s gs.in
次に、励起スペクトルを計算するための入力ファイル exc.in
を用意します。
method = "cg" model = "spin" lattice = "chain lattice" L = 16 J = 1 2S = 1 2Sz = 0 LanczosEPS = 8 CalcSpec = "Normal" SpectrumType = "SzSz" OmegaMin = 0.0 OmegaMax = 3.15 OmegaIM = 0.1 spectrumQL = 0.5
spectrumQL = 0.5
は、 \(q = 0.5 \times 2\pi = \pi\) を意味します。
このファイルを変換してエキスパートモード用の入力ファイルを生成します。
HPhi -sdry exc.in
生成されたファイルのうち、 modpara.def
の最後にある OmegaOrg
というパラメータを書き換えて、エネルギーの原点を基底状態エネルギーに設定します。
基底エネルギーは output/zvo_energy.dat
に書いてあるものをコピペします。
$ grep Energy output/zvo_energy.dat Energy -7.1422963606163332
modpara.def
を書き換えたら、改めてHPhi 計算を実行します。
$ HPhi -e namelist.def
動的グリーン関数が output/zvo_DynamicalGreen.dat
に出力されます。求めたい励起スペクトルは、虚部の逆符号なので、
$ gnuplot gnuplot> pl 'output/zvo_DynamicalGreen.dat' u 1:(-$4) w l
とすることで見ることができます。
波数スイープ
HPhi では一度に一つの波数でしか励起スペクトルを計算できません。そのため、実際に分散関係を調べる場合には、波数を変えながら何度も計算し直す必要があります。この作業を手でやるのは大変面倒なので、スクリプトで自動実行できるようにします。 このスクリプトは最初に基底状態を計算し、その後に q = 2pi n/L (n=0, 1, ..., L/2)
の各波数について励起スペクトルを計算し、 spectrum-L16.dat
に結果を書き出します。
$ wget http://bit.ly/2GLnsyf -O hphi_AFHchain_spectrum.sh $ sh ./hphi_AFHchain_spectrum.sh
gnuplot を用いて励起スペクトルを可視化してみます。
gnuplot> set dgrid3d 51,51,10 gnuplot> set pm3d map gnuplot> spl 'spectrum-L16.dat' u (2*$1):($2/pi):(-$4) w pm3d
AFH chain の励起スペクトルが無事に観測できました。特に、下部 dCP mode がきれいに見えています。
システムサイズを大きくするとさらにきれいになります。例えば物性研スパコン sekirei で \(L=28\) の計算をした結果は次のようなものになります。