#イントロダクション
Gaussianの最適化計算の結果を入れて、存在比を計算するプログラムがよく必要になります。そのたびに作るがなくしてしまうし、単位変換とかめんどくさい。
解説ないです。間違いがあったら指摘してくれると嬉しいです。
#作った
dist.py
import numpy as np
def boltz(E_list, temp=298.15):
"""
Gaussian Energy to Boltzmann distribution
---------------------------
input
E_list: Hartee numpy array
temp: (K)
---------------------------
output
Distribution numpy array
Normalized so that the sum is 10
"""
E_list = E_list - np.amin(E_list)
kb = 1.38064852e-23 # J/K
h2J = 4.3597482e-18 # Hartree / J
beta = 1 / (kb * temp) # 1/J
dist = np.exp(-beta * E_list * h2J)
return dist / np.sum(dist) * 10
def main():
E_list = np.array([-600.818043678, -600.817622812, -600.817222895])
dist = boltz(E_list)
print(dist)
if __name__ == "__main__":
main()
boltzが今回作った関数
Hartreeをいれて、存在比(和が10になるように規格化)が帰ってくる。
#参考
HPCシステムズ・計算科学ソリューションズ
HartreeからJへの変換するときの値を参考にさせていただきました。accessed at 2020/01/22