几个fortran程序

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

计算圆周率

REAL R,R1,R2,PI

ISEED=RTC()

N0=0

N=300000

DO I=1,N

R1=RAN(ISEED)

R2=RAN(ISEED)

R=SQRT(R1*R1+R2*R2)

IF(R<1.0)N0=N0+1

END DO

PI=4.0*N0/N

WRITE(*,*)PI

END

一)蒙特卡洛计算生日问题

假设有N个人在一起,各自的生日为365天之一,根据概率理论,与很多人的直觉相反,只需23个人便有大于50%的几率人群中至少有2个人生日相同。

INTEGER M(1:10000), NUMBER1(0:364), NUMBER2

REAL X,Y

ISEED=RTC()

DO J=1, 10000

NUMBER1=0

X=RAN(ISEED)

NUMBER1(0)=INT(365*X+1)

JJJ=1

DO I=1,364

Y=RAN(ISEED)

NUMBER2=INT(365*Y+1)

ETR=COUNT(NUMBER1.EQ.NUMBER2)

IF (ETR= =1) THEN

EXIT

ELSE

JJJ=JJJ+1

M(J)=JJJ

NUMBER1(I)=NUMBER2

END IF

END DO

END DO

DO I=1,10000

IF(M(I).LE.23) SUM=SUM+1

END DO

PRINT *,SUM/10000

END

二)MONTE CARLO SIMULATION OF ONE DIMENSIONAL DIFFUSION 蒙特卡罗计算一维扩散问题

INTEGER X,XX(1:1000,1:1000)

REAL XXM(1:1000)

! X:INSTANTANEOUS POSITION OF ATOM

! XX(J,I):X*X ,J:第几天实验,I:第几步跳跃

! XXM(I): THE MEAN OF XX

WRITE(*,*) "实验天数JMAX,实验次数IMAX"

READ(*,*) JMAX,IMAX

ISEED=RTC()

DO J=1,JMAX !第几天实验

X=0 !!!

DO I=1,IMAX !第几步跳跃

RN=RAN(ISEED)

IF(RN<0.5)THEN

X=X+1

ELSE

X=X-1

END IF

XX(J,I)=X*X

END DO

END DO

OPEN(1,FILE="C:\DIF1.DAT")

DO I=1,IMAX

XXM=0.0

XXM(I)=1.0*SUM(XX(1:JMAX,I))/JMAX !!

WRITE(1,*) I, XXM(I)

END DO

CLOSE(1)

END

三维的!

三)通过该程序了解FORTRAN语言如何画图(通过像素画图)USE MSFLIB

INTEGER XR,YR !在的区域中画一个圆

PARAMETER XR=400,YR=400

INTEGER R, S(1:XR,1:YR)

X0=XR/2 ! 圆心位置X0,YO

Y0=YR/2

R=MIN(X0-10,Y0-10) !圆半径

S=0 !像素的初始状态(颜色)

DO I=1,XR

DO J=1,YR

IF((I-X0)**2+(J-Y0)**2<=R**2)S(I,J)=10

IER=SETCOLOR(S(I,J))

IER=SETPIXEL(I,J)

END DO

END DO

END

四)画一个圆(1、如何选出晶界区域;2、进一步加深对画图的理解)USE MSFLIB

INTEGER XR,YR !在的区域中画一个圆

PARAMETER XR=400,YR=400

INTEGER R, S(0:XR+1,0:YR+1), XN(1:4), YN(1:4), SNS

XN=(/0,0,-1,1/)

YN=(/-1,1,0,0/)

X0=XR/2 ! 圆心位置X0,Y0

Y0=YR/2

R=MIN(X0-10,Y0-10) !圆半径

S=0 !像素的初始状态(颜色)

DO I=1,XR

DO J=1,YR

IF((I-X0)**2+(J-Y0)**2<=R**2)S(I,J)=10

IER=SETCOLOR(S(I,J))

IER=SETPIXEL(I,J)

END DO

END DO

DO I=1,XR !画晶界

DO J=1,YR

NDS=0

DO K=1,4

IF(S(I,J).NE.S(I+XN(K),J+YN(K)))NDS=NDS+1

END DO

IF(NDS>0)THEN

IER=SETCOLOR(9)

ELSE

IER=SETCOLOR(8)

END IF

IER=SETPIXEL(I,J)

END DO

END DO

END

五)MC模拟一个晶粒的缩小

USE MSFLIB

PARAMETER IR=400,JR=400

INTEGER IS(0:IR+1,0:JR+1),TMAX,ISN(1:8),NSTATE,T,NR,IX,IY WRITE(*,*)"PLEASE INPUT THE TIME STEP "

READ(*,*)TMAX

ISEED=RTC()

! 定义圆心和半径

IRC=IR/2

JRC=IR/2

R=MIN(IRC,JRC)-10

! 定义基体和圆晶粒分别为状态1、状态2

IS=1

相关文档
最新文档