首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有结构的掩蔽来仅修改选定的原子?

如何使用带有结构的掩蔽来仅修改选定的原子?
EN

Stack Overflow用户
提问于 2021-05-12 18:27:56
回答 1查看 35关注 0票数 1

我想修改满足特定条件的原子的位置。

目前,我可以对所有原子或一个原子应用平移,但不能对多个选定的原子应用平移。

代码语言:javascript
复制
from pyiron import Project
pr = Project('test')
uc = pr.create_ase_bulk('Fe',cubic=True)
uc.set_repeat(2)
shift = [.1,.2,.3]
uc.positions

例如,我想只平移Z坐标小于1的原子:

代码语言:javascript
复制
uc[uc.positions[:,2] < 1].positions += shift
uc.positions

它既不移动原子,也不返回任何错误。

但是,只翻译一个原子或所有原子都可以正常工作。

代码语言:javascript
复制
uc.positions += shift
uc.positions
代码语言:javascript
复制
uc[0].position += shift
uc[0]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-12 19:48:26

这个应该行得通:

代码语言:javascript
复制
uc.positions[uc.positions[:,2] < 1] += shift

原则上,当您使用positionscell等时,使用属性的setter/getter (而不是Atoms的setter/getter )总是更安全的。我个人只使用Atoms的setter来更改原子物种,例如uc[0] = 'Ni'

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67501812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档