fopen函数matlab_Lammps经验谈之基于matlab的数据前处理

    使用lammps做模拟前,往往要先建立data文件(read_data命令)。data文件的形式又由atom_style命令确定。依据建模方法的不同,可能需要先对data文件进行前处理,使其满足atom_style命令的要求。本文以SPC/E水分子data文件的生成为例,介绍作者工作时使用matlab做数据前处理工作。该方法可能只限于作者的技术路线。但是作者希望能够在一定程度上帮助各位同行提高工作效率。 一、技术路线    作者的模拟工作要使用SPC/E水分子模型。相关介绍非本文重点。读者可以查阅相关工具书或原始文献。数据生成的技术路线是使用packmol填充分子模型+vmd topo工具生成原始数据文件。具体操作方法本文也不作介绍。读者可参考论坛介绍。部分结果如下图: 95af4ba9470d5673aa703b765ed06f4a.png    可以看到这里没有angle数据,没有电荷参数(atoms部分第四列均为0),没有初始速度。另一方面read_data对full type 的data文件的结构有明确要求,如手册中full对应的行。可以看出二者相差较大。 120f79bdc01db75a741dc8f6dd852d5d.png    作者选择matlab对缺失部分信息进行填加。下面分部分介绍作者的程序的功能。 二、初始操作    本部分不作介绍。 0be30e58c2205fdd38b26a1e9643ab9e.png 三、原子数(分子数)读取    因为每次使用本程序时可能体系大小不同,故先读取初始数据中原子数。 9fe9ab0d5cf2b40adac0925df7750cf5.png 四、建立电荷参数、原子类型参数、分子数等向量    由于水分子中有三个原子,数据列表中每三行的电荷参数、原子类型参数是一个循环体,而分子数以每三行加1的顺序排列。这里建立这几部分参数的列向量: 98b8bfd3ce31a6f25a305500c3964e4b.png 五、读取原始文件中的坐标数据    这部分使用fopen函数打开原始文件water.data,textscan函数读原始数据中坐标信息,并将上一部的所有信息一并写入atomsdata矩阵中。注意程序中有一个参数值是31,为原始数据中第一行有效数据所在行数减1,具体数值可能会因使用情况变化而有所改变。使用时读者可以先打开原始数据查看,再修改。另外,atomsdata的每行对应每个原子,每列对应full type要求的每种信息。特别地,这段程序中作者对整体原子坐标在z方向上减去20,而另两个方向没有变化。 d1578590edc64ecb13d36dfd43566542.png 六、文件头的书写    可以看到data文件要求在文件头写一些关于数据的基本信息。这里使用fprintf函数写入一切需要信息。读者可根据自己需要修改xlo xhi/yloyhi/zlo zhi三行的数值。此外将该原子坐标在六个方向的最值写到另外一个coord.data文件中,将在最后结果部分展示。 b810471685c294d80c0313002f22e15f.png 七、写入原子质量等信息    这部分内容可以在in文件中实现。可以不写。 ce62bce9a6dedb96c57d7e1b50f9645c.png 八、写atoms信息    将atomsdata矩阵内容按行写入all.data文件中,并将该部分内容写入一个单独文件atom.data中。 b5cacece7c8ddb66336e80e64e061181.png 九、写速度信息    将速度信息写入all.data,并单独写入velocities.data中。 c03cb754361c90ab5bed5f8a128e25c9.png 十、写键信息    同上。 d97a02abcc693c8ea0356b7fe4f43ab4.png 十一、写角信息    同上。 c788332b24bd29ee146b82ad1cefe8e8.png 十二、结果    最后,将在硬盘中生成一系列新的文件。我们逐一查看。Coord.data文件: 159a50cb509f6e9a2b24992c1a8d467a.pngAtom.data文件: 4bb17e06c617fa5677c89fb3ab36cb13.pngVelocities.data文件: 4e705a1df021e2e8bfb38d0548893724.pngBonds.data文件: 9bc79b0d865f168c9e16e7721eb65de3.pngAngles.data文件: 4504ad176655a101ac56866114264638.png    可以看到以上各个文件都存放了一部分数据信息。将它们联起来就是最终的结果。All.data文件: e02aa38aef43f175ae1a0d284f8ecd7b.png    本程序实际运行速度仅几秒钟。远快于使用ultraedit/excel等表格处理方式。如果模拟体系需要其他内容,可通过LAMMPS的命令read_data中的add模块实现。这里不做介绍。 今天就先介绍到这里~欢迎各位老师同学联系作者交流合作! 本文由吉林大学刘润老师原创,有兴趣的同学和老师可以直接联系刘老师liurun@jlu.edu.cn 学习更多MD知识 欢迎各位扫码关注 aaac0c11a43508895bd767d2d909227d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值