python生成随机H原子data文件的程序

14 篇文章 27 订阅
10 篇文章 3 订阅

具有gui界面的MS虽然上手和操作更为简单,但是灵活性不如代码的方式。利用代码可以对lammps的输出文件进行更加灵活的数据分析。或是建立更为复杂的模型。

例如,我们可以先用MS建立起聚氨酯分子链的data文件,然后进一步的使用代码对聚氨酯中的位点进行成键交联。

因此,掌握一种编程语言对于分子动力学的建模和分析是十分必要的。

本次先从最基础的入手,用python建立了一个在盒子中随机生成H原子的程序。

一、py程序部分

#-------随机H原子模型data生成-------#

import numpy as np #引入numpy模块,用于大量维度数组和矩阵运算。

natoms = input ('输入你需要生成的H原子数目') #自定义H原子数目

system_size= 100.0

positions = [] #空列表,用于存放原子信息。

natoms = int(natoms) #将字符串类型转换为整形

for i in range(natoms):
  positions.append(np.random.rand(3)*system_size)
#rand:生成(0,1)之间的随机数。括号里表示维度。
#循环1000次,每次循环添加一个坐标列表。
#例如[0.2,0.4,0.1]*100 = [20,40,10]

with open('random.data','w') as fdata:
#使用with打开random.data进行读写,如果不存在就自动创建。
#出错的话自动调用fdata.close()。为出错执行完后再fdata.close()。

  fdata.write('Random atoms - written for XDEのfrog\n\n')
  #data文件的第一行注明作者为薛定谔的青蛙,然后换两行。
  fdata.write('{} atoms\n'.format(natoms))
  #打印 10000 atoms 换行
  fdata.write('{} atom types\n\n'.format(1))
  #打印 1 atom types 换两行
  fdata.write('{} {} xlo xhi\n'.format(0,system_size))
  fdata.write('{} {} ylo yhi\n'.format(0,system_size))
  fdata.write('{} {} zlo zhi\n'.format(0,system_size))
  #打印box的xyz坐标
  fdata.write('\n')
  #换行
  fdata.write('Masses\n\n')
  #打印Masses,换行。
  fdata.write('1 1 #H\n\n')
  #打印1 1 #H 换两行
  fdata.write('Atoms\n\n')
  #打印Atoms换两行

  for i,pos in enumerate(positions):
    fdata.write('{} 1 {} {} {}\n'.format(i+1,*pos))
    #*pos指序列中的每个元素

二、运行程序

在idle中打开编写好的python程序,run module,出现一下界面。输入1000,回车。

没有报错表明运行成功。

三、运行结果

输出的data文件部分内容如下:

Random atoms - written for XDEのfrog

1000 atoms
1 atom types

0 100.0 xlo xhi
0 100.0 ylo yhi
0 100.0 zlo zhi

Masses

1 1 #H

Atoms

1 1 40.986851317250085 55.590056270036705 0.013593910169829027
2 1 82.39983454786729 77.38272918819796 71.87181770099643
3 1 96.3771743226388 30.390555469844916 90.08913510061629
4 1 39.49572778326274 44.57662357828993 60.5121797153126
5 1 57.95355251117245 39.61467527329043 97.4039997024542
6 1 35.896861870532035 49.529178676952434 84.07438346381817
7 1 58.013880161718504 13.404344832292736 35.432223116574725
8 1 70.94498972404959 55.42575754379626 41.53099919983412
9 1 73.5053715458304 34.970566986162424 70.60263056263587
10 1 76.27849295351044 6.962084375355893 13.528746391665347
11 1 29.375682163871954 67.62128187355145 34.24581226841668
12 1 31.760277802451665 61.96415629096923 37.63060555149897
13 1 32.334177423013614 96.98486059033165 20.03261612931987
14 1 86.84899785077471 79.9020435526898 82.44214725023006
15 1 87.48003760628963 7.340395072804462 44.48130875927284
16 1 39.72924736734451 84.4768462848233 30.46503012334778
17 1 85.64699134025705 11.693379720431452 64.94576264951154
18 1 37.185071459124586 54.59943406020703 20.850075973960656
19 1 59.71031270903181 10.4229999380549 90.47017569354233
20 1 86.28616297312473 84.58550695271573 46.544802810098915

使用ovito进行可视化:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的青蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值