Home Science Coding Design Etc. AboutMe

VASP에서 수소분자(Hydrogen molecule) 구조 최적화할때 수소원자(Hydrogen atom)로 분해될 경우 해결방법

April 21, 2020   /   2 mins read   /  

Bond Energy 계산

VASP (Vienna Ab initio Simulation Package), DFT (Density Functional Theory)를 이용하여 기존 시스템에서 추가로 확인 할 것이 있어서 몇 가지 Bond energy를 구해야 할 일이 있었습니다.

리소스가 많이 필요했던 계산은 아니고 H-H, H-Cl, Cl-Cl의 Bond energy를 계산하는 비교적 간단한 일이었는데요. 수소분자 (H2), 염소분자 (Cl2), 염산 (HCl), 수소원자 (H), 염소원자 (Cl)을 각각 계산 후 Energy without entropyEnergy(sigma->0)의 값들을 구하여 Bond energy를 구하려고 했습니다.




무언가 이상한 수소분자(H2) Opimization 결과

계산 결과 H2의 경우 bond dissociation energy가 0.001 eV가 나왔습니다. 즉 H-H 공유결합 세기가 0.001 eV 라는 소리죠.

조금 자세히 들여본다면 일반적인 공유결합은 저것보다 훨씬 세기 때문에, 말도 안되는 계산 결과라는 것을 알 수 있습니다. 😐


처음에는 함수(Functional)를 잘못 썼나? 생각을 했는데요. 이 때는 PBE-D3 (PBE+D3 Grimme correction) 사용하였습니다. 그렇지만 Cl2를 통해 분석한 Cl-Cl 결합의 경우 다른 자료들과 비교해보니 얼추 들어맞더군요.

혹시 초기 구조 문제인지 알아보기 위해, OSZICAR 파일에서 에너지를 확인해보니 첫번째 loop에서 에너지가 크게 발산하는 것을 관찰하였습니다.

그래서 문제 확인을 위해 molden을 통해 결합거리를 확인해보니 수소분자(H2)가 바로 떨어져서 2개의 수소원자(H)로 분리되더군요.





문제는 Spin-polarized calculation

왜 이런식으로 수소분자가 결합이 깨질까 하고 원인을 찾던 중, 구글링을 해보니 저랑 같은 실수를 한 사람이 있었습니다. (ResearchGate)

문제는 기존의 시스템에서 ISPIN = 2, 즉 spin-polarized calculation 으로 계산 중이었는데, 이 때 수소분자의 ground state의 전자가 unpaired 상태이라서 바로 반발력이 작용하여 수소 원자 형태로 분리되는 것이죠.


이런 문제를 해결하기 위해선

1. ISPIN=1, 즉 non spin-polarized calculation로 바꿔 계산 하거나

2. up-down spin의 갯수를 맞춰주기 위해 ISPIN = 2는 유지해놓고, NUPDOWN = 0 를 추가하면 됩니다. (net up&down spin number: 0)

참고로, NUPDOWN의 default 값은 -1 입니다. (fully relaxed calculation)



저는 spin-polarized calculation 결과가 필요했으므로, net spin 값 변경을 통해 해결했습니다.

혹시라도 vasp 사용 중에 비슷한 문제가 발생했다면 메일이나 댓글로 공유해주세요! 아는 내용이라면 최대한 도와드릴게요. 읽어주셔서 감사합니다. 😃