详述 从头算法
USPEX采用强大的两级并行框架,是并行计算程序中的佼佼者。 并行第一级是在结构弛豫代码里执行,并行第二级是把计算分配给了同群中的个体(因为同一种群内的结构之间是 彼此独立的)。
首先,你需要指定你想使用哪个代码去进行结构弛豫和目标函数计算:
\(\triangleright \) variable abinitioCode
Meaning: 指定每一步结构弛豫的代码类型
Default: 1 for every optimization step (VASP)
Format:
% abinitioCode
3 2 2 1 1
% ENDabinit
Alternative Format:
% abinitioCode
1 1 1 1 1 (14)
% ENDabinit
这里的区别在于第二种方式中有一步或者几步的计算被包含在括号中。这对于优化物理性质非常有用:对于包含在括号中的计算,结构会被对称化并被表示为标准晶格设置形式。这样在计算中就可以充分利用晶格对称性从而使得性质的计算更加容易和稳定。在对称化和性质计算之前,结构需要被充分弛豫。
Note 1: 焓取自括号前的最后一步。
Note 2: 数字表示每一步的结构弛豫用到的外部程序:
1 — VASP
2 — SIESTA
3 — GULP
4 — LAMMPS
5 — ORCA
6 — DMACRYS
7 — CP2K
8 — Quantum Espresso
9 — FHI-aims
10 — ATK
11 — CASTEP
12 — Tinker
13 — MOPAC
14 — BoltzTraP
15 — DFTB
16 — Gaussian
(only for clusters)18 — Abinit
19 — CRYSTAL
\(\triangleright \) variable KresolStart
Meaning: 给出\(k\)点网格倒易空间的分辨率 (单位: \(2\pi \text{\r{A}}^{-1}\)).
Default: 线性的从0.2到0.08
Format:
% KresolStart
0.2 0.16 0.12 0.08
% Kresolend
注意:你可以输入几个数值(每一步结构弛豫对应一个数), 开始时粗略些(也就是值大一些),到最后,精确度高,这样就明显地加快了计算速度。 特别是对金属而言,因为需要很多k点。如果你想用VASP或QuantumEspresso , 那么这个模块非常重要(GULP完全没必要用它,而对于SIESTA, 你必须在SIESTA输入文件里定义KresolStart)。
对于团簇,二维晶体和表面,你必须要明确给定团簇(或表面)真空范围的厚度:
\(\triangleright \) variable vacuumSize
Meaning: 定义在结构周围增加的空间的数量(在毗邻的单胞内邻近团簇 之间的最近邻距离,\(\text{\r{A}}\))。仅适用于表面,二维晶体和纳米微粒。
Default: 10 每一步弛豫设为10\(\text{\r{A}}\)
Format:
% vacuumSize
10 10 15 20 20
% EndVacuumSize
\(\triangleright \) variable numParallelCalcs
Meaning: 指出在并行计算中结构弛豫的数目。
Default: 1
Format:
10 : numParallelCalcs
你需要提供提交作业文件或者你正在使用的准则/模式下的可执行文件的名字。
\(\triangleright \) variable commandExecutable
Meaning: 明确给定提交作业文件名或在给定准则下的可执行文件名。
Default: 无默认值,需要用户自己设定。
Format:
% commandExecutable
gulp < input > output
mpirun -np 8 vasp > out
mpirun -np 8 vasp > out
mpirun -np 8 vasp > out
% EndExecutable
注意: 每一行都对应于一个弛豫阶段——第一行描述了 第一个弛豫阶段的执行,等等。例如:从头算准则等于 “3 1 1 1”意味着第一个弛豫阶段是 执行GULP,接下来的阶段会通过VASP用命令“mpirun-np 8 vasp > out”用VASP命令执行。 如果在可执行命令中只显示出一行,那么所有的弛豫阶段都执行相同的命令。
实际上在你远程提交作业模式下几乎所有平台都可以使用USPEX,你所需要的是在你的工作站有 MATLAB/Octave运行。在这种情况下,你的工作站准备开始输入(包括jobs),然后提交到远程 计算节点上,计算完成时查看结果并分析,准备新的输入文件。传出和来往的数据不是很大,所以 网络不需要非常快。当然,作业提交依赖于机器。
\(\triangleright \) variable whichCluster
Meaning: 明确给定作业提交的类型。
Possible values (integer):
0 — 无作业脚本;
1 — 本地提交;
2 — 远程提交。
Default: 0
Format:
1 : whichCluster
\(\triangleright \) variable remoteFolder
Meaning: 计算即将进行的远程超级计算机上的文件夹。只有当 whichCluster=2时,这个文件夹才会被激活。
Default: 没有
Format:
Blind_test : remoteFolder
注意: 在远程提交文件夹中有一个相似的参数设置 — homeFolder, 计算的真实路径实际上是*homeFolder*/*remoteFolder*/CalcFolderX, 在此处,X=1, 2, 3,…。
\(\triangleright \) variable PhaseDiagram
Meaning: 使计算类型=300 和 301的相图的计算能够进行。 这给出了一个想法(比较粗劣,仅仅是一个大致的结果):给出新相 可能会在较高或较低压力下,同时粗劣的给出一个转变压力。
Default: 0
Format:
1 : PhaseDiagram