code72.f90
来自「Fortran 90 and HPF Programs Related to t」· F90 代码 · 共 91 行
F90
91 行
!!!!!!!!!!!!!!!!!!!!!!!!!!! Program 7.2 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! 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 MXWL (N,M,T,V)!! This subroutine assigns velocities according to the Maxwell distribution.! N is the total number of velocity components and M is the total number of! degrees of freedom. T is the system temperature in the reduced units.! Copyright (c) Tao Pang 1997.! IMPLICIT NONE INTEGER, INTENT (IN) :: N,M INTEGER :: I REAL, INTENT (IN) :: T REAL :: V1,V2,EK,VS REAL, INTENT (OUT), DIMENSION (N) :: V!! Assign a Gaussian distribution to each velocity component! DO I = 1, N-1, 2 CALL GRNF (V1,V2) V(I) = V1 V(I+1) = V2 END DO!! Scale the velocity to satisfy the partition theorem! EK = 0.0 DO I = 1, N EK = EK+V(I)*V(I) END DO VS = SQRT(EK/(M*T)) DO I = 1, N V(I) = V(I)/VS END DOEND SUBROUTINE MXWL!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 + =
减小字号Ctrl + -
显示快捷键?