Written by
Tanji
on
on
VASP, Gaussian에서 원자 위치 고정하는 방법
물리, 재료, 화학 분야에서 많이 이용하는 VASP과 Gaussian code에서 꼭 필요한 기능인 원자 위치 고정하는 방법에 대해서 정리해보려고 합니다. 이제 많이 사용하지 않는 코드가 되어서 그런지 가끔 사용해야 할 때 명확히 기억이 나지 않네요.
1. VASP에서 원자 위치 고정하기
` POSCAR 파일에서 설정해 줍니다. graphite로 예를 들면,
. 6번째 줄 원자 개수 적는 라인 바로 아래 Selective dynamics 라고 적어줍니다.
. Atom position 적는 위치에 이어서 띄어쓰기를 이용해 T T T 라고 적어줍니다.
. F F F 라고 적어주면 x, y, z 모든 position을 고정하라는 뜻입니다.
C graphite
1
2.13 3886594925 -1.232 0
0 2.464 0
0 0 6.711
4
Selective dynamics
Direct
0.00000 0.00000 0.25000 F F F
0.00000 0.00000 0.75000 T T T
0.33333 0.66667 0.25000 F F F
0.66667 0.33333 0.75000 T T T
원자가 많은 경우는 어떻게 할까요? vi editor를 이용합니다.
ctrl+V로 블록을 설정하고
:g/$/s// T T T
그 이후에 바꾸고자 하는 원자들을 ctrl+V
로 블록 설정하고 텍스트 교체를 진행합니다.
:s/T T T/F F F/g
2. Gaussian에서 원자 위치 고정하기
benzene 단분자를 예로 들면
opt 부분에 Modredundant 라는 옵션을 추가해 줍니다.
atom position 맨 마지막에 한줄을 빈줄로 두고 바로 다음줄에 X 1 F
와 같이 고정하고 싶은 모든 원자들에 대해 한줄씩 작성해 주면 됩니다.
%chk=benzene.chk
%mem=256GB
%nprocshared=48
#p b3lyp/6-31g** opt=(maxcycle=999, Modredundant) scf=(maxcycle=999)
Benzene opt at ground state
0 1
C -2.33880 1.16580 0.00010
C -1.56900 -0.16780 0.00000
C -0.02900 -0.16790 0.00010
C 0.74110 1.16570 0.00020
C -0.02880 2.49940 0.00010
C -1.56880 2.49940 0.00000
H -3.47880 1.16590 0.00020
H -2.13900 -1.15500 -0.00010
H 0.54090 -1.15520 0.00010
H 1.88110 1.16560 0.00030
H 0.54120 3.48660 0.00020
H -2.13880 3.48670 -0.00010
X 1 F
X 2 F
X 3 F