news 2026/4/16 16:40:07

批量生成超胞脚本 gen-sc.py

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
批量生成超胞脚本 gen-sc.py

gen-sc.py

依赖 pymagent
pip install pymagent
or
conda install pymagent

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ generate_supercells.py - 仅支持三位数字超胞尺寸:231 -> 2x3x1 - 支持从 size.txt 读取 - 默认原胞文件:111.vasp - 输出命名:N1N2N3.vasp - 若发现同名文件:提示 [DUPLICATE] 并跳过,绝不覆盖 """ import argparse import os import sys from typing import Tuple, Set from pymatgen.core import Structure from pymatgen.io.vasp import Poscar def parse_size_3digit(s: str) -> Tuple[int, int, int]: s = s.strip() if not (s.isdigit() and len(s) == 3): raise ValueError(f"非法超胞尺寸 '{s}'(必须是三位数字,如 231)") return int(s[0]), int(s[1]), int(s[2]) def read_size_file(fname: str): sizes = [] with open(fname, "r", encoding="utf-8") as f: for ln, line in enumerate(f, 1): line = line.strip() if not line or line.startswith("#"): continue try: sizes.append(parse_size_3digit(line)) except ValueError as e: raise ValueError(f"{fname}:{ln} {e}") return sizes def main(): parser = argparse.ArgumentParser( description="用 pymatgen 批量生成超胞(尺寸格式:231)" ) parser.add_argument( "input", nargs="?", default="111.vasp", help="原胞 VASP 文件(默认:111.vasp)", ) parser.add_argument( "--sizes", nargs="*", default=[], help="命令行指定超胞尺寸,如:211 221 231", ) parser.add_argument( "--size-file", default="size.txt", help="超胞尺寸文件(默认:size.txt)", ) parser.add_argument( "-o", "--outdir", default=".", help="输出目录(默认当前目录)", ) args = parser.parse_args() # ---------- 检查原胞 ---------- if not os.path.isfile(args.input): print(f"[ERROR] 找不到原胞文件:{args.input}", file=sys.stderr) return 2 # ---------- 收集尺寸 ---------- sizes: Set[Tuple[int, int, int]] = set() if os.path.isfile(args.size_file): try: sizes.update(read_size_file(args.size_file)) except ValueError as e: print(f"[ERROR] {e}", file=sys.stderr) return 2 for s in args.sizes: try: sizes.add(parse_size_3digit(s)) except ValueError as e: print(f"[ERROR] {e}", file=sys.stderr) return 2 if not sizes: print("[ERROR] 未指定任何超胞尺寸(size.txt 和 --sizes 均为空)", file=sys.stderr) return 2 # ---------- 读取结构 ---------- base = Structure.from_file(args.input) os.makedirs(args.outdir, exist_ok=True) # ---------- 生成 ---------- written = 0 skipped = 0 for a, b, c in sorted(sizes): outname = f"{a}{b}{c}.vasp" outpath = os.path.join(args.outdir, outname) if os.path.exists(outpath): print(f"[DUPLICATE] {outname} 已存在,跳过,不覆盖") skipped += 1 continue sc = base.copy() sc.make_supercell([a, b, c]) Poscar(sc).write_file(outpath) print(f"[OK] 生成 {outname}") written += 1 print(f"\n完成:生成 {written} 个,跳过重复 {skipped} 个") return 0 if __name__ == "__main__": raise SystemExit(main())

使用

将超胞尺寸写在文件中(每行一个尺寸)

python gen-SC.py --size-file size.txt

在命令中指定超胞尺寸

python gen-SC.py --sizes 222 332 321 ...

默认原胞的名称为 111.vasp
如果名称为其他,使用
python generate_supercells.py 原胞文件名称.vasp --size-file size.txt

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 13:05:46

3步掌握零代码AI模型优化:MediaPipe Studio效率提升指南

3步掌握零代码AI模型优化:MediaPipe Studio效率提升指南 【免费下载链接】mediapipe Cross-platform, customizable ML solutions for live and streaming media. 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe 你是否曾因AI模型调参繁琐而放弃优化…

作者头像 李华
网站建设 2026/4/16 11:15:53

工业机器人运动控制:从故障诊断到性能优化的全栈解决方案

工业机器人运动控制:从故障诊断到性能优化的全栈解决方案 【免费下载链接】moveit2 :robot: MoveIt for ROS 2 项目地址: https://gitcode.com/gh_mirrors/mo/moveit2 一、问题诊断:工业场景下运动规划的核心挑战 在现代工业自动化系统中&#x…

作者头像 李华
网站建设 2026/4/9 22:42:53

3分钟搞定抽卡记录:原神抽卡记录导出工具让你的原石花得明明白白

3分钟搞定抽卡记录:原神抽卡记录导出工具让你的原石花得明明白白 【免费下载链接】genshin-wish-export biuuu/genshin-wish-export - 一个使用Electron制作的原神祈愿记录导出工具,它可以通过读取游戏日志或代理模式获取访问游戏祈愿记录API所需的authK…

作者头像 李华
网站建设 2026/4/16 12:44:14

React Native环境搭建项目应用:创建第一个App实例

你提供的这篇技术博文内容扎实、逻辑严密、视角独特,已经远超一般“环境搭建教程”的水准,具备很强的专业深度与工程实践价值。但正如你所要求的—— 需要润色优化为更自然、更具传播力、更少AI痕迹、更适合技术博主口吻的技术分享文章 ,我将从以下几个维度进行重构: ✅…

作者头像 李华
网站建设 2026/4/16 12:38:42

揭秘OpenArk:Windows系统防护与安全检测实战指南

揭秘OpenArk:Windows系统防护与安全检测实战指南 【免费下载链接】OpenArk The Next Generation of Anti-Rookit(ARK) tool for Windows. 项目地址: https://gitcode.com/GitHub_Trending/op/OpenArk 在当今复杂的网络安全环境中,传统安全工具往往…

作者头像 李华
网站建设 2026/4/16 11:07:11

蜂鸣器电路原理图中限流电阻计算方法详解

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。我以一名有十年嵌入式硬件设计经验的工程师视角,摒弃模板化表达、AI腔调和空泛术语,用真实项目中的思考逻辑、踩坑经历与调试心得重写全文。语言更自然、节奏更紧凑、技术细节更具实操性,同时严格遵循您提出的…

作者头像 李华