Upload
phamkhue
View
218
Download
0
Embed Size (px)
Citation preview
Introduction Đối tượng nghiên cứu:
Quá trình động học của hệ nhiều hạt.
Các bài toán rất phức tạp, với rất nhiều tham số khác nhau.
Quá trình biến đổi trạng thái của hệ là các quá trình ngẫu nhiên (stochastic).
Không thể giải bằng phương pháp giải tích và phương pháp tính số (numerical).
Không thể tìm được nghiệm chính xác của các bài toán.
Phương pháp mô phỏng:
Phương pháp thực nghiệm trên
máy tính.
Là phương pháp trung gian giữa lý
thuyết và thực nghiệm).
Tính toán giá trị trung bình thống kê
của các đại lượng đặc trưng cho hệ
Dựa trên các định luật xác suất thống kê.
@2009, Ngô Văn Thanh - Viện Vật Lý
Monte-Carlo simulation
Hệ nhiều hạt có cấu trúc mạng (lattice).
Nghiên cứu các đại lượng ở trạng thái cân bằng trong không gian cấu hình.
Các cấu hình của hệ được tạo ngẫu nhiên trong quá trình mô.
Các đại lượng được tính trung bình theo cấu hình.
Ứng dụng nghiên cứu các hiện tượng chuyển pha.
Molecular dynamics simulation
Hệ phân tử (nguyên tử).
Nghiên cứu quá trình động học của hệ phụ thuộc vào thời gian.
Giải phương trình chuyển động (2nd Newton‟s law).
Các đại lượng trung bình là các hàm của toạ độ và thời gian.
Ứng dụng nghiên cứu cấu trúc phân tử của hệ.
Hạn chế:
Thời gian mô phỏng phụ thuộc hoàn toàn vào tốc độ của bộ vi xử lý của máy tính cũng như dung lượng của bộ nhớ RAM.
Sai số do thuật toán, sai số thống kê và sai số do độ chính xác của máy tính.
@2009, Ngô Văn Thanh - Viện Vật Lý
Chương.1 Monte-Carlo methods.
1.1. Basic of the Monte Carlo method.
1.2. Algorithms for Monte Carlo simulations
1.3. Applications
@2009, Ngô Văn Thanh - Viện Vật Lý
1.1. Basic of the Monte Carlo method1.1.1. Nhiệt động lực học và cơ học thống kê:
Partition function:
Phép tính tổng lấy trên tất cả các trạng thái khả dĩ của hệ.
Probability:
Free energy:
Internal energy:
Entropy:
@2009, Ngô Văn Thanh - Viện Vật Lý
Fluctuations:
Average energy:
Specific heat (fluctuation of energy):
Magnetization
Susceptibility (fluctuation of magnetization)
@2009, Ngô Văn Thanh - Viện Vật Lý
Hệ trong trường ngoài:
Magnetization:
Probability distribution (pure phase - Gaussian distribution):
Fluctuation of entropy and pressure
@2009, Ngô Văn Thanh - Viện Vật Lý
1.1.2. Phase transtion:
Order parameter:
Đặc trưng cho hầu hết các quá trình chuyển pha.
Pha trật tự (ordered phase): thông số trật tự khác zero.
Pha mất trật tự (disordered phase): thông số trật tự bằng 0.
Thông số trật tự được định nghĩa tuỳ thuộc vào từng loại hệ.
Hệ sắt từ: thông số trật tự chính là độ từ hoá tự phát (spontaneous magnetization).
Hệ liquid-gas: thông số trật tự là sự khác nhau về mật độ giữa pha lỏng và pha khí.
Thông số trật tự có thể là vô hướng hoặc là một vector có nhiều thành phần.
Correlation function:
Với một hệ phi trật tự, đặc tính (tính chất) của vật liệu phụ thuộc vào từng miền con trong hệ và chúng tác động qua lại lẫn nhau giữa các miền.
Hàm tương quan giữa hai điểm trong không gian:
là đại lượng mà chúng ta cần đo
Hàm tương quan không chỉ áp dụng để tính độ tương quan về toạ độ, mà còn có thể áp dụng để tính độ tương quan về thời gian của một đại lượng nào đó.
@2009, Ngô Văn Thanh - Viện Vật Lý
First order and second order:
First order: Đạo hàm bậc nhất của năng lượng tự do theo nhiệt độ là một hàm gián đoạn tại nhiệt độ chuyển pha .
Second order: các đạo hàm bậc nhất là hàm liên tục.
@2009, Ngô Văn Thanh - Viện Vật Lý
Critical exponents:
Khoảng cách rút gọn từ nhiệt độ chuyển pha:
:critical exponents
Correlation length với hệ mạng:
Biểu thức Rushbrooke:
Biểu thức „hyperscaling‟:
D : số chiều của lattice.@2009, Ngô Văn Thanh - Viện Vật Lý
1.1.3. Lý thuyết xác suất:
Xét một tập hợp các sự kiện ngẫu nhiên
Tổng số lần quan sát:
Số lần xuất hiện một sự kiện:
Định nghĩa xác suất
: không bao giờ xuất hiện; : sự kiện chắc chắn xuất hiện.
Nếu hai sự kiện và loại trừ lẫn nhau:
Nếu hai sự kiện và độc lập:
Nếu hai sự kiện và phụ thuộc lẫn nhau:
@2009, Ngô Văn Thanh - Viện Vật Lý
Giá trị trung bình của một đại lượng ngẫu nhiên:
Moment bậc n:
Cumulant :
Xét trường hợp n = 2:
Variance (thăng giáng):
Trung bình của tích hai đại lượng ngẫu nhiên:
Nếu hai đại lượng không phụ thuộc lẫn nhau:
Covariance (hiệp biến):
@2009, Ngô Văn Thanh - Viện Vật Lý
Các hàm phân bố:
Xét bài toán có rất nhiều sự kiện khác nhau,
xác suất xuất hiện hai sự kiện triệt tiêu lẫn nhau:
Giả sử có N phép đo sự xuất hiện các sự kiện độc lập, với xác suất tương ứng là 0
hoặc 1.
Tổng số lần xuất hiện sự kiện:
Số lần xuất hiện sự kiện là n với xác suất bằng 1,
Số lần không xuất hiện các sự kiện là (N - n) với xác suất là 0.
Phân bố nhị thức:
: hệ số nhị thức
Giá trị trung bình và thăng giáng:
@2009, Ngô Văn Thanh - Viện Vật Lý
Xét một quá trình thí nghiệm
Thí nghiệm sẽ phải thực hiện lại nếu chưa tìm thấy đại lượng cần đo (không xuất hiện sự kiện).
Thí nghiệm sẽ kết thúc nếu đã đo được (đã xuất hiện sự kiện).
Phân bố hình học:
Phân bố Poission : xác suất xuất hiện một sự kiện là rất bé:
Phân bố Gaussian : xác suất xuất hiện một sự kiện và số phép thử là rất lớn:
Nếu các biến ngẫu nhiên không phụ thuộc lẫn nhau và có cùng một quy luật phân bố, giá trị trung bình:
Khi thì các biến đó sẽ tuân theo phân bố Gaussian.
@2009, Ngô Văn Thanh - Viện Vật Lý
Statistical errors
Xét đại lượng A tuân theo phân bố Gaussian với giá trị trung bình và độ rộng .
Xét n lần quan sát đại lượng A một cách độc lập
Giá trị chuẩn của
sai số chuẩn:
Xét đại lượng vi phân
Trung bình của đạo hàm bình phương
Sai số:
Đối với trường hợp dynamic correlations
@2009, Ngô Văn Thanh - Viện Vật Lý
1.1.4. Chuỗi Markov và phương trình liên tục (master):
Xét một tập hợp các trạng thái khả dĩ .
Định nghĩa một quá trình ngẫu nhiên dưới dạng bảng các thời điểm rời rạc
Ký hiệu Xt là trạng thái của hệ tại thời điểm t, xác suất để
Markov chains: nếu như xác suất để hệ ở trạng thái chỉ phụ thuộc vào trạng thái ngay trước nó và không phụ thuộc vào các trạng thái khác
Xác suất chuyển trạng thái từ trạng thái i sang trạng thái j:
Các điều kiện:
Xác suất toàn phần
@2009, Ngô Văn Thanh - Viện Vật Lý
Master equation, phương trình liên tục:
Thay
Ta có:
Điều kiện:
Nếu như xác suất chuyển trạng thái là các sự kiện triệt tiêu lẫn nhau
Xác suất toàn phần để hệ chuyển ngược về một trạng thái nào đó từ trạng thái j:
Phương trình liên tục cho một quá trình cân bằng:
tức là:
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2. Algorithms for Monte Carlo simulations1.2.1. Simple sampling Monte Carlo methods:
Các phương pháp lấy tích phân số cho một hàm số:
Phương pháp đơn giản (MC integration)
Phương pháp hit-or-miss – “simple sampling”
Vẽ một hộp (a, b) và (0, y0):
Tạo N điểm ngẫu nhiên trong hộp,
Đếm N0 điểm nằm phía dưới
Giá trị tích phân gần đúng:
Phương pháp “crude”
Tạo N số x ngẫu nhiên, tính giá trị tương ứng
@2009, Ngô Văn Thanh - Viện Vật Lý
Phương pháp intelligent
Phương pháp “control variate”
Xét một hàm khả tích là một hàm phụ thuộc vào biến x
Lấy tích phân độ lệch
trong đó:
Phương pháp “importance sampling”
với là xác suất.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2.2. Bài toán điều kiện biên:
Xét phương trình Laplace
Điều kiện biên:
Chuyển sang phương trình đạo hàm hữu hạn với một số gia bé :
nghiệm có dạng:
Xét mạng các điểm trên mặt phẳng (x, y)
với hằng số mạng là
Xác suất chuyển về điểm (x, y) từ các lân
cận gần nhất sau mỗi bước ngẫu nhiên là ¼.
Giá trị tại biên:
Giá trị trung bình sau N bước:
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2.3. Tạo các quãng đường ngẫu nhiên (random walks):
Tổng quan:
Xét các đoạn đường ngẫu nhiên trên một mạng
Trung bình của bình phương khoảng cách giữa điểm đầu và điểm cuối của đoạn đường ngẫu nhiên sau N bước
a và b là các hằng số phụ thuộc vào mô hình và cấu trúc mạng
là đại lượng exponent làm khớp theo tỷ lệ
Partition function:
là số kết hợp hiệu dụng liên quan đến hằng số
trao đổi.
Nếu tính được các đại lượng
và thì ta có thể tính được các
đại lượng critical exponent
@2009, Ngô Văn Thanh - Viện Vật Lý
Random walks:
Các đoạn đường đi cho phép cắt chéo nhau
“non-reversal random walk”: không cho phép
bước đi thứ (n+1) trở về vị trí ở bước (n-1)
Self-avoiding walks
Không quay lại đoạn đường mà nó đã đi qua
Effective exponents:
với i là một số đủ lớn thỏa mãn
@2009, Ngô Văn Thanh - Viện Vật Lý
1.2.4. Importance sampling Monte-Carlo methods:
Single spin-flip:
Xét mô hình spin Ising
Thuật toán:
Phương trình master cho xác suất để hệ ở trạng thái n tại thời điểm t
là tốc độ chuyển trạng thái
Khi hệ ở trạng thái cân bằng:
Mặt khác
Hiệu năng lượng giữa hai trạng thái
@2009, Ngô Văn Thanh - Viện Vật Lý
Tốc độ chuyển trạng thái Metropolis
Các bước của thuật toán Metropolis importance sampling:
(1) Tạo một trạng thái ban đầu cho hệ
(2) Chọn một nút mạng bất kỳ
(3) Tính độ lệnh năng lượng nếu như spin tại nút mạng đó thay đổi
(4) Tạo một số ngẫu nhiên
(5) Nếu thì chấp nhận sự thay đổi spin của nút đó.
(6) Quay lại bước 3 cho nút mạng kế tiếp.
Monte-Carlo step/site: MCS/site là thời gian để tất cả các spin trong hệ đềuđược xét đến.
Giá trị trung bình của một đại lượng nào đó:
@2009, Ngô Văn Thanh - Viện Vật Lý
Điều kiện biên
Điều kiện biên tuần hoàn và điều kiện biên tuần hoàn xoay vòng.
Spin tại nút mạng thứ N+1 giống như spin tại nút mạng 1
Spin tại nút mạng 0 giống như spin tại nút mạng N
@2009, Ngô Văn Thanh - Viện Vật Lý
Finite size effects:
Second order phase transition:
trong đó, là các hàm tỷ lệ.
Tại điểm chuyển pha : là các hằng số tỷ lệ, suy ra:
Fourth order cumulant
Điểm giao nhau chính là
nhiệt độ chuyển pha.
@2009, Ngô Văn Thanh - Viện Vật Lý
1.3.1 Các mô hình spin Hamiltonian của mô hình spin Ising
Tương tác spin sắt từ (ferromagnetic), chọn
Tương tác spin phản sắt từ, chọn
Áp dụng điều kiện biên tuần hoàn.
Các đại lượng trung bình:
Năng lượng:
Nhiệt dung riêng:
Magnetization:
Susceptibility:
@2009, Ngô Văn Thanh - Viện Vật Lý
Mô hình spin XY
Magnetization:
Tạo trạng thái spin ngẫu nhiên trong quá trình simulation
CALL RANDOM_NUMBER(R2)
PHI=2.D0*3.1415926D0*R2
SXN=DCOS(PHI)
SYN=DSIN(PHI)
@2009, Ngô Văn Thanh - Viện Vật Lý
Mô hình spin Heisenberg:
Magnetization:
Tạo trạng thái spin ngẫu nhiên
trong quá trình simulation
CALL RANDOM_NUMBER(R2)
CALL RANDOM_NUMBER(R3)
PHI = 2.D0*3.1415926D0*R2
SZN = 2.D0*R3-1.D0
SI = DSQRT(1-SZN*SZN)
SXN = SI*DCOS(PHI)
SYN = SI*DSIN(PHI)
@2009, Ngô Văn Thanh - Viện Vật Lý
Mô hình Ising cho mạng simple cubic, tương tác spin loại sắt từ Chương trình mẫu
PROGRAM SP_ISING
IMPLICIT NONE
INTEGER,PARAMETER :: N=10,NT=20
REAL*8,DIMENSION(N,N,NT) :: S
REAL*8,DIMENSION(NT) :: T,E1,E2,EE,M1,M2,CV,SUS
REAL*8 :: TEMP,RAS,RAT,R1,ET,TMIN,TMAX
INTEGER :: I,J,IT
INTEGER :: IP,IM,JP,JM
INTEGER :: IC,NE,NA
*
INTEGER,DIMENSION(3) :: KTIME
LOGICAL :: ISUP, ISAV
*
CALL ITIME(KTIME)
IT=(KTIME(1)+1)*(KTIME(2)+1)*(KTIME(3)+1)
DO I=1,IT
CALL RANDOM_NUMBER(R1)
ENDDO
NE=20000
NA=2*NE
RAS=DBLE(N*N)
RAT=DBLE(NA)@2009, Ngô Văn Thanh - Viện Vật Lý
TMIN=1.D0
TMAX=4.D0
TEMP = (TMAX-TMIN)/DBLE(NT-1)
T(1)=TMIN
DO IT=2,NT
T(IT)=T(IT-1) + TEMP
ENDDO
S=1.D0
E1=0.D0;E2=0.D0;M1=0.D0;M2=0.D0
CV=0.D0;SUS=0.D0
CALL EQP()
CALL AVP()
E1 = E1/RAT
E2 = E2/RAT
M1 = M1/RAT
M2 = M2/RAT
CV = RAS*(E2-E1*E1)/T/T
SUS = RAS*(M2-M1*M1)/T
*
OPEN(UNIT=12,FILE='isc.dat') ! GENERAL DATA
DO IT=1,NT
WRITE(12,12) T(IT),E1(IT),CV(IT),M1(IT),SUS(IT)
ENDDO
12 FORMAT(5(F18.8,1x))
CLOSE(12)
@2009, Ngô Văn Thanh - Viện Vật Lý
!______________________________________________________________________
CONTAINS
!______________________________________________________________________
SUBROUTINE EQP()
ISAV = .FALSE.
DO IC=1,NE
CALL MP()
ENDDO
END SUBROUTINE EQP
!______________________________________________________________________
SUBROUTINE AVP()
ISAV = .TRUE.
CALL ETOT()
DO IC=1,NA
CALL MP()
DO IT=1,NT
TEMP = EE(IT)/RAS
E1(IT) = E1(IT)+TEMP
E2(IT) = E2(IT)+TEMP*TEMP
TEMP = SUM(S(1:N,1:N,IT))/RAS
M1(IT) = M1(IT) + DABS(TEMP)
M2(IT) = M2(IT) + TEMP*TEMP
ENDDO
ENDDO
END SUBROUTINE AVP
@2009, Ngô Văn Thanh - Viện Vật Lý
SUBROUTINE MP()
DO J=1,N
JP=J+1;JM=J-1
IF (J==1) JM = N
IF (J==N) JP = 1
DO I=1,N
IP=I+1;IM=I-1
IF (I==1) IM = N
IF (I==N) IP = 1
DO IT=1,NT
CALL RANDOM_NUMBER(R1)
TEMP = -S(I,J,IT)*(S(IP,J,IT)+S(IM,J,IT)
& + S(I,JP,IT)+S(I,JM,IT))
ET = DEXP(2.D0*TEMP/T(IT))
IF (ET > R1) THEN
S(I,J,IT)=-S(I,J,IT)
IF (ISAV) EE(IT)=EE(IT)-2.D0*TEMP
ENDIF
ENDDO
ENDDO
ENDDO
END SUBROUTINE MP
@2009, Ngô Văn Thanh - Viện Vật Lý
SUBROUTINE ETOT()
*
EE=0.D0
DO J=1,N
JP=J+1;JM=J-1
IF (J==1) JM = N
IF (J==N) JP = 1
DO I=1,N
IP=I+1;IM=I-1
IF (I==1) IM = N
IF (I==N) IP = 1
DO IT=1,NT
TEMP = -S(I,J,IT)*(S(IP,J,IT)+S(IM,J,IT)
& + S(I,JP,IT)+S(I,JM,IT))
EE(IT) = EE(IT) + TEMP
ENDDO
ENDDO
ENDDO
EE=0.5D0*EE
END SUBROUTINE ETOT
@2009, Ngô Văn Thanh - Viện Vật Lý
@2009, Ngô Văn Thanh - Viện Vật Lý
-2
-1.5
-1
-0.5
1 1.5 2 2.5 3 3.5 40
0.2
0.4
0.6
0.8
1
1.2
1.4
1 1.5 2 2.5 3 3.5 4
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1 1.5 2 2.5 3 3.5 4
0
0.5
1
1.5
2
2.5
3
1 1.5 2 2.5 3 3.5 4
Mô hình Ising cho mạng triangular, tương tác spin loại sắt từ
Chương trình mẫu
Phần tính năng lượng tương tác có thêm hai bonds
TEMP = -S(I,J,IT)*(S(IP,J,IT)+S(IM,J,IT)
& + S(I,JP,IT)+S(I,JM,IT)
& + S(IP,JM,IT)+S(IM,JP,IT))
@2009, Ngô Văn Thanh - Viện Vật Lý
1.3.2. Reweighting methods:
Hàm phân bố năng lượng tại nhiệt độ
Là mật độ trạng thái (số cấu hình mà hệ có năng lượng E và độ từ hoá M)
Single histogram: Tại nhiệt độ
Histogram của hệ ở trạng thái cân bằng:
Phân bố xác suất sau N phép đo:
Suy ra:
Phân bố xác suất tại nhiệt độ K:
Các đại lượng vật lý
@2009, Ngô Văn Thanh - Viện Vật Lý
Thuật toán tính logarithm của một tổng các số mũ exp
Xét hai số x1 và x2, giả sử x1 > x2.
@2009, Ngô Văn Thanh - Viện Vật Lý
Multiple histogram:
Phương pháp mở rộng cho phương pháp single histogram
Giả sử ta thực hiện n lần mô phỏng tại các nhiệt độ khác nhau
Với mỗi một mô phỏng:
Số cấu hình :
Histogram:
Phân bố xác suất:
Trong đó hệ số fj được xác định bằng phương pháp giải tự hợp
Các đại lượng vật lý
Partition function:
@2009, Ngô Văn Thanh - Viện Vật Lý
Flat histogram (Wang-Landau algorithm):
Phương pháp mới, dựa trên việc tính hàm mật độ trạng thái.
Partition function
Xác suất chuyển trạng thái
Trong quá trình mô phỏng, nếu như sự thay đổi trạng thái được chấp nhận: cập nhật giá trị của mật độ trạng thái và Histogram
Nếu như histogram thoả mãn điều kiện phẳng (flat), giảm hệ số modification và reset histogram:
Điều kiện FLAT
Quá trình mô phỏng kết thúc khi hệ số modification
@2009, Ngô Văn Thanh - Viện Vật Lý
Wang-Landau algorithm scheme:
1) Đặt ; choose a modification factor
2) Khởi tạo trạng thái ban đầu
3) Chọn nút mạng thứ i, tính năng lượng E1
4) Thử tạo một trạng thái mới, tính năng lượng cho trạng thái này E2
5) Tính tỉ số DOS
6) Tạo một số ngẫu nhiên
7) nếu , cho phép thay đổi trạng thái
8) Cập nhật giá trị
9) Nếu như histogram chưa "flat", lặp lại từ bước (3)
10) Nếu histogram “flat”, giảm hệ số modification
11) Lặp lại các bước từ (3)–(10) cho đến khi
Các đại lượng vật lý
Partition function
@2009, Ngô Văn Thanh - Viện Vật Lý
Single Histogram cho mô hình Ising mạng simple cubic Chương trình mẫu
PROGRAM HG_ISING
IMPLICIT NONE
INTEGER,PARAMETER :: N=10
REAL*8,DIMENSION(N,N) :: S
REAL*8,ALLOCATABLE,DIMENSION(:) :: E1,E2,M1,M2,PE
REAL*8 :: TEMP,RAS,R1,ET,T,EE,EMIN,EMAX,DTM
INTEGER :: I,J,IB,NBIN
INTEGER :: IP,IM,JP,JM
INTEGER :: IC,NE,NA
INTEGER,DIMENSION(3) :: KTIME
LOGICAL :: ISUP,IBIN
CALL ITIME(KTIME)
J=(KTIME(1)+1)*(KTIME(2)+1)*(KTIME(3)+1)
DO I=1,J
CALL RANDOM_NUMBER(R1)
ENDDO
T=2.45D0
DTM=4.D0
NE=500000
NA=2*NE
RAS=DBLE(N*N)
EMIN = 0.D0
EMAX = -RAS*6.D0@2009, Ngô Văn Thanh - Viện Vật Lý
CALL RANDOM_NUMBER(S)
DO J=1,N
DO I=1,N
IF (S(I,J) > 0.5D0) THEN
S(I,J)=1.D0
ELSE
S(I,J)=-1.D0
ENDIF
ENDDO
ENDDO
*
CALL ETOT()
CALL EQP()
*
NBIN=NINT((EMAX-EMIN)/DTM)+1
ALLOCATE(E1(NBIN),E2(NBIN),M1(NBIN),M2(NBIN),PE(NBIN))
PE=0.D0;E1=0.D0;E2=0.D0;M1=0.D0;M2=0.D0
E1(1)=EMIN ! E BIN
DO I=2,NBIN
E1(I)=E1(I-1)+DTM
ENDDO
E2=E1*E1
CALL AVP()
@2009, Ngô Văn Thanh - Viện Vật Lý
*
OPEN(UNIT=12,FILE='hgisc.dat') ! GENERAL DATA
I=0
DO IB=1,NBIN
IF(PE(IB) > 0.D0) THEN
I=I+1
M1(IB)=M1(IB)/PE(IB)
M2(IB)=M2(IB)/PE(IB)
WRITE(12,12) PE(IB),E1(IB),E2(IB),M1(IB),M2(IB)
ENDIF
ENDDO
12 FORMAT(5(F18.8,1x))
CLOSE(12)
OPEN(UNIT=15,FILE='hgisc.info') ! LATTICE INFO.
WRITE(15,5) T,N,I
5 FORMAT((F10.6,1X),2(I6))
CLOSE(15)
*
DEALLOCATE(E1,E2,M1,M2,PE)
!______________________________________________________________________
!
CONTAINS
@2009, Ngô Văn Thanh - Viện Vật Lý
!
* SUBROUTINE FOR EQUILIBRIUM PROCESS
!______________________________________________________________________
!
SUBROUTINE EQP()
*
DO IC=1,NE
CALL MP()
IF (EE <0.D0) EMAX=MAX(EE,EMAX)
EMIN=MIN(EE,EMIN)
ENDDO
*
END SUBROUTINE EQP
@2009, Ngô Văn Thanh - Viện Vật Lý
!
* SUBROUTINE FOR AVERAGING PROCESS
!______________________________________________________________________
!
SUBROUTINE AVP()
*
CALL ETOT()
DO IC=1,NA
CALL MP()
IB=NINT((EE-EMIN)/DTM)+1
IBIN=(IB > 0).AND.(IB <= NBIN)
IF (IBIN) THEN
PE(IB)= PE(IB)+ 1.D0 ! PROBABILITIES
TEMP = SUM(S(1:N,1:N))/RAS
M1(IB)= M1(IB)+DABS(TEMP)
M2(IB)= M2(IB)+TEMP*TEMP
ENDIF
ENDDO
*
END SUBROUTINE AVP
@2009, Ngô Văn Thanh - Viện Vật Lý
* SUBROUTINE MC SIMULATION USING METROPOLIS ALGORITHM
!______________________________________________________________________
SUBROUTINE MP()
DO J=1,N
JP=J+1;JM=J-1
IF (J==1) JM = N
IF (J==N) JP = 1
DO I=1,N
IP=I+1;IM=I-1
IF (I==1) IM = N
IF (I==N) IP = 1
CALL RANDOM_NUMBER(R1)
TEMP = -S(I,J)*(S(IP,J)+S(IM,J)+ S(I,JP)+S(I,JM))
ET = DEXP(2.D0*TEMP/T)
IF (ET > R1) THEN
S(I,J)=-S(I,J)
EE=EE-2.D0*TEMP
ENDIF
ENDDO
ENDDO
END SUBROUTINE MP
@2009, Ngô Văn Thanh - Viện Vật Lý
* SUBROUTINE CALCULATING TOTAL ENERGY
!______________________________________________________________________
!
SUBROUTINE ETOT()
*
EE=0.D0
DO J=1,N
JP=J+1;JM=J-1
IF (J==1) JM = N
IF (J==N) JP = 1
DO I=1,N
IP=I+1;IM=I-1
IF (I==1) IM = N
IF (I==N) IP = 1
TEMP = -S(I,J)*(S(IP,J)+S(IM,J)+ S(I,JP)+S(I,JM))
EE = EE + TEMP
ENDDO
ENDDO
EE=0.5D0*EE
END SUBROUTINE ETOT
!______________________________________________________________________
!
END PROGRAM HG_ISING
@2009, Ngô Văn Thanh - Viện Vật Lý
Kết quả:
@2009, Ngô Văn Thanh - Viện Vật Lý
13993 -172 29584 0.90879726 0.82628932
20513 -168 28224 0.89698533 0.80522863
22835 -164 26896 0.87663849 0.76938769
28236 -160 25600 0.86067927 0.74207362
31372 -156 24336 0.84004208 0.70741242
36522 -152 23104 0.81872406 0.67285973
39340 -148 21904 0.79592679 0.63694133
43049 -144 20736 0.77079328 0.59919587
45520 -140 19600 0.74334139 0.55951591
48153 -136 18496 0.71195356 0.51698839
49870 -132 17424 0.67879647 0.4742702
51629 -128 16384 0.64004881 0.428144
53017 -124 15376 0.59959258 0.3828573
Chương trình tính các đại lượng trung bình từ Histogram dataPROGRAM FHEXP
IMPLICIT NONE
INTEGER,PARAMETER :: NT=200
REAL*8,DIMENSION(NT) :: T
REAL*8 :: T0,T1,T2,RAS
INTEGER :: N,IB,IT,NBIN
T1=2.D0
T2=3.D0
OPEN(UNIT=11,FILE='hgisc.info')
READ(11,*) T0,N,NBIN
CLOSE(11)
RAS=DBLE(N*N)
DO IT=1,NT ! TEMPERATURE ARRAY
T(IT)=T1+DBLE((IT-1))*(T2-T1)/DBLE(NT)
ENDDO
CALL REWEIT() ! REWEITING
!______________________________________________________________________
!
CONTAINS ! LIST OF SUBROUTINE & FUNCTION
!______________________________________________________________________@2009, Ngô Văn Thanh - Viện Vật Lý
SUBROUTINE REWEIT
*
REAL*8,DIMENSION(NT) :: E,E2,CV,ST1,ST2,SUS
REAL*8,DIMENSION(NBIN) :: PE,ED,EI2,STI1,STI2,LE,EX
REAL*8 :: Z,TT
REAL*8 :: CVM,SUTM
OPEN(UNIT=12,FILE='hgisc.dat')
DO IB=1,NBIN
READ(12,*) PE(IB),ED(IB),EI2(IB),STI1(IB),STI2(IB)
ENDDO
CLOSE(12)
PE=DLOG(PE)
EI2=EI2/RAS/RAS
LE = DLOG(-ED);EI2=DLOG(EI2)
STI1=DLOG(STI1);STI2=DLOG(STI2)
DO IT=1,NT
TT=(1.D0/T(IT)-1.D0/T0)
EX=PE-ED*TT
Z = LSUM(EX)
E(IT) = LSUM(LE +EX);E(IT) =-DEXP(E(IT)-Z)
E2(IT)= LSUM(EI2+EX);E2(IT)= DEXP(E2(IT)-Z)
ST1(IT)=LSUM(STI1+EX);ST1(IT)=DEXP(ST1(IT)-Z)
ST2(IT)=LSUM(STI2+EX);ST2(IT)=DEXP(ST2(IT)-Z)
ENDDO
@2009, Ngô Văn Thanh - Viện Vật Lý
E=E/RAS
CV=RAS*(E2-E**2)/(T**2) ! SPECIFIC HEAT
SUS=RAS*(ST2-ST1**2)/T
OPEN(UNIT=13,FILE='hg_anl.dat')
DO IT=1,NT
WRITE(13,13) T(IT),E(IT),CV(IT),ST1(IT),SUS(IT)
ENDDO
13 FORMAT(5(F16.8,1X))
CLOSE(13)
*
CVM=T(MAXLOC(CV,DIM=1));SUTM=T(MAXLOC(SUS,DIM=1))
WRITE(6,1)CVM,SUTM
*
CVM=MAXVAL(CV);SUTM=MAXVAL(SUS)
WRITE(6,1)CVM,SUTM
1 FORMAT(4(F14.8))
*
END SUBROUTINE REWEIT
@2009, Ngô Văn Thanh - Viện Vật Lý
!______________________________________________________________________
!
* CALCULATING LOG of SUM
* log(x1+x2)=l_1+log(sum(exp(l_n-l_1))
!______________________________________________________________________
!
REAL*8 FUNCTION LSUM(ASUM)
*
IMPLICIT NONE
REAL*8,DIMENSION(:),INTENT(IN) :: ASUM
REAL*8 :: AMAX
*
AMAX = MAXVAL(ASUM)
LSUM = AMAX+DLOG(SUM(DEXP(ASUM-AMAX)))
*
END FUNCTION LSUM
!______________________________________________________________________
!
END PROGRAM FHEXP ! THE END OF PROGRAM
@2009, Ngô Văn Thanh - Viện Vật Lý