24小时热门版块排行榜    

查看: 1601  |  回复: 7

frcon

新虫 (初入文坛)

[求助] LAMMPS源代码的求助 已有1人参与

给位老师,大家好,最近我在修改lammps中bond_harmonic的源代码,对其中部分不是很清楚,在这里请教一下:
bond_harmonic的势函数为E=K(r-r0)^2, 在源代码中
rsq = delx*delx + dely*dely + delz*delz;
r = sqrt(rsq);
dr = r - r0[type];
rk = k[type] * dr;

其势函数是这样写的,在这里,我不是很懂程序中[type]的意思,各位有知道的能讲解一下吗?万分感谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsloneil

专家顾问 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
这很好理解啊,模拟中可以定义多种类型的键,每一种类型的键都有相应的力常数k和平衡距离r0, type就表示健的种类。

p.s. 如果不懂c++,还是补一点基础知识再去看源代码。
2楼2016-02-23 15:27:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

frcon

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by lsloneil at 2016-02-23 15:27:18
这很好理解啊,模拟中可以定义多种类型的键,每一种类型的键都有相应的力常数k和平衡距离r0, type就表示健的种类。

p.s. 如果不懂c++,还是补一点基础知识再去看源代码。

好的,谢谢
3楼2016-02-23 15:33:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

frcon

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by lsloneil at 2016-02-23 15:27:18
这很好理解啊,模拟中可以定义多种类型的键,每一种类型的键都有相应的力常数k和平衡距离r0, type就表示健的种类。

p.s. 如果不懂c++,还是补一点基础知识再去看源代码。

那像代码里的ebond,fbond这些定义对应的意思可以在哪里找到
4楼2016-02-23 15:35:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsloneil

专家顾问 (正式写手)

【答案】应助回帖

引用回帖:
4楼: Originally posted by frcon at 2016-02-22 19:35:20
那像代码里的ebond,fbond这些定义对应的意思可以在哪里找到...

没法找到,lammps代码不可能每一行都给你注释,每个变量的具体含义只能根据变量的名字和在程序中的调用,结合注释才能推测。

像ebond, fbond都还是比较简单的能根据名字能推测出含义的变量,也就是键的能量和力。如果碰到其他你看了半天代码也推测不出来含义的变量,可以到lammps mailing list去请教别人。lammps developer guide(http://lammps.sandia.gov/doc/Developer.pdf)可以帮助你了解代码的结构,但不会告诉你每个变量每个函数的具体含义。总之要了解代码是要花一些时间的。
5楼2016-02-24 00:26:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

frcon

新虫 (初入文坛)

好的,谢谢你,我已经能把代码和势函数对应上了,还有个疑问麻烦了,就是力的公司是怎么写进去的,因为我不是学习分子动力学的,所以不是很清楚,了解的还不够

发自小木虫IOS客户端
6楼2016-02-24 00:30:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lsloneil

专家顾问 (正式写手)

【答案】应助回帖

引用回帖:
6楼: Originally posted by frcon at 2016-02-23 04:30:42
好的,谢谢你,我已经能把代码和势函数对应上了,还有个疑问麻烦了,就是力的公司是怎么写进去的,因为我不是学习分子动力学的,所以不是很清楚,了解的还不够

这很简单,只要你知道了你键能还有受力(也就是键能对距离的导数取负值),直接把ebond和fbond的函数形式改掉就行了。以bond_harmonic.cpp为例,在compute()这个函数里,你可以看到以下代码
CODE:
    rsq = delx*delx + dely*dely + delz*delz;
    r = sqrt(rsq);
    dr = r - r0[type];
    rk = k[type] * dr;

    // force & energy

    if (r > 0.0) fbond = -2.0*rk/r;
    else fbond = 0.0;

    if (eflag) ebond = rk*dr;

你需要的就是在compute()还有single()两个函数里把fbond和ebond的函数形式改成你所需要的形式。如果你不太确定怎么改,可以参考bond_morse.cpp,也就是把harmonic bond换成morse bond,看看代码是怎么变动的。

另外如果你定义键能的参数也发生了变动(比方说你需要更多的参数来定义键能),同时也需要对coeff()这个函数进行修改来改变参数传递,具体例子参考bond_morse.cpp和bond_harmonic.cpp之间的区别,这个不难的。
7楼2016-02-24 03:22:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

frcon

新虫 (初入文坛)

引用回帖:
7楼: Originally posted by lsloneil at 2016-02-24 03:22:14
这很简单,只要你知道了你键能还有受力(也就是键能对距离的导数取负值),直接把ebond和fbond的函数形式改掉就行了。以bond_harmonic.cpp为例,在compute()这个函数里,你可以看到以下代码
    rsq = delx*delx  ...

谢谢你,我比较了这两个代码,发现了他们的不同,也知道了怎么去修改,非常感谢,我去试试

发自小木虫IOS客户端
8楼2016-02-24 15:16:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 frcon 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +3 5lbyq5wrhb 2026-02-07 3/150 2026-02-08 03:05 by vs90ilomwc
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +3 5lbyq5wrhb 2026-02-07 3/150 2026-02-08 02:52 by vs90ilomwc
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +3 3rkserf6qr 2026-02-07 4/200 2026-02-08 02:45 by vs90ilomwc
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +3 3rkserf6qr 2026-02-07 3/150 2026-02-08 02:32 by vs90ilomwc
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +5 2h7du0nuhk 2026-02-07 5/250 2026-02-08 02:27 by vs90ilomwc
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +5 2h7du0nuhk 2026-02-07 5/250 2026-02-08 02:25 by vs90ilomwc
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +4 2h7du0nuhk 2026-02-07 5/250 2026-02-08 02:12 by vs90ilomwc
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +4 2h7du0nuhk 2026-02-07 6/300 2026-02-08 02:07 by vs90ilomwc
[教师之家] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +4 2h7du0nuhk 2026-02-07 6/300 2026-02-08 02:05 by vs90ilomwc
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +4 2h7du0nuhk 2026-02-07 7/350 2026-02-08 01:32 by vs90ilomwc
[教师之家] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +4 2h7du0nuhk 2026-02-07 7/350 2026-02-08 01:26 by vs90ilomwc
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全 +4 2h7du0nuhk 2026-02-07 7/350 2026-02-08 01:12 by vs90ilomwc
[教师之家] 有院领导为了换新车,用横向课题经费买了俩车 +7 瞬息宇宙 2026-02-04 7/350 2026-02-07 21:47 by tfang
[有机交流] 酰胺脱乙酰基 10+5 chibby 2026-02-03 12/600 2026-02-07 19:29 by 江东闲人
[基金申请] 同年申请2项不同项目,第1个项目里不写第2个项目的信息,可以吗 +4 hitsdu 2026-02-06 4/200 2026-02-07 13:07 by jurkat.1640
[基金申请] 有时候真觉得大城市人没有县城人甚至个体户幸福 +9 苏东坡二世 2026-02-04 10/500 2026-02-07 12:37 by 小毛球
[公派出国] CSC & MSCA 博洛尼亚大学能源材料课题组博士/博士后招生|MSCA经费充足、排名优 +4 雨念 2026-02-01 6/300 2026-02-06 23:32 by MelissaPon
[基金申请] 面上项目申报 +3 Tide man 2026-02-01 3/150 2026-02-05 22:56 by god_tian
[硕博家园] 博士延得我,科研能力直往上蹿 +7 偏振片 2026-02-02 7/350 2026-02-04 17:36 by 陈氏帝国
[教师之家] 遇见不省心的家人很难过 +18 otani 2026-02-03 22/1100 2026-02-04 11:06 by tangmnt
信息提示
请填处理意见