LMDZ
ran1.F
Go to the documentation of this file.
1 !
2 ! $Id: ran1.F 2239 2015-03-23 07:27:30Z emillour $
3 !
4  FUNCTION ran1(IDUM)
5  IMPLICIT NONE
6  REAL RAN1
7  REAL,SAVE :: R(97)
8  REAL,PARAMETER :: RM1=3.8580247e-6,rm2=7.4373773e-6
9  INTEGER,SAVE :: IFF=0
10  integer,save :: ix1,ix2,ix3
11  INTEGER,PARAMETER :: M1=259200,ia1=7141,ic1=54773
12  INTEGER,PARAMETER :: M2=134456,ia2=8121,ic2=28411
13  INTEGER,PARAMETER :: M3=243000,ia3=4561,ic3=51349
14  INTEGER :: IDUM,J
15 
16  IF (idum.LT.0.OR.iff.EQ.0) THEN
17  iff=1
18  ix1=mod(ic1-idum,m1)
19  ix1=mod(ia1*ix1+ic1,m1)
20  ix2=mod(ix1,m2)
21  ix1=mod(ia1*ix1+ic1,m1)
22  ix3=mod(ix1,m3)
23  DO 11 j=1,97
24  ix1=mod(ia1*ix1+ic1,m1)
25  ix2=mod(ia2*ix2+ic2,m2)
26  r(j)=(REAL(ix1)+REAL(ix2)*RM2)*rm1
27 11 CONTINUE
28  idum=1
29  ENDIF
30  ix1=mod(ia1*ix1+ic1,m1)
31  ix2=mod(ia2*ix2+ic2,m2)
32  ix3=mod(ia3*ix3+ic3,m3)
33  j=1+(97*ix3)/m3
34  IF(j.GT.97.OR.j.LT.1) stop 1
35  ran1=r(j)
36  r(j)=(REAL(ix1)+REAL(ix2)*RM2)*rm1
37  RETURN
38  END
real function ran1(IDUM)
Definition: ran1.F:5