脚本分享(三)——生成多个温度下的热力学校正数据
脚本分享(三)——生成多个温度下的热力学校正数据
技术分享|Dec 24, 2022|Last edited: 2024-9-16
 
type
Post
status
Published
date
Dec 24, 2022
slug
summary
生成多个温度下的热力学校正数据
tags
Python
计算化学
VASP
category
技术分享
icon
password
URL
Property
Sep 16, 2024 11:29 PM
写这个脚本的原因是因为做纯理论的师姐需要多个温度下的热力学校正数据,而vaspkit每次只能用501功能生成某一个温度的热力学数据。本来我是想用公式重新推一下的,后来发现实在太麻烦了,不如直接去读vaspkit 的输出。相当于每次都调用一次shermo。于是乎有了下面这个脚本:
#! /usr/bin/env python # -*- coding: UTF-8 -*- import os import pandas as pd import time # 读取参数 end_temp = int(input("请输入结束温度(K):")) step_size = int(input("请输入插点步长(K):")) # 生成温度列表 temperatures = list(range(step_size, end_temp+1, step_size)) # 创建空的数据框 df = pd.DataFrame(columns=['Temperature', 'Zero-point energy E_ZPE', 'Thermal correction to U(T)', 'Thermal correction to H(T)', 'Thermal correction to G(T)', 'Entropy S(eV/K)', 'Entropy contribution T*S']) # 循环执行命令并解析输出文件 for temp in temperatures: # 执行命令 os.system(f"(echo 501;echo {temp}) | vaspkit > vaspkit.out") # 解析输出文件 with open('vaspkit.out', 'r') as f: lines = f.readlines() # 提取数据并填入数据框 data = {} data['Temperature'] = temp for line in lines: if line.startswith(' Zero-point energy E_ZPE'): data['Zero-point energy E_ZPE'] = float(line.split()[-2]) elif line.startswith(' Thermal correction to U(T)'): data['Thermal correction to U(T)'] = float(line.split()[-2]) elif line.startswith(' Thermal correction to H(T)'): data['Thermal correction to H(T)'] = float(line.split()[-2]) elif line.startswith(' Thermal correction to G(T)'): data['Thermal correction to G(T)'] = float(line.split()[-2]) elif line.startswith(' Entropy S'): data['Entropy S(eV/K)'] = float(line.split()[-2]) elif line.startswith(' Entropy contribution T*S'): data['Entropy contribution T*S'] = float(line.split()[-2]) df = df.append(data, ignore_index=True) # 删除vaspkit.out文件 os.remove('vaspkit.out') print('计算'+str(temp)+'K中') # 输出数据框到csv文件 df.to_csv('output.csv', index=False)
运行时只需要输入所需插点的最大温度以及插点的温度步长即可。
会在当前工作路径下生成一个output.csv文件:
notion image

写下这段文字的时候我已经在安庆的家里了,厦门疫情不容乐观,舍友全阳了。于是乎赶紧溜回来。
希望身体健康~~~
另:把我的xbox serise s从学校带回来了,家里其实有一台ps5(是我去年老爸过生日给他买的)。但是老爸貌似更喜欢xbox的枪球车???现在码字的书房外面是老爸摩托车的轰鸣。
今天是回家的第一天,等会把我从实验室抢救回来的紫外数据整理一下立刻睡觉。
 
2022.12.24 安庆家中
脚本分享(二)——在不同表面之间迁移快速迁移反应路径脚本分享(四)——快速绘制能垒图