24小时热门版块排行榜    

查看: 3533  |  回复: 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源代码的结构是怎么样的?哪个文件里面包含了原子间相互作用的计算?
回复此楼

» 收录本帖的淘帖专辑推荐

VASP

» 猜你喜欢

已阅   回复此楼   关注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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂院校信息 +5 CX 330 2026-03-21 5/250 2026-03-22 11:32 by 杨杨杨紫
[考研] 求调剂一志愿海大,0703化学学硕304分,有大创项目,四级已过 +3 幸运哩哩 2026-03-22 5/250 2026-03-22 11:01 by 杨杨杨紫
[考研] 08工科 320总分 求调剂 +7 梨花珞晚风 2026-03-17 7/350 2026-03-22 10:03 by 2026paper
[考研] 286求调剂 +10 Faune 2026-03-21 10/500 2026-03-21 23:34 by 314126402
[考研] 一志愿东华大学控制学硕320求调剂 +3 Grand777 2026-03-21 3/150 2026-03-21 19:23 by 简之-
[考研] 材料工程专硕 348分求调剂 +3 冬辞. 2026-03-17 5/250 2026-03-21 18:47 by 学员8dgXkO
[考研] 311求调剂 +3 勇敢的小吴 2026-03-20 3/150 2026-03-21 17:40 by ColorlessPI
[考研] 317求调剂 +9 申子申申 2026-03-19 15/750 2026-03-21 17:31 by 学员8dgXkO
[考研] 一志愿华中科技大学,080502,354分求调剂 +5 守候夕阳CF 2026-03-18 5/250 2026-03-21 01:06 by JourneyLucky
[考研] 南京大学化学376求调剂 +3 hisfailed 2026-03-19 6/300 2026-03-20 23:43 by hisfailed
[考研] 324求调剂 +5 lucky呀呀呀鸭 2026-03-20 5/250 2026-03-20 22:30 by 促天成
[考研] 求调剂,一志愿:南京航空航天大学大学 ,080500材料科学与工程学硕,总分289分 +4 @taotao 2026-03-19 4/200 2026-03-20 22:14 by JourneyLucky
[考研] 一志愿中南化学(0703)总分337求调剂 +8 niko- 2026-03-19 9/450 2026-03-20 21:57 by luoyongfeng
[考研] 材料学求调剂 +4 Stella_Yao 2026-03-20 4/200 2026-03-20 20:28 by ms629
[考研] 319求调剂 +3 小力气珂珂 2026-03-20 3/150 2026-03-20 19:47 by JourneyLucky
[考研] 286求调剂 +6 lemonzzn 2026-03-16 10/500 2026-03-19 14:31 by lemonzzn
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 考研求调剂 +3 橘颂. 2026-03-17 4/200 2026-03-17 21:43 by 有只狸奴
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考研] 中科院材料273求调剂 +4 yzydy 2026-03-15 4/200 2026-03-16 15:59 by Gaodh_82
信息提示
请填处理意见