晶粒随机形核长大12

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

use msflib

parameter ir=400,jr=400,nmax=150

integer is(0:ir+1,0:jr+1),tmax,isn(1:8),nstate,t,ix0,jy0,nr integer igv(0:nmax)

write(*,*) "please input the time step"

read(*,*) tmax

iseed=rtc()

do i=1,nmax

ix0=ir*ran(iseed)+1

jy0=jr*ran(iseed)+1

is(ix0,jy0)=i

end do

is(0,1:jmax)=is(imax,1:jmax)

is(imax+1,1:jmax)=is(1,1:jmax)

is(0:imax,0)=is(0:imax+1,jmax)

is(0:imax+1,jmax+1)=is(0:imax+1,1)

open(1,file="F:\luck.dat")

igv=1

igv(0)=10

do t=1,tmax

iarea=0

do x=1,ir

do y=1,jr

ix=ir*ran(iseed)+1

jy=jr*ran(iseed)+1

isn=(/is(ix-1,jy-1),is(ix-1,jy),is(ix-1,jy+1),is(ix,jy-1), !is(ix,jy+1),is(ix+1,jy-1),is(ix+1,jy),is(ix+1,jy+1)/)

e0=count(isn.ne.is(ix,jy))

if(e0.eq.0) cycle

nr=8*ran(iseed)+1

nstate=isn(nr)

rd=ran(iseed)

e=count(isn.ne.nstate)

ig=igv(isn(nr))-igv(is(ix,jy))

de=ig+e-e0+2.5*rd-1.25

if (de.lt.0.0) is(ix,jy)=nstate

iser=setcolor(mod(is(ix,jy),15)+1)

iser=setpixel(ix,jy)

if(is(ix,jy).ne.0) iarea=iarea+1

end do

end do

write(1,*) t,sqrt(1.0*iarea)

end do

close(1)

end

use msflib

parameter ir=400,jr=400,nmax=150

integer is(0:ir+1,0:jr+1),tmax,isn(1:8),nstate,t,ix0,jy0,nr,ix,jy integer igv(0:nmax)

write(*,*) "please input the time step"

read(*,*) tmax

iseed=rtc()

do i=1,nmax

ix0=ir*ran(iseed)+1

jy0=jr*ran(iseed)+1

is(ix0,jy0)=i

end do

is(0,1:jmax)=is(imax,1:jmax)

is(imax+1,1:jmax)=is(1,1:jmax)

is(0:imax,0)=is(0:imax+1,jmax)

is(0:imax+1,jmax+1)=is(0:imax+1,1)

open(1,file="F:\luck.dat")

igv=1

igv(0)=10

do t=1,tmax

iarea=0

do x=1,ir

do y=1,jr

ix=ir*ran(iseed)+1

jy=jr*ran(iseed)+1

isn=(/is(ix-1,jy-1),is(ix-1,jy),is(ix-1,jy+1),is(ix,jy-1),

!is(ix,jy+1),is(ix+1,jy-1),is(ix+1,jy),is(ix+1,jy+1)/)

e0=count(isn.ne.is(ix,jy))

if(e0.eq.0) cycle

nr=8*ran(iseed)+1

nstate=isn(nr)

rd=ran(iseed)

e=count(isn.ne.nstate)

ig=igv(isn(nr))-igv(is(ix,jy))

de=ig+e-e0+2.5*rd-1.25

if (de.lt.0.0) is(ix,jy)=nstate

i=mod(is(ix,jy),15)

if(i==0) i=i+1

isre=setcolor(i)

isre=setpixel(ix,jy)

if(is(ix,jy).ne.0) iarea=iarea+1

end do

end do

write(1,*) t,sqrt(1.0*iarea) end do

close(1)

end

相关文档
最新文档