물론 Gaussian 에 포함된 Document 를 읽으면 설치가 되지만
항상 그렇듯이 아무 문제없이 설치가 한방에 깔끔하게 끝나는 경우는 별로 없었던 듯하다
본인은 몇해 전 연구에 DFT 계산이 필요하여 학교에서 license를 가지고 있는 gaussian 을 설치하려고
맨땅에 헤딩해가며 고생해놓고 그 과정을 기록하지 않았더니 지금에 와서 다시 고생을 하고 있어
google과 각종 포럼에 매달려 힘을 낭비하는 사람들이 줄어들기를 바라는 마음에 이 포스트를 작성한다.
이글은 리눅스는 조금 다뤄봤지만 gaussian 03 linux를 처음 설치하려는 사람을 위한 것이다.
물론 현재 Gaussian 09 가 출시되었지만 가격이 싼 소프트웨어가 아니니
아직 쓰는 사람들이 많이 없는 듯하다.
1. CentOS linux 준비
버전은 4.4 , 5.0 , 5.1 에 설치해봤는데 모두 문제없이 설치 및 실행되었다. 다만 5.0 이상의 경우는 설치 후 몇가지 처리를 해줘야 제대로 실행이 된다.
2. pgi 컴파일러가 필요.
gaussian 설치에는 pgi 포트란 컴파일러가 필요하다 무료로 15일간 사용할 수 있는 trial 버전을 Portland group 에서 배포하지만 본인은 6.2 버전 라이센스가 있어서 이걸로 설치. (6.2는 아주 오래전 버전이다. 2010년 현재 10.3. 버전까지 나와있음)
물론 설치가 끝나면 .bashrc 나 .bash_profile 에 pgi와 관련된 PATH 등록해주고 Licence 파일 경로도 LM_LICENSE_FILE 라는 변수로 등록되어있어야 한다.
즉 which pgf77 치면 위치 잘 나오고 테스트로 포트란 컴파일 하나 해봐서 잘 돌아가는 지 확인.
3. Gaussian 03 설치
의외로 간단하다. 압축풀고 명령어 몇개만 넣으면 끝.
다만 시스템이 64비트가 아닌 경우
util.so: undefined reference to `pthread_kill_other_threads_np’ 는 에러가 발생할 수도 있는데, 커널 2.6이상인 경우 이 thread는 필요 없다고 한다. 따라서 bsd/mdutil.c 에 있는 #ifndef __x86_64 이렇게 써있는 라인을 찾아서 그다음 라인을 /* */ 로 주석처리 해버리면 된다. (대략 1300번째 줄. 릴리즈 버전에 따라 약간씩 다름)
(가우시안 설치할 경로로 WKSSRC.taz 복사해준 뒤)
$ cd /opt/gaussian (설치 경로를 /opt/gaussian 이라고 가정하였다.)
$ zcat WKSSRC.taz | tar -xvf –
(64비트가 아닌 x86의 경우 압축풀고 이 단계에서 mdutil.c 수정)
$ cd g03/bsd
$ gcc machine.c -o gau-machine
$ cd ../../
$ /bin/csh
$ setenv g03root “/opt/gaussian”
$ cd $g03root
$ cd g03
$ ./bsd/install
$ source $g03root/g03/bsd/g03.login
$ bsd/bldg03 >& make.log &
이렇게 하고 나면 /opt/gaussian/g03/ 경로에 exe 파일이 80개 정도 생기면 설치가 완료된 것이다.
하지만 exe 파일이 생성되지 않았다면 make.log 파일을 참조해 에러 코드로부터 원인을 분석해 다시 설치해야한다.
4. 실행
잘 설치가 되고 Document에 써진대로 환경변수들을 등록해줬다면 실행하는데 문제가 없다.
(참고로 환경설정할 때 scratch 경로 지정하는 부분이 있는데 이 디렉토리 미리 만들어 놔야 할것이다.)
쉘에 g03 이라고 칠경우
$ g03
Entering Gaussian System, Link 0=g03
라고 출력된다면 정상이다.
Gaussview 나 Materials Studio 4.3 이상에 포함된 Gaussian 인터페이스에서 input 파일 (.gjf or .com) 을 작성하여
$g03 abcd.gjf abcd.log &
라고 실행하면 된다.
!!! Centos 5.0 이상 에서는 !!!
CentOS 5.0 이상 에서 gaussian 실행시
Erroneous write during file extend. write 832 instead of 8128
Probably out of disk space.
Write error in NtrExt1: No such file or directory
이라고 에러가 뜰경우
관리자 권한으로
echo 0 > /proc/sys/kernel/randomize_va_space
이라고 /etc/rc.local에 써주고, 위 명령어를 그대로 쉘에 입력한다.