Pmpaths:预测固体-固体相变机制的几何方法
这个由V. Stevanovic, P. Graf 和 F. Therrien开发, 并进一步由A. Samtsevich拓展的工具, 可以用来解决这样一个难题:如何找到两个给定晶体结构之间最佳的映射路径。 这直观的对应于最简单的相变机制。 Pmpaths会排序列出两个给定晶体结构之间的不同路径。 然后通过VCNEB方法优化这些路径(详见下节)。该算法首先通过优化晶胞的“重叠”来搜索结构晶格的映射路径, 并且对晶格矢量进行置换,使得坐标系旋转轴的最佳重叠尽可能大。这是后续分析和确保找到 在两个晶体结构的原子位置间最佳的映射路径的起点。
这个工具依赖于这些Python数据库:
munkres
scikit_learn
spglib
cython
这些数据库都可以通过pip安装。为了运行pmpaths工具,请尝试:
python3 run_pmpaths.py -t 4 -z traj_A2B -n 20 -A POSCAR_A -B POSCAR_B -b 3.6 --numtraj=5
帮助文档:
Usage: run_pmpaths.py [options]
Options:
-h, --help show this help message and exit
-A A, --A=A poscar 1
-B B, --B=B poscar 2
-t OUTPUT_TILES, --tiles=OUTPUT_TILES
how many cells to tile in output
-H, --hlst perform HLST fitting
-v VERBOSE, --verbose=VERBOSE
verbosity
-z TRAJDIR, --trajdir=TRAJDIR
where to dump trajectory files
-c MIN_CLUSTER_SIZE, --min_cluster_size=MIN_CLUSTER_SIZE
minimum size of atom clusters
-s SHIFTING, --shifting=SHIFTING
control shift of inequiv atoms to origin (0:none,
1:one of each inequivalent subgroup,2:all)
-b BOND_LEN, --bond_len=BOND_LEN
bond length
-n FRAMES, --frames=FRAMES
how many frames in trajectory
-y, --nocheck_syms don't check syms
-u, --nocheck_ucells don't check more than one unit cell pairing, but DO do
gruberization
-w, --use_given_ucells
use given unit cells as is, no gruberization
-d, --noucell-dist don't include unit cell vector movement in distance
measure
-f, --get-fast use bonding to specifically search for FAST
-e TOL, --tol=TOL tolerance for coordination calcs
--numtraj=N , where N is the number of pathways that will be in the output
运行pmpaths.py 之后的输出是一个文件夹(除了stdout中的输出之外) (”traj_A2B”),里面包含映射路径上的n个图像 (”images”)。我们推荐不只寻找一条几何上的最优路径,而是寻找N条(N 5-10)几何最优路径。记住这些路径仅仅给出了两个晶体结构间的线性插值,这些插值点需要做局域结构优化。这就需要使用到下一节中介绍的VCNEB方法。我们的VCNEB代码可以直接使用pmpaths utility的输出。