일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- gnuplot
- 겨울떨개
- 자연 광자학
- 과학
- 나노포토닉스
- 토막잭슨
- Linux
- 광자학
- 3분논문
- 메타표면
- metasurface
- nature photonics
- 메타물질
- 전자기학
- 물리학
- Jackson Electrodynamics
- octopus
- 논문
- TDDFT
- 리눅스
- 학술지
- 플라즈몬
- 자연
- 그래프
- Photolithography
- 양자 플라즈몬
- 자연 나노기술
- 우분투
- 초록빛논문
- impact factor
- Today
- Total
과꾸로
[Octopus] Tutorial 따라하기. 질소원자, 메탄분자 에너지 계산 본문
[Octopus] Tutorial 따라하기. 질소원자, 메탄분자 에너지 계산
Octopus라는 Time-Dependent Density Functional Theory (TDDFT) 계산 프로그램을 설치했었다. (설치후기)
설치하고 나서 Tutorial 첫번째 예제인 수소원자 에너지 준위 구하는 걸 해 보았다. 그리고 잠시 손을 놓고 있다가 다시 마음 먹고 Tutorial을 따라가보기 시작했다. (Octopus Tutorial 링크: http://octopus-code.org/wiki/Tutorial)
Tutorial 2. 질소 원자
링크: http://octopus-code.org/wiki/Tutorial:Nitrogen_atom
1번 예제와 마찬가지로 ground state에서의 에너지 준위를 구하는 문제이다. 원자의 종류만 수소에서 질소로 바뀌었다.
이 예제에서는 Spacing이라는 것에 대해 알려주는데, 그게 일반적인 다른 시뮬레이션의 grid size, mesh 같은 거라고 생각하면 된다. 즉 Spacing이 작으면 계산을 더 촘촘하게 하고, 그만큼 정확하지만 시간이 오래 걸린다는 뜻.
# Spacing: mesh, grid size
bashell 의 environment에 변수를 넣고 loop를 돌리는 방법도 함께 알려준다.
spacing.sh 라는 shell script 파일을 만들고 실행할 때에는 source spacing.sh 를 입력해주면 된다.
계산 결과를 그래프로 그려보았다.
Spacing이 커짐에 따라 오차가 커지는 걸 보여주는 그래프이다. 스페이싱의 단위는 옹스트롱.
Tutorial 3. 메탄 분자
일단 앞에서 했던 것처럼 spacing에 따라 total energy가 어떻게 달라지는지 확인해본다.
Spacing을 0.18 A 보다 작게 줄여도 energy 값이 0.1 eV 보다 차이가 적게 난다. 그러니 0.18 A 으로 계산을 하도록 하자.
이제 계산 공간인 Radius를 바꿔보자. 그러기 위해서 radius.sh 라는 스크립트를 짰다.
#!/bin/bash
echo "#Radius Total energy" > radius.log
list="2.5 3.0 3.5 4.0 4.5 5.0"
export OCT_PARSE_ENV=1
export OCT_Spacing=$(echo 0.18*1.8897261328856432 | bc)
for Radius in $list
do
export OCT_Radius=$(echo $Radius*1.8897261328856432 | bc)
octopus >& out-Radius-$Radius
energy=`grep Total static/info | head -1 | cut -d "=" -f 2`
echo $Radius $energy >> radius.log
rm -rf restart
done
unset OCT_Radius
다 돌리고 나서 생각해보니 unset OCT_Spacing 을 빠뜨렸다는 걸 깨달았다. 뭐 변수 하나 정도 환경에 남겨두어도 별 문제 없겠지. 그리고 저 스크립트에 보이는 1.88972.... 라는 숫자는 흠... 눈치챈 사람이 있을까? 옹스트롱을 보어 반지름으로 바꿔주는 값이다. 즉 1 A = 1.88972 r_Bohr. 문어에서 atomic unit을 기본 단위로 사용하는데 그 때 길이의 단위가 Bohr radius 이다. 반대로 1 r_Borh = 0.52917 A.
그럼 Radius에 따라서 total energy가 어떻게 달라지는지 확인해보자.
Radius가 너무 작으면 계산 결과가 달라진다. 메탄 분자를 충분히 포함할 수 있는 크기로 Radius를 잡아야 하는데 여기서는 그 값이 3.5 A.
차근차근 Tutorial을 따라가고 있는데, Octopus는 참 잘 만든 프로그램이라는 생각이 든다. 체계적이고 설명도 깔끔하다. Optical-response calculations까지 따라가고 나면 내가 하고 싶은 것들을 직접 해볼 수 있을 것 같다.
덧붙여: 리눅스에서 > 와 >> 의 차이를 처음으로 알았다. 헐... ㅡㅡ;; >는 새로 쓰기. >>는 있는 파일 뒤에 이어서 쓰기. 그리고 &> 는 warning 같은 것까지 함께 넣어준다. octopus 돌릴 때는 &>로 하는 것이 좋음.
2017년 9월 25일
과꾸로
'연구자료' 카테고리의 다른 글
[Jmol] 분자구조 그려주는 프로그램 (0) | 2017.10.09 |
---|---|
[Ubuntu] X-windows 설정하기: Putty + Xming, Xforward (0) | 2017.10.06 |
[gnuplot] palette를 이용해 line graph 색깔 정하기 (0) | 2017.09.22 |
[Vim-LaTeX] 윈도우즈에서 Vim으로 LaTeX 사용하기. MikTeX (2) | 2017.09.18 |
[Vim] Windows용 gvim에서 .vimrc 설정: _gvimrc, _vimrc (0) | 2017.09.04 |