물리, 재료, 화학 분야에서 많이 이용하는 VASP과 Gaussian code에서 꼭 필요한 기능인 원자 위치 고정하는 방법에 대해서 정리해보려고 합니다. 이제 많이 사용하지 않는 코드가 되어서 그런지 가끔 사용해야 할 때 명확히 기억이 나지 않네요.
1. VASP에서 원자 위치 고정하기- POSCAR 파일에서 설정해 줍니다. graphite로 예를 들면,
. 6번째 줄 원자 개수 적는 라인 바로 아래 Selective dynamics 라고 적어줍니다.
. Atom position 적는 위치에 이어서 띄어쓰기를 이용해 T T T 라고 적어줍니다.
. F F F 라고 적어주면 x, y, z 모든 position을 고정하라는 뜻입니다.
- 원자가 많은 경우는 어떻게 할까요?
. vi editor를 이용합니다.
1 2 3 4 5 6 | ctrl+V로 블록을 설정하고 :g/$/s// T T T 그 이후에 바꾸고자 하는 원자들을 ctrl+V로 블록 설정하고 :s/T T T/F F F/g 텍스트 교체를 진행합니다. | cs |
2. Gaussian에서 원자 위치 고정하기
- benzene 단분자를 예로 들면
. opt 부분에 Modredundant 라는 옵션을 추가해 줍니다.
. atom position 맨 마지막에 한줄을 빈줄로 두고 바로 다음줄에 X 1 F 와 같이 고정하고 싶은 모든 원자들에 대해 한줄씩 작성해 주면 됩니다.
이번 경우도 원자가 많으면 어떻게 할까요? 간단하게 shell script 한줄로 만들어 보세요.
for문과 seq 명령어를 이용했습니다. seq 1 1 20은 1부터 20까지 1씩 증가시켜 출력하라는 뜻입니다.