LAMMPS学习总结1
- 1、手册中说,Compute temp/region与执行温度调节的fix(fix nve/fix langevin等)命令一起使用,那么这个偏差将从每个原子中减去,剩余的热速度的温度调节将被执行,并且偏差将被添加回去。这是什么意思????
- 2、NEMD计算热导率的langvin控温法中,为什么两次langevin控温呢?而且第一次的fix 没有unfix就直接又fix了 这个没影响么?
- 3、langevin控温过程理解
- 4、langevin计算热导率中,f_ave到底是什么温度?
- 5、lammps中dump原子坐标,x, y,z, xs,ys,zs,xu,yu,zu具体是什么意思啊?
- 6、计算出现NAN是什么原因?
- 7、lammps自带的几种Cu的EAM的区别是什么?
- 8、eam/alloy的pair coeff如何写?
- 9、MS中如何将单斜晶系转换为正交晶系?
- 10、出现错误:Using 'neigh_modify every 1 delay 0 check yes' setting during minimization,这是为什么?此外,如何理解neighbor和neighbor_modify?
1、手册中说,Compute temp/region与执行温度调节的fix(fix nve/fix langevin等)命令一起使用,那么这个偏差将从每个原子中减去,剩余的热速度的温度调节将被执行,并且偏差将被添加回去。这是什么意思????
答:这个偏差指的是 进出区域原子对温度计算的偏差,compute temp允许原子自由进出,使用fix modify后,控温器只对几何区域内的原子执行操作,相当于改变了温度的计算方式。
2、NEMD计算热导率的langvin控温法中,为什么两次langevin控温呢?而且第一次的fix 没有unfix就直接又fix了 这个没影响么?
回答:前面是为了构造温差达到稳定,现在是重新进行热流记录,此外,相同命令会覆盖。
3、langevin控温过程理解
第一是计算热区冷区原子温度,此时计算的时候允许原子的进出;第二是使用郎之万控温器控温,将热区冷区控制在固定温度,此时也允许原子自由进出;第三,更改温度计算方式,计算热区冷区温度时只考虑区域内的原子。之后输出热力学信息时,后边几项分别为:计算热区原子温度 计算冷区原子温度 控温后热区温度 控温后冷区温度 计算所得温度差。原则上,控温温度与计算温度相同。
4、langevin计算热导率中,f_ave到底是什么温度?
对温差进行的时间平均,先计算温度平均再温差与先温差再平均应该是一样的。
5、lammps中dump原子坐标,x, y,z, xs,ys,zs,xu,yu,zu具体是什么意思啊?
x,y,z = unscaled atom coordinates
xs,ys,zs = scaled atom coordinates
xu,yu,zu = unwrapped atom coordinates
这里的scale, unwrapped, 到底是什么含义,该如何理解呢?
6、计算出现NAN是什么原因?
1、nan说明某项出现分母为0的情况,你是不是原子坐标给的太拥挤,两原子距离无穷小时,造成作用力无穷大,能量无穷大;控温设置紊乱,导致温度变化到无穷大等等
2、出现nan的原因可能是变量值超过了该变量类型可表达范围或输出格式可允许的范围
3、可能势函数的参数太离谱
7、lammps自带的几种Cu的EAM的区别是什么?
如果局限于Cu那就用mishin,mishin的Cu势在拟和过程中,除了考虑常规的能量,弹性,层错性质外还考虑了晶格动力学和相变路径,对Cu的描述最全面,你要是课题不止局限于Cu那可以用zhou的,他把常见金属拟了个遍,你到时候换其他体系方便找势,而且同一模板的势函数适合对比研究,系统误差小。
8、eam/alloy的pair coeff如何写?
对于合金体系,对应的eam势函数为eam/alloy或者eam/fs,写法稍有不同。
pair_style 指明eam合金势类型,pair_coeff映射原子类型。
单原子eam势文件名后不需要进行原子类型映射,不用写原子类型列表。
合金体系必须在pair_coeff语句中势文件名后面把所有的原子类型全部列出,顺序和in文件中原子类型要保持一致。
特别注意,对于合金势,前2个参数必须是* *,这样才能跨越所有的LAMMPS atom类型。此外,对于混合势函数,可以使用NULL(不执行映射)映射值来配合其他势函数使用。
9、MS中如何将单斜晶系转换为正交晶系?
答:Build->Symmetry->Redefine lattice
把矩阵改为 1 1 0;-1 1 0;0 0 1
就是根号2的超胞
10、出现错误:Using ‘neigh_modify every 1 delay 0 check yes’ setting during minimization,这是为什么?此外,如何理解neighbor和neighbor_modify?
出现错误是因为:check yes表示只有当某个原子的位移大于皮肤半径的一半才重新建立列表。而,minimize命令是降低体系能量,避免原子位移过大,因此这两个命令会产生警告。
理解:
- neighbor选取的大小对实际的计算结果影响很小,但对计算速度应该会有一定影响。
neighbor 2 bin 意思是每个原子在所取对势(即pair style)的截断半径以外,计算机还会在2bin的额外范围每一时间步检测其原子间的相互作用力。而bin是与N/P线性变化(N原子总数,P是cup数)。总之,这个设定的大小并不是十分重要。 - 由于neighbor-list的计算比较耗时,多数MD代码都是在一次build之后的接下来若干步之内都使用这个neighbor-list,而不是每一步都更新。因此,在build是选取的实际截断半径是r_cut+skin,只要在若干步之内原子位移小于skin/2就是安全的(lammps可以检查这个,Dangerous builds就是指在某次build时发现此时刻原子相对上一次build时的位移超过了skin/2)。build的频率需要和skin大小结合起来使用,这样达到最佳的运行速度(不同系统需要自己试,但很显然的道理是较小的skin需要较高的更新频率)。 理论上,skin的大小对最终的结果是没有影响的,但对计算速度有。