27 p. 47 7 7. vs. TDGL 4 Metropolis Monte Carlo equation of continuity s( r, t) t + J( r, t) = (79) J s flux (67) J (79) J( r, t) = k δf δs s( r, t) t = k δf δs (59) TDGL (8) (8) k s t = [ T s s 3 + ξ s ] (82) 7 4 7. ( 6 2) spatial periodic structure TDGL 2 4 x + 4 4 y + 4 r r : 4r : + 6r : 4r : r t ( x) 4 t 7.2 7 5
27 p. 48 #include <stdio.h> #include <stdlib.h> #define NUM_CELL #define NUM_STEP 8 #define NUM_SAVE 2 double state[num_cell]; void initial( ) int icell; for (icell=;icell<num_cell;icell++) state[icell]=.*(rand( )/(double)rand_max-.5); void data_out(int iout) int icell; char filen[]; FILE *filep; sprintf(filen,"t-./%5.5d.dat",iout); printf("%s\n",filen); filep=fopen(filen,"w"); for (icell=;icell<num_cell;icell++) fprintf(filep,"%7.4f\n",state[icell]); fclose(filep); int main() int istep,icell,icell,icell,iout; double temp,st,st,st; double dstate[num_cell]; double xi=.; double dtime=.5; scanf("%lf",&temp); initial(); istep=; data_out(istep); for (istep=;istep<=num_step;istep++) for (icell=;icell<num_cell;icell++) icell=icell-; if (icell==-) icell=num_cell-; icell=icell+; if (icell==num_cell) icell=; st=state[icell]; dstate[icell] = -temp*st - st*st*st + xi*(state[icell]+state[icell]-2*st); for (icell=;icell<num_cell;icell++) icell=icell-; if (icell==-) icell=num_cell-; icell=icell+; if (icell==num_cell) icell=; state[icell] -= dtime*(dstate[icell]+dstate[icell]-2*dstate[icell]); if (istep%num_save==) data_out(istep); return ; List 7.: TDGL Order Parameter s.4.3.2. -. -.2 T= -. 2 2 2 3 5 8 sqrt(-t) Order Parameter s.5 -.5 T= -. 2 2 2 2 25 3 sqrt(-t) -.3 -.4 2 4 6 8 Spatial Coordinate - 2 4 6 8 Spatial Coordinate 7 4: TDGL
27 p. 49 #include <stdio.h> #include <stdlib.h> #include <math.h> #define NUM_CELL #define NUM_STEP 2 #define NUM_SAVE #define dtime.2 // double state[num_cell][num_cell]; FILE *fplot; void initial() //----------------------------------------- int ic,jc; for (ic=;ic<num_cell;ic++) for (jc=;jc<num_cell;jc++) state[ic][jc]=.*(rand()/(double)rand_max-.5); void data_out(int istep) //------------------------------- int ic,jc; char cfile[]; static int flag=; FILE *filep; sprintf(cfile,"%6.6d.dat",istep); filep=fopen(cfile,"w"); for (ic=;ic<num_cell;ic++) for (jc=;jc<num_cell;jc++) fprintf(filep," %7.4f",state[ic][jc]); fprintf(filep,"\n"); fclose(filep); // gnuplot fprintf(fplot,"splot \ %s\ matrix\n",cfile); if (flag==) fprintf(fplot,"pause -\n"); flag=; else fprintf(fplot,"pause.\n"); int main() //--------------------------------------------- int istep,ic,jc,ic,ic,jc,jc; double temp,st,grad; static double dstate[num_cell][num_cell]; static double ddstate[num_cell][num_cell]; double xi=.; //. printf("input T: "); scanf("%lf",&temp); fplot=fopen("tdgl.plt","w"); // gnuplot (Ver 4.6) fprintf(fplot,"set term windows font \"Arial,2\"\n"); fprintf(fplot,"set size square\n"); fprintf(fplot,"unset surface\n"); fprintf(fplot,"set style data pm3d\n"); fprintf(fplot,"set view map\n"); fprintf(fplot,"set pm3d implicit at b\n"); fprintf(fplot,"set palette rgbformulae 33, 3, \n"); fprintf(fplot,"set key at %3d,%3d\n",NUM_CELL,NUM_CELL+); fprintf(fplot,"set cbrange [%6.f:%6.f] noreverse \n",-.2*sqrt(fabs(temp)),.2*sqrt(fabs(temp))); fprintf(fplot,"set size square\n"); initial(); istep=; data_out(istep); for (istep=;istep<=num_step;istep++) for (ic=;ic<num_cell;ic++) for (jc=;jc<num_cell;jc++) st=state[ic][jc]; ic=ic-; if (ic==-) ic=num_cell-; ic=ic+; if (ic==num_cell) ic=; grad =state[ic][jc]+state[ic][jc]-2*st; jc=jc-; if (jc==-) jc=num_cell-; jc=jc+; if (jc==num_cell) jc=; grad+=state[ic][jc]+state[ic][jc]-2*st; dstate[ic][jc]= -temp*st - st*st*st + xi*grad;
熱物性論 27 松本充弘 p. 5 for (ic=;ic<num_cell;ic++) for (jc=;jc<num_cell;jc++) st=dstate[ic][jc]; ic=ic-; if (ic==-) ic=num_cell-; ic=ic+; if (ic==num_cell) ic=; grad =dstate[ic][jc]+dstate[ic][jc]-2*st; jc=jc-; if (jc==-) jc=num_cell-; jc=jc+; if (jc==num_cell) jc=; grad+=dstate[ic][jc]+dstate[ic][jc]-2*st; ddstate[ic][jc]=grad; for (ic=;ic<num_cell;ic++) for (jc=;jc<num_cell;jc++) state[ic][jc] -= dtime*ddstate[ic][jc]; if (istep%num_save==) printf("%7d step\n",istep); data_out(istep); fprintf(fplot,"set out\n"); fclose(fplot); return ; List 7.2: 2次元保存系 TDGL モデルの数値計算プログラム例 やはり gnuplot 4.6 (or later) 用のコマンドファイルを生成する.dat matrix 5.dat matrix.5 9 8 7.5 9 8 7.5 6.5 6 5 4 5 4 -.5 3 -.5 3-2 -.5-2 -.5 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 5.dat matrix.dat matrix.5 9 8 7.5 9 8 7.5 6.5 6 5 4 5 4 -.5 3 -.5 3-2 -.5-2 -.5 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9.dat matrix 2.dat matrix.5 9 8 7.5 9 8 7.5 6.5 6 5 4 5 4 -.5 3 -.5 3-2 -.5-2 -.5 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 図 7 5: 2次元保存系 TDGL 方程式の数値計算 List 7.2 の可視化例 T =. の場合 図 6 3 と比べてみよう
27 p. 5 7.2 spatial autocorrelation function G( r, t) s( r, t) G( r, t) s( r + r, t) s( r, t) s( r, t) s( r, t) (83)... r G G(r, t) [r = G(, t) = ] TDGL List 7.3 7 6 ( ) autocorrelation function V AF (t) = v(t ) v(t + t) t (84) velocity autocorrelation function Brown V AF (t) exp [ mγ ] t m γ γ m s ( r) radial distribution function (85)
27 p. 52 #include <stdio.h> #include <math.h> #define NUM_CELL 2 // #define NUM_COR // #define DEL_COR. // dr int main( ) int i,j,i,j,is,id,jd,dist; int nstep; int num[num_cor]; double sum[num_cor], sum=.; double state[num_cell][num_cell]; char cdum[]; FILE *fdata,*fout; scanf("%d",&nstep); sprintf(cdum,"%6.6d.dat",nstep); fdata=fopen(cdum,"r"); if (fdata==null) printf("file NOT Exist\n"); return -9; sprintf(cdum,"%6.6d.cor",nstep); fout=fopen(cdum,"w"); for (i=;i<num_cell;i++) for (j=;j<num_cell;j++) fscanf(fdata,"%lf",&state[i][j]); fclose(fdata); for (is=;is<num_cor;is++) num[is]=; sum[is]=.; for (i=;i<num_cell;i++) for (j=;j<num_cell;j++) sum+=state[i][j]*state[i][j]; sum/=(num_cell*num_cell); Spatial Correlation.75.5.25 -.2 2D TDGL (Conserved System) -.5 2 4 6 Distance 8 27 64 25 26 343 52 729 33 728 297 7 6: TDGL for (i=;i<num_cell;i++) printf("%3d\n",i); for (j=;j<num_cell;j++) // (i, j) for (i=;i<num_cell;i++) for (j=;j<num_cell;j++) // (i, j) id=i-i; if (id <-NUM_CELL/2) id+=num_cell; // else if (id > NUM_CELL/2) id-=num_cell; jd=j-j; if (jd <-NUM_CELL/2) jd+=num_cell; else if (jd > NUM_CELL/2) jd-=num_cell; dist=sqrt((double)(id*id+jd*jd))/del_cor+.5; // if (dist<num_cor) num[dist]++; // sum[dist] +=state[i][j]*state[i][j]; for (is=;is<num_cor;is++) fprintf(fout,"%7.3f %.7f %d\n",is*del_cor,sum[is]/sum/num[is],num[is]); return ; List 7.3:
27 p. 53 7.3 TDGL T < ( 5) ( 6) 7.3. s = ( disordered state) ordered state s linear mode analysis tool s = δs( r) δs( r) = k δ s k exp[i k r] (86) Fourier TDGL (69) (82) δ s k ( linear analysis ) k δ s k t ( T ξk 2) δ s k k ( 2 T ξk 2) δ s k δ s k T < 7 7 (87) exp[i k r] = k 2 exp[i k r] dx = ax dt x(t) exp[at] () k = δ s k= (t) e T t (88) T k > ξ 2 Non-conserved Conserved Growth Rate - -2.5.5 2 Wave Number k 7 7: k T =. ξ =.
27 p. 54 (2) k 2 k = δ s k (t) e (T ) 2 4ξ t T 2ξ (89) x(a bx) x = a 2b a 2 4b 7.3.2 TDGL s 3 dimension analysis () 7 8 ( ) characteristic length L L t L L t /2 (9) L (2) 7 8 ( ) L t L 2 L L 2 L t /3 (9) 7 8: TDGL