【摘要】 LAMMPS程序虽然自带一些分析命令,比如compute rdf、compute adf等,然而很多时候我们关心的实质或是信息在LAMMPS里没有相应的命令,这种情况下我们只能自己写脚本进行分析。

LAMMPS程序虽然自带一些分析命令,比如compute rdf、compute adf等,然而很多时候我们关心的实质或是信息在LAMMPS里没有相应的命令,这种情况下我们只能自己写脚本进行分析。一般情况,我们会避免“重复造轮子”,站在“巨人的肩膀上”。今天给大家介绍一款LAMMPS数据后处理软件——ovito。(官网https://www.ovito.org/)

 

 

ovito支持多平台及python API拓展,这里对ovito的两种常见使用方式进行简单的介绍。

 

1.应用程序手动操作

 

还是以水液滴蒸发模型为例(如图1)

 

图1

 

*第一步:打开ovito程序,File - Load File,加载lammps的dump文件;

*第二步:右上角,Add modification - Select type,选择Type 3(即N元素);

 

 

*第三步:Add modification – Delete selected,将N元素删除,只显示我们关心的水分子;

 

 

*第四步:Add modification – Expression selection,在下方Boolean expression框内输入“((Position.X - 120)^2+(Position.Y - 120)^2+(Position.Z - 120)^2)^(1/2) > 55”,可以看到被选择的原子呈红色,并且还给出了被选择的原子数量;

 

 

 

*第五步:通过控制显示轨迹的帧数来看到每一帧时,被选择的水分子。

 

2.Python脚本

 

首先需要安装ovito的python库,在https://pypi.org/project/ovito/#files下载相应的wheel文件到本地,然后pip install ovito-xxx.wheel进行安装。

 

接着编写python脚本:

 

#! bin/env python

from ovito.io import import_file
from ovito.modifiers import SelectTypeModifier, DeleteSelectedModifier, ExpressionSelectionModifier

pipeline = import_file("dump.without_electric_efiled")
print(str(pipeline.source.num_frames) + ' frames')

pipeline.modifiers.append(SelectTypeModifier(property = 'Particle Type', types = {'Type 3'}))
pipeline.modifiers.append(DeleteSelectedModifier())
pipeline.modifiers.append(ExpressionSelectionModifier(expression = '((Position.X - 120)^2+(Position.Y - 120)^2+(Position.Z - 120)^2)^(1/2) > 55'))

for frame in range(pipeline.source.num_frames):
data = pipeline.compute(frame)
print(data.attributes['SelectExpression.num_selected'])

以上脚本与应用程序手动操作的方式实现完全一样的功能,通过python 脚本名即可运行。

 

两种使用方式没有优劣之分。如需直观的查看轨迹或需渲染图片时选方式一即应用程序手动操作;若只关注分析结果需要批量分析时选方式二即Python脚本

 

本文所有内容文字、图片和音视频资料,版权均属科学指南针网站所有,任何媒体、网站或个人未经本网协议授权不得以链接、转贴、截图等任何方式转载。