几个fortran程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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