跳至内容

实现

spinmc 程序包是 ALPS 项目的应用程序之一。它为经典自旋系统提供了局域更新和团簇更新的通用实现。 该应用程序支持在任意晶格上模拟以下模型:

  • 伊辛模型
  • XY 模型
  • 海森堡模型
  • 3、4 和 10 态 Potts 模型

通过以直接的方式编辑文件 mc/spins/spinmc_factory.C,可以很容易地将该应用程序扩展到其他 q 态 Potts 模型和 O(N)O(N) 模型。

运行模拟

详见教程。

输入参数

除了 ALPS 调度器库的通用输入参数之外,spinmc 应用程序还接受以下输入参数:

名称默认值描述
LATTICE_LIBRARYlattices.xml包含晶格描述的文件路径
LATTICE晶格的名称
MODELIsing、XY、Heisenberg 或 Potts 之一
qPotts 模型中不同状态的数目
UPDATE更新类型,local 或 cluster 之一
ERROR_VARIABLE希望 ALPS 监控其误差的观测量的名称(必须与 ERROR_LIMIT 一起使用)
ERROR_LIMIT一旦 ERROR_VARIABLE 的绝对误差小于此值,ALPS 将停止该任务(必须与 ERROR_VARIABLE 一起使用)
T温度
J默认耦合常数
J#J类型为 #(#=0,1,…)的键上的耦合常数。
D在位单离子各向异性耦合常数(以列表形式为每个自旋分量各给出一个,例如 D=“0.0 0.0 10.0”)
CONVENTIONclassical指定使用经典约定还是量子约定(见下文)
S若 CONVENTION=classical 则为 1;若 CONVENTION=quantum 则为 1/2默认自旋大小
S#S类型为 #(#=0,1,…)的格点上的自旋大小。
gg1Landee gg 因子,用于磁化率测量
h0外磁场(仅适用于局域更新)

此外,晶格描述可能还需要晶格描述文件中指定的其他参数(例如 L 或 W)。 注意:经典蒙特卡洛程序虽然使用 XML 晶格描述,但并不使用 XML 模型描述。模型改由上表中的参数指定。

局域更新与团簇更新

只要没有施加磁场且自旋系统没有阻挫,就应使用团簇更新。否则优先使用局域更新。

量子约定与经典约定

量子自旋模型和经典自旋模型对耦合常数通常采用不同的约定,CONVENTION 参数允许在两者之间进行选择。

  • classical(经典)约定以正号表示铁磁耦合。如果指定了参数 S,耦合强度会乘以 S2S^2。
  • quantum(量子)约定以正号表示反铁磁耦合。耦合强度会乘以 S(S+1),其中 S 默认为 1/2。

测量

spinmc 应用程序会测量以下观测量:

名称描述
Energy系统的总能量
Energy Density系统的能量密度(每格点能量)
Specific Heat系统的每格点比热
Magnetization磁化强度的 z 分量
|Magnetization|磁化强度 z 分量的绝对值
Magnetization^2磁化强度 z 分量的平方
Magnetization along Field磁化强度沿外磁场方向的分量
Staggered Magnetization交错磁化强度的 z 分量(仅适用于二分晶格)
Staggered Magnetization^2交错磁化强度 z 分量的平方(仅适用于二分晶格)
Susceptibility均匀磁化率,包含因子 g2g^2
Cluster size以晶格体积的比例表示的平均团簇大小(仅适用于团簇更新)

注意:要计算比热,必须在任务文件(*task*.xml)上运行计算程序 spinmc_evaluate。