56
TS. Ngô Văn Thanh, Viện Vật lý. Cao học vật lý – chuyên ngành Vật lý lý thuyết.

TS. Ngô Văn Thanh, - iop.vast.ac.vnnvthanh/cours/simulation/Computer... · Xét n lần quan sát đạilượng A một cách độclập Giá trị ... tính giá trị ... Các

Embed Size (px)

Citation preview

TS. Ngô Văn Thanh,Viện Vật lý.

Cao học vật lý – chuyên ngành Vật lý lý thuyết.

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ý

Phase diagrams:

@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ý

Xác định exponent

First order transition:

@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ý

@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ý