如何访问 pyiron 中的净位移

How to access net displacements in pyiron

我想使用 pyiron 计算系统中离子的均方位移。如何查看总位移(即不被周期性边界条件折回)而不频繁倾倒并检查原子何时越过边界并被包裹?

尝试比较 job['output/generic/unwrapped_positions'][-1]job.structure.positions+job.output.total_displacements[-1]。如果它们提供相同的价值,那么这两种方式都没有问题。如果没有,您可以在此处 post 笔记本中的相关行。

我想对 Jan 的回答添加一些评论:

虽然 job['output/generic/unwrapped_positions'] returns 是从输出文件解析的展开位置,job.output.total_displacements returns 是从每对连续快照计算的原子位移。所以如果一个原子在任何方向上移动超过盒子长度的一半,job.output.total_displacements 就会给出错误的坐标。因此,job['output/generic/unwrapped_positions'] 通常更值得信赖,但并非在所有代码中都可用(因为某些代码根本不提供展开位置的输出)。

此外,如果使用交互式作业,有可能job.structure.positions不是return初始位置,即job.structure.positions+job.output.total_displacements不会是初始位置+位移。

所以,简而言之,我对你问题的回答应该是 "Use job['output/generic/unwrapped_positions'] and if it's not available, use job.structure.positions+job.output.total_displacements but be aware of potential problems you might be running into."