计算化学公社

 找回密码 Forget password
 注册 Register
Views: 355|回复 Reply: 2
打印 Print 上一主题 Last thread 下一主题 Next thread

[程序/脚本开发] gro文件扩胞的小脚本

[复制链接 Copy URL]

342

帖子

1

威望

1736

eV
积分
2098

Level 5 (御坂)

本帖最后由 slxc920113 于 2025-10-14 14:12 编辑

最近做一些纤维结构的分子动力学模拟,用packmol创建的结构不太满意,而且耗时太长。于是用了二种策略,第一种是直接计算聚合物链段的转动惯量,然后让主轴对齐盒子的Z轴,指定中心位置直接用程序生成,但是这样的结构又不够随机。于是又想了一个办法,先用gmx insert-molecules 先随机创建一个狭长的盒子插入线性的聚合物链,盒子的x和y方向尽量小,try次数足够多,就可以随机创建一个比较满意的单链模型,然后再在x和y方向进行扩胞。于是就写了这么一个简单的小脚本。



使用方法:
  1. # 基本用法:2x2x2扩胞
  2. python supercell.py input.gro -nx 2 -ny 2 -nz 2

  3. # 指定输出文件名
  4. python supercell.py input.gro -nx 3 -ny 1 -nz 2 -o output.gro

  5. # 只在z方向扩胞
  6. python supercell.py input.gro -nz 4
复制代码
  1. GROMACS GRO文件错位扩胞工具

  2. positional arguments:
  3.   input_file            输入的GRO文件

  4. optional arguments:
  5.   -h, --help            show this help message and exit
  6.   -nx NX                x方向扩胞倍数 (默认: 1)
  7.   -ny NY                y方向扩胞倍数 (默认: 1)
  8.   -nz NZ                z方向扩胞倍数 (默认: 1)
  9.   --x-stagger-y X_STAGGER_Y
  10.                         沿x方向扩胞时,每层在y方向的偏移量 (nm)
  11.   --x-stagger-z X_STAGGER_Z
  12.                         沿x方向扩胞时,每层在z方向的偏移量 (nm)
  13.   --y-stagger-x Y_STAGGER_X
  14.                         沿y方向扩胞时,每层在x方向的偏移量 (nm)
  15.   --y-stagger-z Y_STAGGER_Z
  16.                         沿y方向扩胞时,每层在z方向的偏移量 (nm)
  17.   --z-stagger-x Z_STAGGER_X
  18.                         沿z方向扩胞时,每层在x方向的偏移量 (nm)
  19.   --z-stagger-y Z_STAGGER_Y
  20.                         沿z方向扩胞时,每层在y方向的偏移量 (nm)
  21.   -o OUTPUT, --output OUTPUT
  22.                         输出文件名 (默认: 自动生成)
复制代码


supercell.py (13.31 KB, 下载次数 Times of downloads: 8)

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
HNUST + 5 谢谢分享

查看全部评分 View all ratings

849

帖子

4

威望

1920

eV
积分
2849

Level 5 (御坂)

A Student

2#
发表于 Post on 2025-10-14 13:30:06 | 只看该作者 Only view this author
本帖最后由 student0618 于 2025-10-14 13:39 编辑

gmx genconf 也有类似的功能
https://manual.gromacs.org/current/onlinehelp/gmx-genconf.html

e.g. editconf 定盒子大小及对齐polymer 轴及x/y/z轴,genconf扩胞。
敬仰一针见血的指责,厌倦别有用心的赞美。

342

帖子

1

威望

1736

eV
积分
2098

Level 5 (御坂)

3#
 楼主 Author| 发表于 Post on 2025-10-14 14:12:55 | 只看该作者 Only view this author
student0618 发表于 2025-10-14 13:30
gmx genconf 也有类似的功能
https://manual.gromacs.org/current/onlinehelp/gmx-genconf.html

我知道,但是我需要扩胞的同时沿着两外两个矢量进行平移,形成密堆积的结构,所以最后还是自己写脚本完成了。

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-1-25 07:29 , Processed in 1.132074 second(s), 24 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list