📄 code46.f90
字号:
!!!!!!!!!!!!!!!!!!!!!!!!!!! Program 4.6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! Please Note: !! !! (1) This computer program is written by Tao Pang in conjunction with !! his book, "An Introduction to Computational Physics," published !! by Cambridge University Press in 1997. !! !! (2) No warranties, express or implied, are made for this program. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!MODULE CSEED INTEGER ISEEDEND MODULE CSEED!SUBROUTINE RMSG (N,XS,A)!! Subroutine for generating a random matrix in the Gaussian! orthogonal ensemble with XS as the standard deviation of ! the off-diagonal elements. Copyright (c) Tao Pang 1997.! IMPLICIT NONE INTEGER, INTENT (IN) :: N INTEGER :: I,J REAL, INTENT (IN) :: XS REAL :: G1,G2 REAL, INTENT (OUT), DIMENSION (N,N) :: A! DO I = 1, N CALL GRNF (G1,G2) A(I,I) = SQRT(2.0)*G1*XS END DO! DO I = 1, N DO J = I+1, N CALL GRNF(G1,G2) A(I,J) = G1*XS A(J,I) = A(I,J) END DO END DOEND SUBROUTINE RMSG!SUBROUTINE GRNF (X,Y)!! Two Gaussian random numbers generated from two uniform random! numbers. Copyright (c) Tao Pang 1997.! IMPLICIT NONE REAL, INTENT (OUT) :: X,Y REAL :: PI,R1,R2,R,RANF! PI = 4.0*ATAN(1.0) R1 = -ALOG(1.0-RANF()) R2 = 2.0*PI*RANF() R1 = SQRT(2.0*R1) X = R1*COS(R2) Y = R1*SIN(R2)END SUBROUTINE GRNF!FUNCTION RANF() RESULT (R)!! Uniform random number generator x(n+1) = a*x(n) mod c with! a=7**5 and c = 2**(31)-1. Copyright (c) Tao Pang 1997.! USE CSEED IMPLICIT NONE INTEGER :: IH,IL,IT,IA,IC,IQ,IR DATA IA/16807/,IC/2147483647/,IQ/127773/,IR/2836/ REAL :: R! IH = ISEED/IQ IL = MOD(ISEED,IQ) IT = IA*IL-IR*IH IF(IT.GT.0) THEN ISEED = IT ELSE ISEED = IC+IT END IF R = ISEED/FLOAT(IC)END FUNCTION RANF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -