issp-center-dev / dsqss

DSQSS -- Discrete Space Quantum System Solver
http://www.pasums.issp.u-tokyo.ac.jp/dsqss/
GNU General Public License v3.0
11 stars 3 forks source link

実空間表示温度グリーン関数出力ファイルの係数が厳密対角化と一致しない。 #39

Open Takuto36 opened 2 years ago

Takuto36 commented 2 years ago

実空間表示温度グリーン関数出力ファイルと厳密対角化して得られた結果を比較していたのですが、スピンの大きさSに依存して、係数が異なっています。 (is31 branchの環境を用いて計算しています。) S= 1/2の場合には問題無いのですが、S=1の場合はおそらくアウトプットファイルを4倍した結果が厳密対角化の結果と一致しています。 S=1に関して、係数があっているか、確認いただけますでしょうか。 以下、具体的に計算した結果を載せさせていただきます。 【計算モデル(S=1)】 S=1、1次元反強磁性ハイゼンベルグ模型、サイト数4で、β(逆温度)=0.5,1、βの分割数は256です。 得られた実空間表示温度グリーン関数出力ファイル(ここでは相対座標をi=j、つまり<S{i}^{+}(τ)S{i}^{-}(0)>の出力ファイルを用いています。) 以下、厳密対角化の結果とDSQSSで得られた結果を4倍したものを載せます。(横軸はβです。)

image image

S=1/2の場合や、SzSzのアウトプットファイルは係数は一致していました。 確認のほど、よろしくお願いいたします。

takeokato719 commented 2 years ago

補足です:高温側のズレは多分サンプリングが足りないからだと思っています。

まず、本当に4倍ずれているかを確認していただきたいです。 本当であれば、マニュアルの説明と値が4倍ずれているので、コードを変えるか、マニュアルを修正していただきたいです。

k-yoshimi commented 2 years ago

お問い合わせの件、承知しました。 S \neq 1/2の場合について、S+S-にかかるファクターがSに依存したものになっているか、と言うことで大丈夫でしょうか? エネルギーやSzSzは合っているとのことですので、コード確認をします。 修正する場合にはS+S-が合わずにSzSzは合っているというのも不思議ですので、どちらかに統一するようにします。

@yomichi S+S-の出力の箇所について確認をお願いできますか?

yomichi commented 2 years ago

cf, ck について、S=1/2 (ハードコアボソン)以外への拡張はちゃんとできていないようです。報告ありがとうございました。 S=1 の場合は S+, S- の非ゼロ要素の値が定数(√2)なので、S=1/2 の場合のコードの定数倍ですみますが、 S>1 の場合にはそうではないので、ちゃんと拡張する場合はそもそも入力ファイルの書式の変更(追加)が必要ですね。 ずれている係数が2 (=√2 ^ 2) ではなくて4なのはちょっと良くわかりません……

k-yoshimi commented 2 years ago

@yomichi @Takuto36 ファクターの件ですが、1次元Heisenberg模型なので、 <SxSx> = <SySy> = <SzSz> が成立するため、 <S+S-> + <S-S+> = 4 <SzSz> が成立するかと思いますので、ここをチェックすることで確かめることができるかと思います。

@Takuto36 DSQSSの入力ファイルを本Issueにアップロードしてもらえるでしょうか? また余力があれば厳密対角化で上の式が成立しているか、念のため確認していただけるでしょうか?

Takuto36 commented 2 years ago

@yomichi @k-yoshimi ①1D反強磁性ハイゼンベルグ、L=4、Periodicで厳密対角化での計算で、 <S+S->=<S-S+>=2×< SzSz >を確認しました。

【<S+S->=<S-S+>】

image

【<S+S->=2×< SzSz >】

image

②Inputファイルに関して。 is31の環境にて、<Sz{i}Sz{j}>のアウトプットを出力出来るようにコードを適宜書き換えコンパイルし(今回の問題になっている<S+S->関連のファイルはいじっていません。)

以下のstd.tomlからdla_preを用いて生成した「lattice.xml」「algorithm.xml」と 以下の相対座標ファイル「disp_L4_Thick1.xml」を自分で準備し。 最後に載せている「param.in」をdlaで実行しています。 (sfoutfile周りのコードを書き換えているため、<S+S->の計算の際はsfoutfileのインプットは空にしていただく必要があると思います。[元々のコードだと波数ファイルが必要で、今回のプロセスでは準備していない為。])

【std.toml】 [hamiltonian] model = "spin" M = 2 Jz = -1.0 Jxy = -1.0 [lattice] lattice = "hypercubic" dim = 1 L = [4] bc = [true] [parameter] beta = 1 nset = 10 npre = 1000 ntherm = 2000 ndecor = 2000 nmcs = 2000 ntau = 256 nvermax = 100000 nsegmax = 100000 seed = 12132401

【disp_L4_Thick1.xml】(直で貼れなかった為、コードの写真を貼っておきます。) image

【param.in】 algfile = algorithm.xml beta = 1.0 cfoutfile = cf.dat ckoutfile = dispfile = disp_L4_Thick1.xml latfile = lattice.xml ndecor = 10000 nmcs = 10000 npre = 10000 nsegmax = 100000 nset = 1 ntau = 256 ntherm = 10000 nvermax = 100000 outfile = res.dat seed = 12132401 sfoutfile = sf.dat simulationtime = 0.0 wvfile =

よろしくお願いいたします。

k-yoshimi commented 2 years ago

@Takuto36 詳細な報告ありがとうございます。 DSQSSで4倍ずれていることは間違いなさそうですので、ファクターの箇所を調査したうえマニュアルに追記しておきます。よろしくお願いします。

Takuto36 commented 2 years ago

@k-yoshimi 承知しました。対応いただきありがとうございます。