lammps温度云图

转自:小木虫 田淮安 的回答。

LAMMPS中的温度是由原子的动能计算而来的,具体可参见手册compute temp command一节的说明。
LAMMPS的模拟结果,我这里指的是dump命令得到的lammpstrj文件,主要内容都是每个时刻每个原子的信息,包括坐标、速度、动能、势能等等(这些是由dump命令来设置的)。只要你的lammpstrj里面有动能数据,上面的图就容易画。
方法一:用OVITO导入lammpstrj,然后着色。
OVITO是一个专门对LAMMPS结果进行着色的软件,google一下就能找到官网,免费的,LINUX和WINDOWS下都有相应的版本。着色原理是按每个原子的某一种属性的值来配色,比如按原子的x值或者动能。操作很简单。缺点是得到的图是原子化的,基本单位是球,不是你想要的那种连续介质均匀分布的图。比如下图,就是石墨被C60轰击后表面区域的温度分布(侧视图),可以看到每个原子的温度。
 


方法二:先将数据分道处理,然后画contour图
你贴的这种连续分布图,就是常见的contour图。你需要先把lammpstrj里的温度从以原子为单位转化到以空间为单位。假设你想画x-y面的温度分布,那么就把lammpstrj中的原子按位置填到x-y空间中的小格子里,求出每一个格子里的平均温度,得到一个数据文件,应该有三列,(x,y,T),x,y是某一个小格子的中心坐标,T就是相应的温度,然后用originpro、matlab等常用软件画contour图就行了。下图是我画的石墨缺口处的原子密度contour图,颜色深浅代表原子密度的高低;温度也可以用同样的方法得到。

抱歉,这几天没上小木虫。
关于你的两个问题:
1、怎么从LAMMPSTRJ文件中得到(x,y,T)的数据?
    这个你写点C++代码,或者在LINUX下用脚本或VIM,对LAMMPSTRJ文件进行处理就行了,提取出你想要的那一个时刻的x,y,ke(指动能)这三列数据。这是最基本的数据处理,你如果没做过可以找擅长C++/LINUX的人帮忙,非常简单。

2、怎么用OVITO对原子动能进行着色?
    前提是你载入的LAMMPSTRJ文件中有动能这一列,这需要你在in_file的dump命令中提前设置;如果你的LAMMPSTRJ文件中只有原子坐标,自然就只能对坐标着色。
    已经含ke的话就比较简单了:
(1)打开OVITO,载入文件;拉下右侧菜单,点color coding,如下图


(2)在下面的property中选择你之前设置的动能数据。我的这个文件中,c_1代表动能,就选择c_1,如下图;


(3)可以调节动能值的范围,如下图;


(4)也可以在选择颜色种类,比如我把彩虹色改为热色,如下图;

 问:现在我载入的LAMMPS输出文件中,还没有像你这样的C_1的动能值,请问您在in文件中如何设置,使它出现,我用的thermo_style中包含了ke、pe,但载入时还是没有能量的选项,求赐教

答:thermo_style中的ke是所有原子的总动能,是全局变量(global),LAMMPS会自动计算;
你想得到的是每个原子的动能,是原子变量(atomic),需要你在in文件中先用compute命令计算,然后在dump一行中引用compute的编号。
比如,我计算原子动能的命令是
compute 1 all ke/atom,意思是计算每个原子的动能,计算名称为1(这个名称可以是数字,也可以是字符串,随个人风格)。
而我的dump命令是
dump 1 all custom 1000 filename.lammpstrj id type x y z c_1,意思就是每隔1000步输出每个原子的编号(id)、类型(type)、三维坐标(x,y,z)和动能(c_1)。"c_1"这种格式是LAMMPS定义的,表示名称为1的计算的结果。类似的还有v_name,表示用户定义的名称为name的变量。
细节可以在手册的compute、dump等命令中找到。建议你多读手册。这些东西手册里讲得很清楚。



希望对你有帮助

猜你喜欢

转载自www.cnblogs.com/lzqstudy/p/13192010.html