关于源代码
Ask:想看看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源代码的结构是怎么样的?哪个文件里面包含了原子间相互作用的计算?
Response1:用的是C++的多态技术;
Response2:比如,想看lj96势函数的,找pair_lj98_cut.cpp,打开这个CPP文件,就能看到计算作用力的代码;
Response3:嗯,这个应该是可以理解的,不过我想看的是lammps中怎么把计算的力结果返回到主程序的,分子动力学有个力->速度->位置->力的循环迭代,应该是在主程序中完成的吧