• 回答数

    6

  • 浏览数

    1923

  • 收藏数

    0

作者:Decadent 发表于 2018-11-19 14:30:12
跳转到指定楼层
我要写的势函数模拟的是Ni在熔点附近的线性集体运动,知道势函数结构。也知道所用势函数方程的具体形式,和没项所表示的意义。存在问题1.不知道势函数描述原子势的原理
2.势函数了里面Nr,Nrho值怎么取?1000还是10000?取大取小有什么关系?对势函数有什么影响?
3.我的电子密度函数式rho=(a/r)^6,a是晶格常数(Ni,3.5200A),如此,计算rhomax是我r取的是a的值,不知道对不对?
4. 截断半径rmax我取的是8,不知道正确不?
请大家帮忙看看,实在不知道怎么做了

分享:
回复

使用道具

该用户从未签到

新手上路

Rank: 1

积分
14
极客币
40
主题
7
帖子
17
注册时间
2018-11-5
在线时间
1 小时
性别
保密
发表于 2018-11-19 14:30:22 | 显示全部楼层

我最近成功实现了两个势函数的编译,应该能给你提供一些信息。
1、势函数就是一个主要由原子间距离(不同的势还有各自的参数,多体势还要考虑化学环境)决定的能量值,LAMMPS的源代码中通常用evdwl表示;但LAMMPS实现牛顿第二定律,用的不是势函数,还是力函数,也就是势函数的导数,源代码中通常用fpair表示。所以仅仅知道势函数的形式是不够的,还要把导数形式算出来。
2-4都是你的势函数的特点,我不了解,所以解答不了。可以确定的是,势函数里的参数怎么取、截断半径怎么取,都是物理问题,不是LAMMPS编译问题。应该参考势函数的原始文献,根据你研究的物理问题来选。
建议:阅读LAMMPS源代码,找几个简单的势函数(比如LJ、gauss)入手,熟悉LAMMPS的算法;然后找一个LAMMPS已有的、和你的势函数类型相近的源代码(Ni的势,应该是多体嵌入类吧,eam势之类的,这个要看你的函数形式),把其中的势函数和力函数都换成你想要的形式,再检查各个部分的参数,然后就可以尝试编译了。
我写了一个zbl势的源代码,就是选取LAMMPS已有的pai_gauss.h和pair_gauss.cpp作为模板,把其中的函数形式换成zbl,再把相应的函数名改掉,然后就编译成功。我做了测试,结果是正确的。
希望对你有帮助。
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
12
极客币
37
主题
7
帖子
14
注册时间
2018-11-5
在线时间
1 小时
性别
保密
 楼主| 发表于 2018-11-19 14:30:43 | 显示全部楼层
谢谢啦        
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
15
极客币
43
主题
7
帖子
20
注册时间
2018-11-5
在线时间
1 小时
性别
保密
发表于 2018-11-19 14:30:56 | 显示全部楼层
您好,我有几个小白问题请教下您,还请赐教:
1. src文件夹下有好多文件,lammps的源代码是指哪个文件呀?
2. 您所说的pai_gauss.h和pair_gauss.cpp这两个代码,是不是lammps在运行时会调用他们用来产生势模型?
3. 势函数的编译是这个意思吗:由文献给的拟合参数带入势模型得到 lammps的势文件(如Cu_u3.eam)?
谢谢
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
15
极客币
43
主题
7
帖子
20
注册时间
2018-11-5
在线时间
1 小时
性别
保密
发表于 2018-11-19 14:31:15 | 显示全部楼层
您好,请问下势函数文件里的能量单位是什么?(势函数文件下面的系列参数应该是能量和电子密度吧?),谢谢
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
14
极客币
40
主题
7
帖子
17
注册时间
2018-11-5
在线时间
1 小时
性别
保密
发表于 2018-11-19 14:31:20 | 显示全部楼层
先区分两个概念,源代码是指C文件,即xxx.h和xxx.cpp。势文件是指包含势能参数的文件,比如你提到的Cu_u3.eam。
1、src下所有的文件(包括子文件夹中的文件)都是源代码,其实src就是source code的简称。那些文件夹都不用管,通常是用不到的,除非你要用到的某个命令属于特定的附加包,这部分可以阅读手册中2.3 节Making LAMMPS with optional packages。LAMMPS支持的每一个功能(即in文件里的一行或几行)都对应一组源代码(就是两个C文件xxx.h和xxx.cpp),两者的名字相近,比如,功能“fix nve”,对应的源代码就是fix_nve.h和fix_nve.cpp。势函数的功能通常是pair style xxx,所以对应的源代码是pair_xxx.h和pair_xxx.cpp。
2、你可以这样理解。LAMMPS通过这两个文件产生经验势模型(即函数形式)。除了模型,经验势都有参数。有些势能参数少,可以通过in文件语句来设置;有些势能参数非常多,这时通常就把这些参数都放到势文件中,然后使用时直接调用即可。
3、LAMMPS就是一个大的C文件集,LAMMPS的编译就是指src下所有文件的编译。所以,如果要加入LAMMPS原来没有的势能,必须写新的源代码,放到src下,然后重新编译。这就是新势能源代码的编译。势文件是不用编译的,只需要把它放在你进行计算的当前目录下,然后在in文件中直接调用即可。
总结一下,源代码xxx.h,xxx.cpp和势文件xxx.eam(举例)都必须自己写,写完后把前两个放到src下,重新编译LAMMPS,最后一个不用编译,后面在in文件中直接调用。建议找一个LAMMPS已有的与你目标势能相近的源代码,仿照着写就行。LAMMPS编译可以阅读手册,也可以参考论坛中其他大神的帖子。很多帖子都讲得很详细。
回复

使用道具 举报

该用户从未签到

新手上路

Rank: 1

积分
12
极客币
37
主题
7
帖子
14
注册时间
2018-11-5
在线时间
1 小时
性别
保密
 楼主| 发表于 2018-11-19 14:31:27 | 显示全部楼层
回复

使用道具 举报

高级模式 评论
您需要登录后才可以回帖 登录 | 立即注册 微信登录