편미분방정식의 해를 일정한 시간 간격별로 얻은 데이터로 만든 그래프는 animating gif를 이용하면 시간적으로 변하는 해를 보다 쉽게 표현할 수 있다. 각각의 시간 간격(여기서는 10 * time-step)에서 얻은 데이터 화일의 이름이 gp_0000.data, gp_0010.dat,...,go_2000.dat 처럼 되도록 만든다. 각 데이터 화일은 공간 그리드 위치와 그 지점에서 해의 값 (999개 행 x 2열이고, xrange 가 0:1000 이고, yrange는 -1:1 이다). 

그래픽화일에서  gif를 만드는 프로그램을 이용하려면 각 데이터 화일을 이용해서 일단 그래픽 화일을 만들고, 만들어진 그래픽화일을 모아서  gif를 만든다. gnuplot에서는 이 작업이 일괄작업으로 가능한데, 이를 위해서는 다음과 같이 두 개의 txt 파일을 editor로 만들면 된다.

gp_out.plt--화일;

#We will plot gif animation

reset

set term gif animate

set output "gpacket.gif"                #생성될  gif화일.

n = 2000    #n frames                #마지막 화일번호

set xrange [0:1000]

set yrange [-1:1]

i = 0                                        #시작화일 번호

load "gp_ann.plt"                      #각 데이터 화일을 그리는 명령을 담고 있음

set output


gp_ann.plt--화일

plot sprintf("gp_%04d.dat", i) u 1:2 w l    #데이터 화일의 이름이 gp_####.dat

i = i + 10                                            #화일의 번호가 10씩 증가함.

if (i < n) reread


gnuplot 에서 load gp_out.plt


또는, 하나의 화일로 만들면,

reset

set term gif animate

set output "gpacket.gif"

n = 2000 #n frames

set xrange [0:1000]

set yrange [-1:1]

do for [i = 0: n: 10] {

          plot sprintf("gp_%04d.dat", i) u 1:2 w l

}

set output


결과: potential well 내부에 갇힌 gaussian wavepacket의 time evolution (real part만)을 보여준다.




'Physics' 카테고리의 다른 글

gnuplot을 이용해서 animating gif 생성  (1) 2017.12.07
힘의 크기가 최소가 되는 위치는?  (3) 2017.01.18
같은 값을 갖는 물리량은?  (4) 2017.01.18
오픈카의 속력은?  (0) 2017.01.18
저울의 눈금은?  (0) 2017.01.11
스티로폼이 가라앉는 깊이는?  (0) 2017.01.11
Posted by helloktk