24小时热门版块排行榜    

Znn3bq.jpeg
查看: 3615  |  回复: 13

nkleof

银虫 (正式写手)

[求助] 关于源代码 已有3人参与

想看看lammps源代码里面是如何计算原子间相互作用的,结果看来看去都没发现哪块是计算相互作用的,lammps的源代码写的很不容易看清楚啊。
从主程序main.cpp出发,里面除去MPI相关的函数,和创建一个lammps实例,剩下就一句话  lammps->input->file();   调用lammps下的input类的file函数,处理输入文件。
这个file函数里面除去很多判断最后就落到parse函数,对命令进行解析,然后进入execute_command函数调用相应的命令处理函数,但是这里面没有run命令的处理函数。
以pair_style命令为例,对应的pair_style函数会将输入的命令参数(力场名称)和类force下的pair_style字符串比较(然而这个字符串的赋值始终没找到),如果符合就进入相应的settings函数。然后,这个settings函数里面一般就一行判断参数个数的语句就没了。
求高手指点一下,lammps源代码的结构是怎么样的?哪个文件里面包含了原子间相互作用的计算?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

enrity

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
nkleof: 金币+2, 有帮助 2016-05-24 10:23:49
比如,想看lj96势函数的,找pair_lj98_cut.cpp,打开这个CPP文件,就能看到计算作用力的代码
3楼2016-05-23 21:07:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

enrity

铁杆木虫 (正式写手)

【答案】应助回帖

引用回帖:
8楼: Originally posted by nkleof at 2016-05-24 20:38:05
嗯,今天又看了一些代码,发现了run函数,可能是具体的计算过程由update类下面的integrate类的run函数完成,但是这个run函数我目前看到的是虚函数,还没发现可以实例化的代码。然而关于主程序还是不太明白,run函数 ...

用的是C++的多态技术

发自小木虫IOS客户端
9楼2016-05-24 22:58:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

brucefan

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
这个问题有意思。我也正在开发程序,回头研究一下lammps的执行流程,看看是不是也有这样的疑惑。

[ 发自手机版 http://muchong.com/3g ]
2楼2016-05-23 18:41:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nkleof

银虫 (正式写手)

引用回帖:
3楼: Originally posted by enrity at 2016-05-23 21:07:06
比如,想看lj96势函数的,找pair_lj98_cut.cpp,打开这个CPP文件,就能看到计算作用力的代码

嗯,这个应该是可以理解的,不过我想看的是lammps中怎么把计算的力结果返回到主程序的,分子动力学有个力->速度->位置->力的循环迭代,应该是在主程序中完成的吧,我想知道这个用不同势函数计算的力结果和主程序之间的接口。
4楼2016-05-24 10:23:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nkleof

银虫 (正式写手)

引用回帖:
3楼: Originally posted by enrity at 2016-05-23 21:07:06
比如,想看lj96势函数的,找pair_lj98_cut.cpp,打开这个CPP文件,就能看到计算作用力的代码

简单来说,我想看的是,在主程序中什么地方调用了这些计算相互作用的函数。
5楼2016-05-24 10:32:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

brucefan

专家顾问 (著名写手)

【答案】应助回帖

★ ★
nkleof: 金币+2, 有帮助 2016-05-24 20:38:14
引用回帖:
5楼: Originally posted by nkleof at 2016-05-24 10:32:25
简单来说,我想看的是,在主程序中什么地方调用了这些计算相互作用的函数。...

也许是在积分的函数里面调用的。积分有两步,中间夹有求力。我自己写程序时就是将求力的函数交给积分的函数调用的。当然,你如果只看主函数可能看不明白,这种大型程序一般会包装好几层才会到具体的真正做计算的函数。我还没仔细查看lammps代码,以上只是我的猜测。

[ 发自手机版 http://muchong.com/3g ]
6楼2016-05-24 15:40:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

enrity

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★
nkleof: 金币+2, 有帮助 2016-05-24 20:38:36
引用回帖:
5楼: Originally posted by nkleof at 2016-05-24 10:32:25
简单来说,我想看的是,在主程序中什么地方调用了这些计算相互作用的函数。...

昨天回你贴目的是领金币来的

楼主应该是看过一些源代码了吧,程序从main函数开始,然后是就转到类 input, 在这个类中,完成了文件的读取,并解析输入命令,然后这个类中的成员函数, excute_command()就是执行每个模拟指令的,计算力的过程也是在这里完成。input类继承了Pointers类,其中的类指钍Force *force可以调用不同的pair_style, bond_style类,当然对应的计算作用力的程序也就在这个过程中完成了

看懂源代码需要花一翻功夫的,我也只看粗略看了一下,希望对你有帮助
7楼2016-05-24 19:00:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nkleof

银虫 (正式写手)

引用回帖:
6楼: Originally posted by brucefan at 2016-05-24 15:40:38
也许是在积分的函数里面调用的。积分有两步,中间夹有求力。我自己写程序时就是将求力的函数交给积分的函数调用的。当然,你如果只看主函数可能看不明白,这种大型程序一般会包装好几层才会到具体的真正做计算的函 ...

嗯,今天又看了一些代码,发现了run函数,可能是具体的计算过程由update类下面的integrate类的run函数完成,但是这个run函数我目前看到的是虚函数,还没发现可以实例化的代码。然而关于主程序还是不太明白,run函数是在实例化lammps类的过程中完成调用的,但是之后才有input类下的file函数关于输入文件的处理,但是,file函数之后就直接delete lammps,删除实例了!这样的话真正的运算在哪里?
8楼2016-05-24 20:38:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tingl

铁虫 (初入文坛)

楼主,我在编译lammps后,在bench及examples中测试都ok?但是一旦把我自己的in文件及data文件和势文件放在别的目录中,运行时就会首先出现cannot open log.lammps for writing 以及后面会跟着出现application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0。
但是我把我的in文件及data和势文件放在examples/crack中运行,就没有一点错误,,, 这是什么原因造成的?
实在找不到人来求助了,楼主还请原谅!!
10楼2016-05-24 23:11:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 nkleof 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 面上本子正文33页,违规吗?会被低分嘛? +5 1234567wang 2026-05-17 6/300 2026-05-17 21:18 by maxjing
[基金申请] 今年审到国自然15份,谈谈感受 +9 国自然国社科中 2026-05-17 9/450 2026-05-17 21:14 by 雪城001
[考研] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 xx7gd5zq4e 2026-05-15 6/300 2026-05-17 19:36 by Equinoxhua
[教师之家] 上海大学实验技术岗位非升即走 +7 嘻嘻哈哈乐呵呵 2026-05-15 7/350 2026-05-17 16:58 by songwz
[考博] 2026博士还有哪些学校有名额 +6 小王求读研 2026-05-15 7/350 2026-05-17 16:54 by 知音湖畔
[基金申请] 这年头没有找到涵评专家,还有中面上的可能吗 +13 dd921ww 2026-05-12 16/800 2026-05-17 12:38 by 于轩
[考博] 26/27博士推荐 +3 1木头人13949 2026-05-13 3/150 2026-05-17 09:41 by YuY66
[找工作] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 l7k6xnh0yc 2026-05-14 6/300 2026-05-17 07:31 by 11n4dfd8yn
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 cjf4bx70cj 2026-05-14 7/350 2026-05-17 06:55 by 11n4dfd8yn
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 k37jurhrau 2026-05-16 3/150 2026-05-17 01:25 by ue3ir18jc3
[基金申请] 精华III评审感受-评审感受-评审感受 +16 ferrarichen 2026-05-11 20/1000 2026-05-17 01:10 by 南开小綦
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 ky2p12rrjj 2026-05-15 3/150 2026-05-17 00:45 by ue3ir18jc3
[公派出国] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 x0mp7owy2b 2026-05-15 4/200 2026-05-17 00:35 by ue3ir18jc3
[论文投稿] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +5 x0mp7owy2b 2026-05-15 5/250 2026-05-17 00:29 by xiangfeng
[考博] 现在不知道怎么办,感觉很痛苦 +5 qweww 2026-05-11 6/300 2026-05-16 19:57 by Equinoxhua
[高分子] 本人最近太闲了,谁有问题可以提,每天会统一回复 +9 一切都是空工 2026-05-12 20/1000 2026-05-16 19:52 by Equinoxhua
[有机交流] 求助2,4-二氯-5-嘧啶甲醛的合成方法 20+3 光吃不拉 2026-05-14 6/300 2026-05-16 19:46 by Equinoxhua
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +4 x0mp7owy2b 2026-05-15 4/200 2026-05-16 17:45 by j6b2pdz07o
[有机交流] 求有机合成大神指点三硫酸乙烯酯(CAS:2793408-99-6)的合成路线 30+3 Leekmid 2026-05-13 10/500 2026-05-16 16:37 by czyzsu
[教师之家] 教学课件你会给同学吗 +8 硕士研究生吗 2026-05-13 8/400 2026-05-14 22:23 by 常规沥青
信息提示
请填处理意见