source: LMDZ5/trunk/libf/dyn3d_common/ran1.F @ 2210

Last change on this file since 2210 was 2197, checked in by Ehouarn Millour, 10 years ago

Added 'implicit none' statements and proper variable definitions where they were missing.
EM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1009 bytes
Line 
1!
2! $Id: ran1.F 2197 2015-02-09 07:13:05Z fhourdin $
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
2711      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
Note: See TracBrowser for help on using the repository browser.