如何访问 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."
我想使用 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."