카테고리 없음

이징모델

조지 가모프 2024. 2. 12. 15:16
import matplotlib.pyplot as plt
import numpy as np
pr=open("C:/Users/gmrth/Desktop/ising.txt","r")


r=[]
k=[]
j=[]
q=[]

for i in range(10000):
    a=pr.readline()
    r=a.split()
    k.append(r[0])
    j.append(r[1])
    q.append(r[2])
    



data=[]
intList = list(map(float, q))
for i in range(99):
    data.append(intList[100*i:100*i+99])

    
plt.imshow(data)
plt.show()


program gr

integer sisi(100,100)
double precision kbinv !+++++++++++++++++++++++++++++++++++++++++++++++++++++++ 볼츠만상수 역수

real a !+++++++++++++++++++++++++++++++ 랜덤 변수

real b ,d!++++++++++++++++++++++++++++++++++++ 랜덤 변수

real t!++++++++++++++++++++++++++++++++++=온도


integer i,j,k !++++++++++++++++ 반복문 변수

integer de !+++++++++++++++++++++++++++++= 에너지



kbinv=10**3*10.0**10*10.0**10*0.8


t=0.01


do i=1,100,1
do j=1,100,1

sisi(i,j)=1
end do


end do






do i=1,50000,1


call random_seed()

call random_number(a)

call random_seed()

call random_number(b)

call random_seed()


call random_number(d)

if(99.0>a*100 .and. a*100>2.0 .and. 99.0>b*100 .and. b*100>2.0) then
de=-sisi(int(a*100),int(b*100))*(sisi(int(a*100)-1,int(b*100))&
+sisi(int(a*100+1),int(b*100))&
+sisi(int(a*100),int(b*100-1))+sisi(int(a*100),int(b*100+1)))

endif



if(0>de .and. 99>a*100 .and.a*100>2 .and. 99>b*100 .and. b*100>2) then

sisi(int(a*100),int(b*100))=-sisi(int(a*100),int(b*100))

else if(de>0 .and. 99>a*100 .and.a*100>2 .and. 99>b*100 &
.and. b*100>2 .and. d> exp(-de*kbinv/t)) then
 
 sisi(int(a*100),int(b*100))=-sisi(int(a*100),int(b*100))

else

sisi(int(a*100),int(b*100))=sisi(int(a*100),int(b*100))


end if




end do

open(unit=1,file='ising.txt',status='replace')

do i=1,100,1

do j=1,100,1

write(1,*) i, j, sisi(i,j)


end do


end do


close(1)






end program gr