跳至内容

DMFT-08 Lattices

Setting a particular lattice

Option DOSFILE

之前所有的教程处理的都是具有半圆形态密度的贝特格子。现在我们展示如何设置输入参数,以指定某个特定格子的态密度。要运行模拟,你可以直接使用之前教程中的脚本,只需替换参数列表即可进行类似的模拟。例如,你可以像 DMFT-04 Mott 中那样考察 MIT。

对于一般的格子,你需要提供该格子的态密度。除此之外,还需要做一些其他修改才能运行模拟。下面是一个可用的 python 脚本 tutorial8a.py,用于设置输入文件并运行模拟:

import pyalps
import matplotlib.pyplot as plt
import pyalps.plot


#prepare the input parameters
parms=[]
for u in [3.]: 
  for b in [6.]:
    parms.append(
            { 
                'BETA' : b,          # inverse temperature
                'MU' : 0.0,          # chemical potential corresponding to half-filling
                'U' : u,             # Hubbard interaction
                'FLAVORS' : 2,       # corresponds to spin up/down
                'SITES' : 1,         # number of sites in the impurity
                'H' : 0.0,           # there is no magnetic field
                'H_INIT' : 0.05,     #  we set initial field to split spin up/down in order to trigger AF phase
                'OMEGA_LOOP' : 1,        # the selfconsistency runs in Matsubara frequencies
                'ANTIFERROMAGNET' : 1,   # allow Neel order
                'SYMMETRIZATION' : 0,    # do not enforce paramagnetic solution
                'NMATSUBARA' : 500,      # number of Matsubara frequencies
                'N' : 500,               # bins in imaginary time
                'CONVERGED' : 0.005,     # criterion for convergency
                'MAX_TIME' : 60,         # max. time spent in solver in a single iteration in seconds
                'G0OMEGA_INPUT' : "",    # forces to start from the local non-interacting Green's function
                'MAX_IT' : 10,           # max. number of self-consistency iterations
                'SWEEPS' : 10000,    # max. number of sweeps in a single iteration
                'THERMALIZATION' : 500, # number of thermalization sweeps
                'SEED' : 0,              # random seed
                'SOLVER' : "hybridization",   # we take the hybridization impurity solver
                'SC_WRITE_DELTA' : 1,         # input for the hybridization impurity solver is the hybridization function Delta, which has to be written by the selfconsistency
                'N_MEAS' : 5000,              # number of Monte Carlo steps between measurements
                'N_ORDER' : 50,               # histogram size
                'DOSFILE' : "DOS/DOS_Square_GRID4000", # specification of the file with density of states
                'GENERAL_FOURIER_TRANSFORMER' : 1,  # Fourier transformer for a general bandstructure
                'EPS_0' : 0,                        # potential shift for the flavor 0
                'EPS_1' : 0,                        # potential shift for the flavor 1
                'EPSSQ_0' : 4,                      # the second moment of the bandstructure for the flavor 0
                'EPSSQ_1' : 4,                      # the second moment of the bandstructure for the flavor 1
            }
        )

#write the input file and run the simulation
for p in parms:
    input_file = pyalps.writeParameterFile('hybrid_DOS_beta_'+str(p['BETA'])+'_U_'+str(p['U']),p)
    res = pyalps.runDMFT(input_file)

输入文件中出现的与格子相关的参数如下:

DOSFILE = DOS/DOS_Square_GRID4000; // specification of the file with density of states
GENERAL_FOURIER_TRANSFORMER = 1;  // Fourier transformer for a general bandstructure
EPS_0 = 0;                        // potential shift for the flavor 0
EPS_1 = 0;                        // potential shift for the flavor 1
EPSSQ_0 = 4;                      // the second moment of the bandstructure for the flavor 0
EPSSQ_1 = 4;                      // the second moment of the bandstructure for the flavor 1

注 1:如果在输入文件中不提供能带结构参数(EPS_i、EPSSQ_i),那么它们将根据给定的 DOS 计算得到(自 revision 6146 起),公式为 EPSflavor=i=dϵ DOSband=i/2(ϵ) ϵEPS_{flavor=i} = \int \mathrm{d}\epsilon\ DOS_{band=i/2}(\epsilon)\ \epsilonEPSSQflavor=i=dϵ DOSband=i/2(ϵ) ϵ2EPSSQ_{flavor=i} = \int \mathrm{d}\epsilon\ DOS_{band=i/2}(\epsilon)\ \epsilon^2

注 2:反铁磁自洽循环假定为 Néel 序,因此仅适用于二分格子(bipartite lattices)。

注 3:态密度必须由用户自行提供。本教程提供了以下几种态密度:

  • 正方格子 DOS_Square_GRID4000(由 DOS_Square.py 在 GRID=4000 的设置下生成);对应参数为 EPSSQ_i=4
  • 立方格子 DOS_Cubic_GRID360(由 DOS_Cubic.py 在 GRID=360 的设置下生成);对应参数为 EPSSQ_i=6
  • 六角格子 DOS_Hexagonal_GRID4000(由 DOS_Hexagonal.py 在 GRID=4000 的设置下生成);对应参数为 EPSSQ_i=3
  • 贝特格子 DOS_Bethe(由 DOS_Bethe.py 生成);对应参数为 EPSSQ_i=1;用于测试

注 4:对于已知 DOS 的多带模拟 [nbands=FLAVORS/2n_{\text{bands}}=FLAVORS/2],DOS 文件必须包含 2nbands2n_{\text{bands}} 列。所有能带的分箱数(即输入文件的行数)必须相同。第 ii 行的结构如下所示

e1,i   DOSband1(e1,i)   e2,i   DOSband2(e2,i)    e_{1,i}\ \ \ DOS_{band1}(e_{1,i})\ \ \ e_{2,i}\ \ \ DOS_{band2}(e_{2,i})\ \ \ \ldots

Option TWODBS

对于二维格子的情形,程序中实现了通过对 k 空间积分的 Hilbert 变换 [参数 L 设定了倒空间每个维度上的离散化程度]。目前已实现以下几种色散关系:

  • 正方格子 [设置 TWODBS=square],具有最近邻 [对应参数:t] 和次近邻跳跃 [对应参数:tprime];二阶矩 EPSSQ_i 为 4(t2+tprime2)4(t^2 + tprime^2)
  • 六角格子 [设置 TWODBS=hexagonal],仅具有最近邻跳跃 [对应参数:t];二阶矩 EPSSQ_i 为 3t23t^2

下面是一个用于生成输入文件并运行模拟的可用 python 脚本 tutorial8b.py

import pyalps
import matplotlib.pyplot as plt
import pyalps.plot


#prepare the input parameters
parms=[]
for u in [3.]: 
  for b in [6.]:
    parms.append(
            { 
                'BETA' : b,          # inverse temperature
                'MU' : 0.0,          # chemical potential corresponding to half-filling
                'U' : u,             # Hubbard interaction
                'FLAVORS' : 2,       # corresponds to spin up/down
                'SITES' : 1,         # number of sites in the impurity
                'H' : 0.0,           # there is no magnetic field
                'H_INIT' : 0.05,     #  we set initial field to split spin up/down in order to trigger AF phase
                'OMEGA_LOOP' : 1,        # the selfconsistency runs in Matsubara frequencies
                'ANTIFERROMAGNET' : 1,   # allow Neel order
                'SYMMETRIZATION' : 0,    # do not enforce paramagnetic solution
                'NMATSUBARA' : 500,      # number of Matsubara frequencies
                'N' : 500,               # bins in imaginary time
                'CONVERGED' : 0.005,     # criterion for convergency
                'MAX_TIME' : 60,         # max. time spent in solver in a single iteration in seconds
                'G0OMEGA_INPUT' : "",    # forces to start from the local non-interacting Green's function
                'MAX_IT' : 10,           # max. number of self-consistency iterations
                'SWEEPS' : 10000,    # max. number of sweeps in a single iteration
                'THERMALIZATION' : 500, # number of thermalization sweeps
                'SEED' : 0,              # random seed
                'SOLVER' : "hybridization",   # we take the hybridization impurity solver
                'SC_WRITE_DELTA' : 1,         # input for the hybridization impurity solver is the hybridization function Delta, which has to be written by the selfconsistency
                'N_MEAS' : 5000,              # number of Monte Carlo steps between measurements
                'N_ORDER' : 50,               # histogram size
                'TWODBS' : 1,     # the Hilbert transformation integral runs in k-space, sets square lattice
                't' : 1,          # the nearest-neighbor hopping
                'tprime' : 0,     # the second nearest-neighbor hopping
                'L' : 64,         # discretization in k-space in the Hilbert transformation
                'GENERAL_FOURIER_TRANSFORMER' : 1,  # Fourier transformer for a general bandstructure
                'EPS_0' : 0,                        # potential shift for the flavor 0
                'EPS_1' : 0,                        # potential shift for the flavor 1
                'EPSSQ_0' : 4,                      # the second moment of the bandstructure for the flavor 0
                'EPSSQ_1' : 4,                      # the second moment of the bandstructure for the flavor 1
            }
        )

#write the input file and run the simulation
for p in parms:
    input_file = pyalps.writeParameterFile('hybrid_TWODBS_beta_'+str(p['BETA'])+'_U_'+str(p['U']),p)
    res = pyalps.runDMFT(input_file)

与格子相关的参数如下:

TWODBS = 1;     // the Hilbert transformation integral runs in k-space; sets square lattice
t = 1;          // the nearest-neighbor hopping
tprime = 0;     // the second nearest-neighbor hopping
L = 64;         // discretization in k-space in the Hilbert transformation
GENERAL_FOURIER_TRANSFORMER = 1;  // Fourier transformer for a general bandstructure
EPS_0 = 0;                        // potential shift for the flavor 0
EPS_1 = 0;                        // potential shift for the flavor 1
EPSSQ_0 = 4;                   // the second moment of the bandstructure for the flavor 0
EPSSQ_1 = 4;                   // the second moment of the bandstructure for the flavor 1

Final remarks

问题:哪些格子信息会进入 DMFT 计算?与经典平均场进行比较。

任务:尝试针对(贝特格子以外的)另一种格子重复 DMFT-04 Mott 中的计算,并考察 MIT。是否出现了明显的变化?

回顾 Ising 模型在不同维度下的平均场预测。