24小时热门版块排行榜    

查看: 3396  |  回复: 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的回帖

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的回帖
查看全部 14 个回答

brucefan

专家顾问 (著名写手)

【答案】应助回帖

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

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

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的回帖

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的回帖
信息提示
请填处理意见