菜鸡论文模仿01(结构优化):Identifying the Mechanisms of Polymer Friction through Molecular Dynamics Simulation_lammps结构优化-程序员宅基地

模仿

MD最好的入门方式就是模仿!!!!!
找一篇难度适中的,软件,研究点都比较贴近自己方向的论文进行模仿。作为初学的我很幸运找到了这篇论文,在模仿过程中也逐渐的掌握了lammps的相关命令,如果大家也觉得适合的话,也可以进行模仿练习。比较贴近的意思是眼光要广,只要那篇论文有涉及到你的研究方向,哪怕是一个参数,你都值得一看。

Dai L, Minn M, Satyanarayana N, Sinha SK, Tan VBC. Identifying the mechanisms of polymer friction through molecular dynamics simulation. Langmuir 2011;27(24):14861–7. https://doi.org/10.1021/la202763r .
在这里插入图片描述
模型方面就是简单的聚合物块,但是具有以下几个特点:

  • 多层结构,端面很平
  • 密度为指定值
    此次博客只对MS导出的多层结构进行结构优化至论文的构型
    我分了ABCDEF六层,纯属为了方便起见,只有两个厚度的polymer layer,但是不影响后续的模仿学习,从这里就可以看出MS导出的模型完全达不到论文的初始模子,端面不齐,密度无法保证,总之就是很糟糕的模型。。我在MS也倒腾了很多次,依旧达不到想要的效果,所以需要在lammps中进行优化结构。
    在这里插入图片描述

密度控制

所谓密度控制就是,让一定量的原子达到一定量的体积,所以我进行了一系列的压缩处理,用到的主要命令就是wall/reflect,

基本分为以下三步:

  • 确定目标密度下聚合物块的高度
  • add force使ABCD和EF压缩到指定高度
  • 弛豫到wall/reflect边界处
    在这里插入图片描述
    部分in文件如下:
#-----------------------初始模拟系统设置
dimension		3		
units			real
atom_style		full
boundary		p p f

#-----------------------近邻设置
neighbor 		1.0 bin
neigh_modify 		delay 0 every 10 check yes

#-----------------------coul/long预设置
kspace_style 		ewald 1.0e-4									#用于周期性边界
kspace_modify		slab 3.0									#可用于ppf边界

#-----------------------力场设置
pair_style 		lj/class2/coul/long 10.0
bond_style      	class2
angle_style     	class2
dihedral_style  	class2
improper_style  	class2

#-----------------------原子坐标读入
read_data 		ABCDEF.data

#-----------------------结构参数(CH原子数量)
variable		C_number_A equal 400								#A层碳原子数目
variable		C_number_B equal 400								#B层碳原子数目
variable		C_number_C equal 900								#C层碳原子数目
variable		C_number_D equal 400								#D层碳原子数目
variable		C_number_E equal 400								#E层碳原子数目
variable		C_number_F equal 400								#F层碳原子数目

variable		H_number_A equal 808								#A层氢原子数目
variable		H_number_B equal 808								#B层氢原子数目
variable		H_number_C equal 1818								#C层氢原子数目
variable		H_number_D equal 808								#D层氢原子数目
variable		H_number_E equal 808								#E层氢原子数目
variable		H_number_F equal 808								#F层氢原子数目

variable 		C_number_01 equal ${
    C_number_A}+${
    C_number_B}+${
    C_number_C}+${
    C_number_D}	#ABCD层C原子数量
variable		C_number_02 equal ${
    C_number_E}+${
    C_number_F}					#EF层C原子数量
variable 		H_number_01 equal ${
    H_number_A}+${
    H_number_B}+${
    H_number_C}+${
    H_number_D}	#ABCD层H原子数量
variable		H_number_02 equal ${
    H_number_E}+${
    H_number_F}					#EF层H原子数量

variable		Atom_number_ABCD equal ${
    C_number_01}+${
    H_number_01}				#ABCD层原子数量
variable 		Atom_number_EF equal ${
    C_number_02}+${
    H_number_02}				#EF层原子数量

#-----------------------密度参数设定
variable 		target_density equal 0.94							#g/cm^3
variable		C_mass equal 1.993e-23								#g
variable		H_mass equal 1.674e-24								#g

variable		target_mass_01 equal (${
    C_number_01}*${
    C_mass})+(${
    H_number_01}*${
    H_mass})	#ABCD层原子质量(g)
variable		target_volume_01 equal ${
    target_mass_01}/${
    target_density}			#ABCD层体积(cm^3)
variable		target_height_01 equal (${
    target_volume_01}*1e24)/(lx*ly)			#ABCD层指定密度下厚度(埃)
variable		reflect2 equal zlo+${
    target_height_01} 						#指定密度下ABCD的z轴最高值

#-----------------------力学参数设定
variable		target_pressure equal 1e9							#目标压力设定,比例系数*1Gpa(pa)
variable 		total_force_E_F equal ${
    target_pressure}*lx*ly*1e-20				#EF层所受的总力(N)
variable		atom_force_E_F equal ${
    total_force_E_F}/(${
    C_number_02}+${
    H_number_02})		#EF层每一个原子受到的力(N)
variable		f_coefficient equal 6.950166e-11
variable		f_to_addforce equal ${
    atom_force_E_F}/${
    f_coefficient}

补充

  • 为什么我用ppf,而不用pps?
    聚合物采用的pcff力场,pair_style为lj/class2/coul/long, 需要额外增加kspace命令,恶心的是,这命令还只能用于周期性边界??!!!还好有kspace_modify,可以勉强用在ppf中,用f边界注意原子丢失情况,所以在非周期性边界中要活用wall/reflect命令!!!
  • 我的ABCD和EF之间隔得太远了,你们在模仿的时候看着来,大于截断距离就ok了。
  • 进行压缩的时候最好用addforce,我一开始用的是move linear,会出现反向move的情况,这个在第二个gif中应该可以看到。还有一点,其实addforce也不是最好的,因为压缩的距离没法儿控制,这个需要人为加大步长,后续结合可视化软件看哪一步是最为合适结束addforce,然后弛豫到指定密度距离的。
  • 如果是体系中只有一个集中的区域,例如体系只有ABCD或者EF,果断addforce,thermo_style的时候导出density看密度就ok,密度超了记住步数,跑那个步数就ok。
  • 在最后导出data和restart文件
    restart可以保证先前的group分类,这点很重要!!!!具体看manual。
#-----------------------创建data/restart文件
write_restart		restart.optimization
write_data			data.ABCDEF_OPTIMIZATION

模型优化效果图

ABCD压缩
在这里插入图片描述
EF压缩
在这里插入图片描述
一个还算ok 的模型就出来了
在这里插入图片描述

后续会继续模更新论文中的压力加载过程。。。。

参考文献

[1] Zhan S, Xu H, Duan H, Pan L, Jia D, Tu J et al. Molecular dynamics simulation of microscopic friction mechanisms of amorphous polyethylene. Soft Matter 2019;15(43):8827–39. https://doi.org/10.1039/c9sm01533g .
[2] Tong R-t, Han B, Quan Z-f, Liu G. Molecular dynamics simulation of friction and heat properties of Nano-texture GOLD film in space environment. Surface and Coatings Technology 2019;358:775–84. https://doi.org/10.1016/j.surfcoat.2018.11.084 .
[3] Ewen JP, Gao H, Müser MH, Dini D. Shear heating, flow, and friction of confined molecular fluids at high pressure. Phys Chem Chem Phys 2019;21(10):5813–23. https://doi.org/10.1039/c8cp07436d .
[4] Chen K, Wang L, Chen Y, Wang Q. Molecular dynamics simulation of microstructure evolution and heat dissipation of nanoscale friction. International Journal of Heat and Mass Transfer 2017;109:293–301. https://doi.org/10.1016/j.ijheatmasstransfer.2017.01.105 .
[5] Dai L, Sorkin V, Sha ZD, Pei QX, Branicio PS, Zhang YW. Molecular dynamics simulations on the frictional behavior of a perfluoropolyether film sandwiched between diamond-like-carbon coatings. Langmuir 2014;30(6):1573–9. https://doi.org/10.1021/la404680v .
[6] Uehara T. Molecular Dynamics Simulation of Stick-Slip Friction on a Metal Surface. AMM 2013;459:26–33. https://doi.org/10.4028/www.scientific.net/AMM.459.26 .
[7] Dong Y, Li Q, Martini A. Molecular dynamics simulation of atomic friction: A review and guide. Journal of Vacuum Science & Technology A: Vacuum, Surfaces, and Films 2013;31(3):30801. https://doi.org/10.1116/1.4794357 .
[8] Solar M, Meyer H, Gauthier C, Benzerara O, Schirrer R, Baschnagel J. Molecular dynamics simulations of the scratch test on linear amorphous polymer surfaces: A study of the local friction coefficient. Wear 2011;271(11-12):2751–8. https://doi.org/10.1016/j.wear.2011.05.026 .
[9] Dai L, Minn M, Satyanarayana N, Sinha SK, Tan VBC. Identifying the mechanisms of polymer friction through molecular dynamics simulation. Langmuir 2011;27(24):14861–7. https://doi.org/10.1021/la202763r .
[10] Sivebaek IM, Samoilov VN, Persson BNJ. Frictional properties of confined polymers. Eur Phys J E Soft Matter 2008;27(1):37–46. https://doi.org/10.1140/epje/i2008-10349-8 .
[11] Dias RA, Rapini M, Costa BV, Coura PZ. Temperature dependent molecular dynamic simulation of friction. Braz. J. Phys. 2006;36(3a):741–5. https://doi.org/10.1590/S0103-97332006000500029 .

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qyb19970829/article/details/104886679

智能推荐

cocoapods的安装 遇到 Error installing pods:activesupport requires Ruby version >=2.2.2_error installing pods: activesupport requires ruby-程序员宅基地

文章浏览阅读672次。1.打开终端2 移除现有 Ruby 默认源 输入以下指令$gem sources --remove https://rubygems.org/3.使用新的源 输入以下指令 $gem sources -a https://ruby.taobao.org/4.验证新源是否替换成功 输入以下指令 $gem sources -l5.安装 Co_error installing pods: activesupport requires ruby version >= 2.7.0.

uni-app 利用localStorage进行页面间数据传递_uniapp localstorage-程序员宅基地

文章浏览阅读911次。需求:两个页面,第一个页面是数据的列表,有几项数据可以进行修改,第二个页面某个列表数据的详情页,相应的几项数据也可以进行修改,要求不管是那个页面的哪个数据进行修改,两个页面都要同步变化关键点:对数据修改后,一定要覆盖原来的数组或者对象------页面数据同步变化得到的数据,页面显示一份,保存在缓存中一份-----页面间数据的传递和同步效果:页面部分就省略了,布局比较简单,主要是逻辑部分列表页逻辑:export default{ data(){ return{ detailL_uniapp localstorage

模板模式详解、模板模式怎么用、模板模式模板代码_模板模式怎么写-程序员宅基地

文章浏览阅读370次。模板模式详解、模板模式怎么用、模板模式模板代码文章目录模板模式详解、模板模式怎么用、模板模式模板代码@[toc]模板模式定义使用场景优点代码实操模板模式定义在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。使用场景其实在开发中,你可能已经使用了模板模式,只是你不知道你在用。什么时候会用到呢?当你写一段代码复制过两次或多次,你就开始怀疑你的设计思路了。然_模板模式怎么写

selenium验证码识别方案二:第三方AI库识别验证码之复杂验证码_ai selenium-程序员宅基地

文章浏览阅读451次。这个需要自己注册一个账号:byzhang/root进入这个接口:https://www.showapi.com/apiGateway/view?apiCode=184点击详情然后选择:选择下载SDK解压缩后放到lib目录下详细代码如下:import requestsfrom urllib import parse#全局请求头files = {}headers = {}body = {}timeouts = {}resHeader = {}class ShowapiR._ai selenium

全通滤波器 相位校正 matlab,一文读懂滤波器的线性相位,全通滤波器,群延迟...-程序员宅基地

文章浏览阅读3k次,点赞2次,收藏17次。延迟和全通滤波器,来解释这些概念。先说结论:线性相位能保证信号中各频率成分的相对相位关系不改变。通俗解释是:信号经过线性相位滤波器后,各个频率分量的延时时间是一样的。1. 延迟举一个最简单的FIR的例子,延迟。假设16kHz的采样频率,一个采样周期的延迟,可以用FIR来表示。利用Matlab来观看这个滤波器的频率响应,代码如下。采样频率为Fs = 16kHz, 采样周期为Ts,Ts = 1/Fs。..._matlab如何对滤波器进行相位校准

Python秒算24点,行还是不行?_python 1-9 三个数不重复 算24点-程序员宅基地

文章浏览阅读7.3k次,点赞27次,收藏64次。周末闲来无事,看到隔壁家的老王在和隔壁家的媳妇玩24点,就进屋看了看。发现老王是真不行啊,那不行,这也不行。就连个24点都玩不过他媳妇,给他媳妇气的,啥都不能满足,这不能,那也不能。我坐下来和他媳妇玩了两把,那都是无出其右,把把赢!我要走的时候,他媳妇还挽留我多玩几把,有意思。为了能让老王在他媳妇面前抬起头来,我决定帮他一把……就用python写了个算24点的玩意,老王对我感激涕零。..._python 1-9 三个数不重复 算24点

随便推点

效率利器——从Api自动生成Jmeter测试脚本_ai生成jmeter-程序员宅基地

文章浏览阅读2.1k次。文章结构Jmeter载入结果生成Jmeter测试计划从Controller提取api生成jmeter源码可联系作者前言:不会用Jmeter的测试工程师不是一个好的程序员。自己码的api,交给前端开发的时候,你心里有点谱吗? JMeter是神马啊? Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件。相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为..._ai生成jmeter

Timer & TimerTask 源码分析_timertask源碼分析-程序员宅基地

文章浏览阅读244次。承接上一篇,看一看 Timer 和 TimerTask 内部的实现。之前说了我自己极少使用这个,目前在 Java 开发中使用 Timer 应该也非常少见了,既然是这样一个夕阳组件,为什么还要写个源码分析呢?主要是由于这部分的实现非常有借鉴意义,如果你工作中需要开发一个自动化流程,让它每一步都能定时执行,那么其实现方式和 Timer、TimerTask 的内部实现其实大同小异,都是维护一个 Task..._timertask源碼分析

VC常见的108个问题-程序员宅基地

文章浏览阅读1.5k次。(1) 如何通过代码获得应用程序主窗口的 指针?主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。Example:TC

在mpvue中使用小程序自带的picker进行日期选择的坑_小程序两个picke日期选择 value报错-程序员宅基地

文章浏览阅读1.6k次。html//坑:切记mode前面没有冒号<picker mode="date" :value="date" fields='month' @change="pickerChange" @click='myclick'> <view class="picker"> 当前选择: {{date}} </view></picker>..._小程序两个picke日期选择 value报错

Log4J漏洞分析与SCA扫描分析_yakit进行log4j漏洞扫描-程序员宅基地

文章浏览阅读853次。​核弹级别的开源组件Log4J的远程执行漏洞爆出来之后,整个安全行业都忙着修复。针对此次log4j2漏洞,Scantist SCA做出快速相应,对CVE-2021-44228漏洞提供精确检测及支持。_yakit进行log4j漏洞扫描

Qt5 自学笔记-程序员宅基地

文章浏览阅读178次。Qt 笔记注册快捷键右键菜单注册快捷键头文件声明protected: void keyPressEvent(QKeyEvent *event);ctrl + M最大化void Widget::keyPressEvent(QKeyEvent *event){ if(event->modifiers() == Qt::ControlModifier){ if(event->key() == Qt::Key_M){ qDebu

推荐文章

热门文章

相关标签