본문 바로가기
Linux & Unix

VASP, Gaussian에서 원자 위치 고정하는 방법

by D.Flicker 2015. 11. 5.

물리, 재료, 화학 분야에서 많이 이용하는 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씩 증가시켜 출력하라는 뜻입니다.