편미분방정식의 해를 일정한 시간 간격별로 얻은 데이터로 만든 그래프는 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만)을 보여준다.



 

728x90
Posted by helloktk
,