这个由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”) . 这些会进一步用于USPEX 中的VCNEB方法。