The Program(in fortran)

Parameter(N=100)

real L,dE,TM,TE,E,M,X,E1,C1,C2,Esq,TEsq,C,AvgE,AvgM,TMsq,Msq

Integer S(0:N+1,0:N+1,0:N+1)

do while (.true.)

read(*,*,end=10)T

do i=0,N+1

do j=0,N+1

do k=0,N+1

S(i,j,k)=1

enddo

enddo

enddo

AJ=1.0

TM=0.0

TE=0.0

TEsq=0.0

TMsq=0.0

R=rand(23123)

do kmc=1,1100

M=0.0

E=0.0

Esq=0.0

Msq=0.0

do i=1, N

do j=1, N

do k=1, N

If (i==1) S(N+1,j,k) = S(i,j,k)

If (i==N) S(0,j,k) = S(i,j,k)

If (j==1) S(i,N+1,k) = S(i,j,k)

If (j==N) S(i,0,k) = S(i,j,k)

If (k==1) S(i,j,N+1) = S(i,j,k)

If (k==N) S(i,j,0) = S(i,j,k)

dE=2*AJ*S(i,j,k)*(S(i+1,j,k)+S(i-1,j,k)+S(i,j+1,k)+S(i,j-1,k)+S(i,j,k+1)+S(i,j,k-1))

if (dE<=0) then

S(i,j,k)=(-1)*S(i,j,k)

else

L=exp(-dE/T)

R=rand()

if (R < L) then

S(i,j,k)=(-1)*S(i,j,k)

endif

endif

enddo

enddo

enddo

if (kmc>1000) then

do i=1, N

do j=1, N

do k=1, N

M=M+S(i,j,k)

E1=-AJ*S(i,j,k)*(S(i+1,j,k)+S(i-1,j,k)+S(i,j+1,k)+S(i,j-1,k)+S(i,j,k+1)+S(i,j,k-1))

E=E+E1

enddo

enddo

enddo

E = E/2.0

Esq= E*E

Msq= M*M

TM=TM+M

TE=TE+E

TESq=TEsq+Esq

TMsq=TMsq+Msq

else

endif

enddo

Vinv = 1./(1.*N*N*N)

C2=TEsq*Vinv*Vinv/100.

AvgE=TE*Vinv/100.

C1=AvgE*AvgE

C=(1./T*T)*((1.*C2)-(1.*C1))

AvgM=Vinv*TM/100.

M2=AvgM*AvgM

M1=TMsq*Vinv*Vinv/100.

X=(1./T)*(M1-M2)

write(7,*)T,AvgE

write(8,*)T,AvgM

write(9,*)T,C

write(10,*)T,X

enddo

10 continue

stop

end 1