Posted on 2011/01/26 14:08
Filed Under 클러스터란/고성능연산_HPC 조회수: view 5885

발췌 : http://chemistry.egloos.com/1626176

Gaussian input 만들기

Gaussian input은 .com 내지는 .gjf와 같은 확장자를 가지는 text 형태의 파일이다. 예전에는 거의 모든 작업을 터미널 또는 메모장에서 직접 구조와 계산 방법 등과 관련된 상세한 옵션까지 입력해서 input을 만들어야했지만 요즘에는 Graphic User Interface (GUI)를 이용해서 비교적 쉽게 input을 만들 수 있다. Gaussian input은 다른 프로그램의 input에 비하면 상당히 단순하고 직관적인 편이기 때문에 보통 분자 구조만 아무 프로그램에서 생성해서 가져오고 계산 옵션은 직접 입력하기도 한다. (다른 프로그램에서 생성한 분자 구조를 Gaussian input으로 이용할 수 있게 변환하는 방법은 나중에 다루기로 하겠다.)

Gaussian 프로그램이 워낙 대중적인 프로그램이다보니 몇몇 프로그램에서는 Gaussian과 연동되는 툴을 제공하기도 한다. 그 중에 GaussView와 WebMO를 주로 이용해봤다. Gaussian 프로그램을 처음 접하는 시점에서는 GaussView 같은 GUI를 이용해서 input을 만드는게 편하겠지만 어느 정도 익숙해지면 구조 정보를 제외한 input은 터미널에서 직접 만드는게 수월하다. 계산할 분자 구조에 따라서는 GaussView 보다는 HyperChem, Spartan, ... 등의 다른 GUI 프로그램이 적합할 수도 있다. 여러 GUI 프로그램을 접해보고 익숙해진 다음에 자신에게 편한 프로그램을 이용하면 된다.


GaussView

GaussView는 Gaussian, Inc.에서 제공하는 Gaussian 전용 GUI 프로그램이기 때문에 여타 다른 GUI 프로그램에 비해 비교적 상세한 옵션까지 조정가능하고 이미 만들어진 Gaussin input을 읽어왔을 때도 인식성이 뛰어난 편이다. (종종 구조는 제대로 읽어오지만 계산 방법과 다른 옵션을 이상하게 불러오는 경우도 있다.) GaussView에서는 ONIOM 계산이나 Periodic Boundary Condition (PBC) 계산의 input도 비교적 간편하게 만들 수 있다. 참고로 GaussView에서 진동모드, 분자 오비탈(molecular orbital) 분석, NMR, UV-Vis spectrum 등을 확인할 수 있다.


WebMO

WebMO는 계산화학 교육 분야에서 많이 이용되는 웹인터페이스로서 계산화학프로그램이라기 보다는 계산화학프로그램의 input을 만들고 계산을 수행하고 얻어진 결과를 확인하고 해석하는데 도움을 주는 일련의 과정을 도와주는 프로그램이다. Gaussian, Inc.에서도 추천하고 Harvard에서도 교육용으로 이용하고 있다고 한다. WebMO는 초급 사용자는 물론  중급 사용자에게도 어느 정도 큰 불편함없이 원하는 input을 만들 수 있는 GUI를 제공한다. 중급 이상 사용자들은 작업을 수행하기 전에 text 모드에서 만들어진 input을 보고 수정할 수 있지만 중급 이상 사용자들에게는 이미 WebMO의 장점보다는 단점이 눈에 들어오는 시점일 것이다. 중중급 이상 사용자에게는 WebMO가 웹브라우저를 바탕으로 작동한다는 가장 큰 장점이 단점으로 느껴지기 때문이다. 유사한 계산의 반복적인 작업을 여러 계산 서버에서 수행하고자 할 때는 터미널상에서 input을 copy해서 text를 직접 편집하고 계산을 수행하는게 훨씬 편하기 때문이다.


Gaussian input - Cartesian coordinate를 이용한 Example

%chk=h2co-c.chk                                                           # (1) Checkpoint file
%mem=100mb                                                                 # (2) Memory
%nproc=1                                                                       # (3) Number of CPU
#p opt hf/3-21g geom=connectivity                                    # (4) Route Line
                                                                                    # (5) Blank
h2co cartesian                                                               # (6) Title
                                                                                    # (7) Blank
0 1                                                                                # (8) Charge, Multiplicity
 C                 -0.53333334   -1.53333331    0.00000000          # (9) Geometry
 O                  0.09370709   -0.44228296   -0.00000000
 H                 -1.60333124   -1.53545242    0.00000000
 H                  0.00350081   -2.45891912    0.00000000
                                                                                    # (10) Blank
 1 4 1.0 3 1.0 2 2.0                                                           # (11) Connecitivity
 2
 3
 4
                                                                                    # (12) Blank

  (1) Checkpoint file : 계산 중에 output에 기록되지는 않는 정보를 가진 파일로 checkpoint 파일을 이용하면 중단된 계산을 어느 시점 이후부터 재시작할 때 용의하다. 가령 이원자 분자에서 결합 길이를 1.0Å에서 2.0Å까지 0.1Å 단위로 11개의 계산을 진행할 때 각각의 거리에서 에너지만 계산하는 single point 계산을 진행하는 경우에는 얻어져야할 에너지보다 더 높은 에너지를 갖는 원치않는 계산이 진행되는 경우도 있다. 이 경우 이전 계산의 checkpoint file을 읽어들여서 새로운 계산을 진행하면 성공적인 결과를 얻을 가능성이 높다. 또는 checkpoint 파일을 이용해 분자오비탈을 생성할 수 있다. checkpoint file을 보관하고 싶다면 .chk 형태로 보관하기 보다는 Gaussian이 설치된 기계에 관계없이 읽을 수 있고 파일 용량도 적은 formatted checkpoint file 즉 .fchk 형태로 이용하는 것이 좋다. (생략 가능)

  (2) Memory : 계산에 이용하는 메모리를 지정할 수 있다. 계산 서버의 전체 메모리를 모두 할당하기보다는 계산에 적합한 용량을 지정해서 이용하는 것이 좋다. (생략 가능, 생략하면 기본값 지정)

  (3) Number of CPU : 계산에 이용하는 CPU 수를 지정할 수 있다. multi core multi processor인 계산 서버에서는 Gaussian을 병렬로 설치하지 않았어도 Shared memory processor (SMP)가 지원된다면 병렬화된 계산을 수행할 수 있다. 모든 계산 방법이 병렬 계산이 가능하지 않고, 병렬 계산이 가능한 경우에도 무작정 CPU 수를 많이 잡는다고 효율적으로 빨리 끝나지는 않으므로 계산 서버와 계산 방법 등에 알맞는 CPU 수를 찾는 것이 좋다. (생략 가능, 생략하면 기본값 지정 %nproc=1)

  (4) Route Line : input에서 가장 핵심적인 부분이라고 할 수 있는데 계산종류, 계산방법, 기저함수, 출력정도 등을 지정한다. 이 부분에 대한 설명이 많이 필요하므로 이 글에서는 자세한 설명을 생략한다.

  (5) Blank : 각 구역을 나눠주는 약속으로 생략할 수 없다.

  (6) Title : input에 대한 설명을 적을 수 있는데 blank만 없다면 여러 줄이 되어도 상관없다. 여러 계산을 하다보면 어느 input이 어느 계산인지 헛깔리게되므로 파일 이름과 Title은 가능한 자세히 적는 것이 좋다.

  (7) Blank : 각 구역을 나눠주는 약속으로 생략할 수 없다.

  (8) Charge, Multiplicity : 분자/원자의 Charge와 Multiplicity. Multiplicity는 2S+1로 2×1/2(전자의 스핀양자수) ×홀전자(unpaired electron)의 수+1 이다. 중성 분자의 경우 charge=0, multiplicity=1인 경우가 많은데, 중성 분자인 경우이고 홀전자가 없는 경우 multiplicity는 2×1/2×0+1=1으로 singlet이다. 음이온 분자의 경우 charge=-1이고 홀전자가 1개라면 multiplicity는 2×1/2×1+1=2으로 doublet이다.

  (9) Geometry : 분자/원자의 구조

  (10) Blank : 각 구역을 나눠주는 약속으로 생략할 수 없다.

  (11) Connectivity : 각 원자간의 결합상태를 알려준다. 생략가능하다.

  (12) Blank : 각 구역을 나눠주는 약속으로 생략할 수 없다.마지막 줄의 빈공간(blank)은 생략할 수 있는 경우도 있지만 그렇지 않은 경우도 있으니 습관적으로 마지막에 빈공간을 두는 것이 좋다.


Gaussian input - Z-matrix coordinate를 이용한 Example

%chk=h2co-z.chk                                                           # (1) Checkpoint file
%mem=100mb                                                                 # (2) Memory
%nproc=1                                                                      # (3) Number of CPU
#p opt hf/3-21g geom=connectivity                                    # (4) Route Line
                                                                                    # (5) Blank
h2co Z-matrix                                                                 # (6) Title
                                                                                    # (7) Blank
0 1                                                                                # (8) Charge, Multiplicity
 C                                                                                 # (9) Geometry
 O                  1    1.25840000
 H                  1    1.07000000    2  120.00000000
 H                  1    1.07000000    2  120.00000000    3  180.00000000   
                                                                                    # (10) Blank
 1 4 1.0 3 1.0 2 2.0                                                           # (11) Connecitivity
 2
 3
 4
                                                                                    # (12) Blank

앞의 Catersian coordinate를 이용하는 예제에서 (9) Geometry 부분만 Catersian coordinate에서 Z-matrix coordinate로 바뀌었다. Cartesian coordinate은 분자를 구성하는 각 원자의 종류와 x, y, z coordinate를 포함하고 Z-matrix coordinate은 분자를 구성하는 각 원자의 종류와 연결된 원자들과 그 사이의 각, 면과 면사이의 각 등의 여러 정보를 포함한다.

Z-matrix coordinate 화학 계산

Z-matrix coordinate는 원소(atom), 원자 거리(atom distance), 결합각(bond angle), 이면각(dihedral angle)로 이루어지므로 화학적으로 직관적이다. Cartesian coordinate이 3N coordinate를 갖는데 비해 Z-matrix coordinate는 3N-6 coordinate를 가지므로 효율적이다. (선형 분자의 경우는 3N-5 coordinate를 갖는다.) 선형 분자에 대한 이면각을 정의하기 어려운 단점이 있다. 이런 경우에 dummy atom을 넣어서 그러한 점을 해결할 수 있다. 같은 분자 구조라도 Z-matrix coordinate를 적절하게 만드는 것으로 보다 빠르고 효율적으로 계산을 수행할 수 있다.
사용자 삽입 이미지


원자 거리, 또는 결합 길이(bond distance),는 A와 B 원자 사이의 거리 r을 말한다. 결합각은 A, B, C 원자 사이의 각 Θ를 말한다. 이면각은 A, B, C 원자들이 이루는 평면(면 ABC)과 B, C, D 원자들이 이루는 평면(면 BCD) 사이의 각을 말한다. 즉, ABCD 이면각은 면 ABC에서 면 BCD 사이에 이르는 시계 방향으로의 각을 말한다.

사용자 삽입 이미지


Gaussian input - Z-matrix coordinate를 이용한 Example

%chk=h2co-z.chk                                                           # (1) Checkpoint file
%mem=100mb                                                                 # (2) Memory
%nproc=1                                                                      # (3) Number of CPU
#p opt hf/3-21g geom=connectivity                                    # (4) Route Line
                                                                                    # (5) Blank
h2co Z-matrix                                                                 # (6) Title
                                                                                    # (7) Blank
0 1                                                                                # (8) Charge, Multiplicity
 C                                                                                 # (9) Geometry
 O                  1    1.25840000
 H                  1    1.07000000    2  120.00000000
 H                  1    1.07000000    2  120.00000000    3  180.00000000    
                                                                                    # (10) Blank
 1 4 1.0 3 1.0 2 2.0                                                           # (11) Connecitivity
 2
 3
 4
                                                                                    # (12) Blank

앞의 Catersian coordinate를 이용하는 예제에서 (9) Geometry 부분만 Catersian coordinate에서 Z-matrix coordinate로 바뀌었다. Cartesian coordinate은 분자를 구성하는 각 원자의 종류와 x, y, z coordinate를 포함하고 Z-matrix coordinate은 분자를 구성하는 원소(atom), 결합 거리(bond distance), 결합각(bond angle), 이면각(dihedral angle) 등의 여러 정보를 포함한다.

위의 (9) Geometry를 살펴보면, 1열에는 1번 원자는 C라는 정보가 있다. 한 개의 원자가 있을 때 그 원자의 종류만 명시해주면 그 원자를 완전히 표현할 수 있다. 2열에는 2번 원자는 O이고 1번 원자(C)와의 결합길이가 1.25840000Å이라는 정보가 있다. 2개의 원자가 있을 때 원자의 종류와 함께 둘 사이의 거리가 있으면 그 원자를 완전히 표현할 수 있다. 3열에는 3번 원자는 H이고 1번 원자(C)와의 결합길이가 1.0700000Å이고 3번 원자(H)-1번 원자(C)-2번 원자(O) 사이각이 120.00000000˚라는 정보가 있다. 3 개의 원자가 있을 때 원자의 종류와 함께 다른 원자 사이의 거리와 사이각이 있으면 원자를 완전히 표현할 수 있다. 4열에는 4번 원자는 H이고 1번 원자(C)와의 결합길이가 1.0700000Å이고 4번 원자-1번 원자-2번 원자 사이각이 120.00000000˚이고 4번 원자(H)-1번 원자(C)-2번 원자(O)-3번 원자(H)로 이루어지는 이면각이 180.00000000˚라는 정보가 있다. 4개의 원자가 있을 때 원자의 종류와 함께 다른 원자 사이의 거리와 사이각, 이면각이 있으면 원자를 완전히 표현할 수 있다. 4번째 이상의 원자에 대해서는 원자, 결합거리, 결합각, 이면각이 있어야 해당 원자를 완전히 표현할 수 있다.
Writer profile
author image
-아랑 -
2011/01/26 14:08 2011/01/26 14:08

트랙백 주소 : 이 글에는 트랙백을 보낼 수 없습니다

About

by 서진우
Twitter :@muchunalang

Counter

• Total
: 4164445
• Today
: 383
• Yesterday
: 1075