Split the file into sections with clear banners
This commit is contained in:
+99
-32
@@ -45,6 +45,9 @@ c
|
||||
#endif
|
||||
|
||||
IMPLICIT NONE
|
||||
C=======================================================================
|
||||
C DECLARATIONS AND GLOBAL STORAGE
|
||||
C=======================================================================
|
||||
CHARACTER*16 TRIMSP_VERSION
|
||||
C These parameters are related to the maximum number of layers MAXNL
|
||||
C and maximum number of points in the depth distribution MAXD
|
||||
@@ -70,6 +73,18 @@ C Maximum number of elements in each layer, was limited to 5.
|
||||
PARAMETER (MAXNL5p2=MAXNL5*MAXNL5*MAXD)
|
||||
PARAMETER (MAXNLm15=(MAXNL-1)*MAXEL)
|
||||
PARAMETER (TRIMSP_VERSION='1.3.2')
|
||||
C
|
||||
C Named integer options used by the old input format. The input
|
||||
C file still contains the numeric values; these PARAMETER names make
|
||||
C comparisons and output descriptions easier to read.
|
||||
C
|
||||
INTEGER POT_KRC,POT_MOLIERE,POT_ZBL
|
||||
INTEGER STOP_LS,STOP_OR,STOP_MIXED,STOP_ICRU49,STOP_ZIEGLER
|
||||
INTEGER IRL_OFF
|
||||
PARAMETER (POT_KRC=1,POT_MOLIERE=2,POT_ZBL=3)
|
||||
PARAMETER (STOP_LS=1,STOP_OR=2,STOP_MIXED=3)
|
||||
PARAMETER (STOP_ICRU49=4,STOP_ZIEGLER=5)
|
||||
PARAMETER (IRL_OFF=0)
|
||||
LOGICAL TEST(64),TESTR(2000),TEST1(2000)
|
||||
LOGICAL EQUAL
|
||||
INTEGER*4 ISRCHFGT,ISRCHFGE,ILLZ
|
||||
@@ -295,6 +310,9 @@ C CHARACTER Variables
|
||||
COMMON /A/ M1,VELC,ZARG
|
||||
COMMON /B/ TI,SHEATH,CALFA
|
||||
|
||||
C=======================================================================
|
||||
C STATIC INITIALISATION
|
||||
C=======================================================================
|
||||
DATA PI/3.14159265358979D0/, ICW/100/, E2/14.399651D0/
|
||||
DATA AB/0.52917725D0/, FP/0.885341377D0/, AN/0.60221367D0/
|
||||
DATA inext/'.inp'/,outext/'.out'/,rgeext/'.rge'/
|
||||
@@ -507,6 +525,9 @@ C RGENAM range output file name, FILEIN//'.rge'
|
||||
C ERRNAM error/log file name, FILEIN//'.err'
|
||||
C=======================================================================
|
||||
|
||||
C=======================================================================
|
||||
C COMMAND LINE AND FILE NAMES
|
||||
C=======================================================================
|
||||
CALL getarg(1, filein)
|
||||
C Require an explicit run basename for input/output naming.
|
||||
if (filein.eq.'') then
|
||||
@@ -527,6 +548,9 @@ C LMAX is maximum number of layers and JMAX is maximum number of
|
||||
C elements per layer.
|
||||
JMAX=MAXEL
|
||||
|
||||
C=======================================================================
|
||||
C READ GUI-GENERATED INPUT FILE
|
||||
C=======================================================================
|
||||
C This part reads the input file (new format).
|
||||
C The JavaScript/Electron frontend writes this sequential block layout,
|
||||
C so the READ order below must stay in sync with CreateInpFile().
|
||||
@@ -589,6 +613,9 @@ C value A-5 of the ziegler tables
|
||||
1359 CLOSE(UNIT=11)
|
||||
|
||||
|
||||
C=======================================================================
|
||||
C OPEN OUTPUT FILES AND START CLOCK
|
||||
C=======================================================================
|
||||
C open statement for output files, removed from line 2449 ff to here
|
||||
OPEN(UNIT=21,FILE=outnam)
|
||||
6001 OPEN(UNIT=22,FILE=rgenam,STATUS='replace')
|
||||
@@ -608,6 +635,9 @@ C Get simulation start time
|
||||
1050 FORMAT(1x,' Start: ',A2,'.',A4,1x,A4,1x,A2
|
||||
& ,':',A2,':',A2)
|
||||
|
||||
C=======================================================================
|
||||
C OUTPUT BINNING CONSTANTS
|
||||
C=======================================================================
|
||||
C SET INTERVAL CONSTANTS FOR OUTPUT
|
||||
DE = 1.D0
|
||||
DA = 3.D0
|
||||
@@ -631,6 +661,9 @@ C SET INTERVAL CONSTANTS FOR OUTPUT
|
||||
DGW = BW/DG
|
||||
DGIK = BW/DGI
|
||||
|
||||
C=======================================================================
|
||||
C TARGET SETUP AND PRECOMPUTED TABLES
|
||||
C=======================================================================
|
||||
C CALCULATION OF CHARGE AND MASS DEPENDENT CONSTANTS
|
||||
PI2=2.D0*PI
|
||||
ABC=AB*FP
|
||||
@@ -704,22 +737,22 @@ C For each layer calculate the following
|
||||
EC1(J) = 4.D0*MU1(J)/((1.D0+MU1(J))*(1.D0+MU1(J)))
|
||||
C KR-C (IPOT=1), MOLIERE (IPOT=2), ZBL POTENTIAL (IPOT=3)
|
||||
A1(J) = CVMGT(CA*ABC*(ZZ(J)**(-1.D0/3.D0)),CA*ABC/(Z1**0.23D0
|
||||
& +ZZ(J)**0.23D0),IPOT.LT.3)
|
||||
& +ZZ(J)**0.23D0),IPOT.LT.POT_ZBL)
|
||||
F1(J) = A1(J)*TM(J)/(Z1*ZZ(J)*E2*(M1+TM(J)))
|
||||
KL1(J) = 1.212D0*Z1**(7.D0/6.D0)*ZZ(J)/ ((Z1**(2.D0/3.D0)+ZZ(J)
|
||||
& **(2.D0/3.D0))**1.5D0*DSQRT(M1))
|
||||
ENDDO
|
||||
IF(IPOT.EQ.1) THEN
|
||||
IF(IPOT.EQ.POT_KRC) THEN
|
||||
C KR-C POTENTIAL (IPOT=1)
|
||||
DO J=1,LJ
|
||||
KOR1(J) = 0.0389205D0*KL1(J)/(PI*A1(J)*A1(J))
|
||||
ENDDO
|
||||
ELSEIF (IPOT.EQ.2) THEN
|
||||
ELSEIF (IPOT.EQ.POT_MOLIERE) THEN
|
||||
C MOLIERE POTENTIAL (IPOT=2)
|
||||
DO J=1,LJ
|
||||
KOR1(J) = 0.045D0*KL1(J)/(PI*A1(J)*A1(J))
|
||||
ENDDO
|
||||
ELSEIF (IPOT.EQ.3) THEN
|
||||
ELSEIF (IPOT.EQ.POT_ZBL) THEN
|
||||
C ZBL POTENTIAL
|
||||
DO J=1,LJ
|
||||
KOR1(J) = 0.0203253D0*KL1(J)/(PI*A1(J)*A1(J))
|
||||
@@ -731,28 +764,29 @@ C ZBL POTENTIAL
|
||||
EC(I,J) = 4.D0*MU(I,J)/((1.D0+MU(I,J))*(1.D0+MU(I,J)))
|
||||
C KR-C , MOLIERE , ZBL POTENTIAL
|
||||
A(I,J)= CVMGT(CA*ABC/(DSQRT(ZZ(I))+DSQRT(ZZ(J)))**(2.D0/3.D0
|
||||
& ),CA*ABC/(ZZ(I)**0.23D0+ZZ(J)**0.23D0),IPOTR.LT.3)
|
||||
& ),CA*ABC/(ZZ(I)**0.23D0+ZZ(J)**0.23D0),
|
||||
& IPOTR.LT.POT_ZBL)
|
||||
C ZBL POTENTIAL
|
||||
F(I,J) = A(I,J)*TM(J)/(ZZ(I)*ZZ(J)*E2*(TM(I)+TM(J)))
|
||||
KL(I,J) = 1.212D0*ZZ(I)**(7.D0/6.D0)*ZZ(J)/ ((ZZ(I)**(2.D0
|
||||
& /3.D0)+ZZ(J)**(2.D0/3.D0))**1.5D0*DSQRT(TM(I)))
|
||||
ENDDO
|
||||
ENDDO
|
||||
IF (IPOTR.EQ.1) THEN
|
||||
IF (IPOTR.EQ.POT_KRC) THEN
|
||||
C KR-C POTENTIAL (IPOTR=1)
|
||||
DO I = 1,LJ
|
||||
DO J = 1,LJ
|
||||
KOR(I,J) = 0.0389205D0*KL(I,J)/(PI*A(I,J)*A(I,J))
|
||||
ENDDO
|
||||
ENDDO
|
||||
ELSEIF (IPOTR.EQ.2) THEN
|
||||
ELSEIF (IPOTR.EQ.POT_MOLIERE) THEN
|
||||
C MOLIERE POTENTIAL (IPOTR=2)
|
||||
DO I = 1,LJ
|
||||
DO J = 1,LJ
|
||||
KOR(I,J) = 0.045D0*KL(I,J)/(PI*A(I,J)*A(I,J))
|
||||
ENDDO
|
||||
ENDDO
|
||||
ELSEIF (IPOTR.EQ.3) THEN
|
||||
ELSEIF (IPOTR.EQ.POT_ZBL) THEN
|
||||
C ZBL POTENTIAL (IPOTR=3)
|
||||
DO I = 1,LJ
|
||||
DO J = 1,LJ
|
||||
@@ -806,6 +840,9 @@ C SET CONSTANT DISTANCES
|
||||
|
||||
IF(E0.GE.0.D0) GO TO 51
|
||||
C
|
||||
C=======================================================================
|
||||
C INITIAL PROJECTILE BATCH
|
||||
C=======================================================================
|
||||
C SET CONSTANTS FOR MAXWELLIAN DISTRIBUTION
|
||||
C
|
||||
TI = -1.D0*E0
|
||||
@@ -957,6 +994,9 @@ C
|
||||
LLL(IV) = JL
|
||||
ENDDO
|
||||
C
|
||||
C=======================================================================
|
||||
C PRIMARY PROJECTILE TRANSPORT LOOP
|
||||
C=======================================================================
|
||||
C PROJECTILE LOOP
|
||||
C Each pass transports one projectile history. The state vectors
|
||||
C X/Y/Z, E, direction cosines, current layer index, etc. are updated
|
||||
@@ -975,6 +1015,9 @@ C
|
||||
ENDDO
|
||||
KK1=KK0
|
||||
C
|
||||
C=======================================================================
|
||||
C PROJECTILE COLLISION CALCULATION
|
||||
C=======================================================================
|
||||
C COLLISION LOOP (INCLUDES WEAK SIMULTANEOUS COLL. FOR KK1.LT.4)
|
||||
C KK controls the treatment of weak simultaneous collisions.
|
||||
C For every active projectile we choose a collision partner, sample an
|
||||
@@ -1013,7 +1056,7 @@ C
|
||||
C
|
||||
C MAGIC (DETERMINATION OF SCATTERING ANGLE : KRYPTON-CARBON POT.)
|
||||
C
|
||||
IF(IPOT.NE.1) GO TO 4101
|
||||
IF(IPOT.NE.POT_KRC) GO TO 4101
|
||||
C KRYPTON-CARBON POTENTIAL
|
||||
|
||||
104 DO IV=IVMIN,IVMAX
|
||||
@@ -1056,7 +1099,7 @@ C GET MAX AND MIN INDEX OF TEST FAILURES
|
||||
ENDDO
|
||||
GO TO 4103
|
||||
|
||||
4101 IF(IPOT.NE.2) GO TO 4102
|
||||
4101 IF(IPOT.NE.POT_MOLIERE) GO TO 4102
|
||||
C MOLIERE POTENTIAL
|
||||
C CALL MAGICMOL(C2(1),S2(1),B(1),R(1),EPS(1),IH1)
|
||||
4104 DO IV=IVMIN,IVMAX
|
||||
@@ -1096,7 +1139,7 @@ C GET MAX AND MIN INDEX OF TEST FAILURES
|
||||
ENDDO
|
||||
GO TO 4103
|
||||
|
||||
4102 IF(IPOT.NE.3) GO TO 4103
|
||||
4102 IF(IPOT.NE.POT_ZBL) GO TO 4103
|
||||
C ZBL POTENTIAL
|
||||
C CALL MAGICZBL(C2(1),S2(1),B(1),R(1),EPS(1),IH1)
|
||||
5104 DO IV=IVMIN,IVMAX
|
||||
@@ -1163,7 +1206,7 @@ C
|
||||
CPSI(IV)=CVMGT(TA2,-TA2,CU.GT.0.D0)
|
||||
SPSI(IV)=DABS(TA)*TA2
|
||||
DEEOR=CVMGT(KOR1(JJJ(IV))*DSQRT(DABS(E(IV)))*EX1(IV),0.D0,
|
||||
& KDEE1.EQ.2.OR.KDEE1.EQ.3)
|
||||
& KDEE1.EQ.STOP_OR.OR.KDEE1.EQ.STOP_MIXED)
|
||||
DENS(IV)=DENS(IV)+DEN(IV)
|
||||
DEES(IV)=DEES(IV)+DEEOR
|
||||
ENDDO
|
||||
@@ -1176,12 +1219,17 @@ C
|
||||
C
|
||||
C END OF COLLISION LOOP
|
||||
C
|
||||
C=======================================================================
|
||||
C PROJECTILE ENERGY LOSS AND DAMAGE ACCUMULATION
|
||||
C=======================================================================
|
||||
C INELASTIC ENERGY LOSS( 5 POSSIBILITIES)
|
||||
C
|
||||
DO IV=1,IH1
|
||||
ASIGT(IV)=(LM(LLL(IV))-TAU(IV)+TAUPSI(IV))*ARHO(LLL(IV))
|
||||
TAUPSI(IV)=TAU(IV)*DABS(CPSI(IV))
|
||||
ENDDO
|
||||
C KDEE1 uses STOP_LS, STOP_OR, STOP_MIXED, STOP_ICRU49,
|
||||
C and STOP_ZIEGLER in this order.
|
||||
GO TO(15,16,17,18,19),KDEE1
|
||||
15 DO IV=1,IH1
|
||||
DEE(IV)=CVMGT(0.D0,KLM1(LLL(IV))*ASIGT(IV)*DSQRT(E(IV)),X(IV)
|
||||
@@ -1321,8 +1369,11 @@ C
|
||||
ENDDO
|
||||
89 CONTINUE
|
||||
|
||||
IF(IRL.EQ.0) GO TO 27
|
||||
IF(IRL.EQ.IRL_OFF) GO TO 27
|
||||
C
|
||||
C=======================================================================
|
||||
C RECOIL GENERATION AND TRANSPORT
|
||||
C=======================================================================
|
||||
C VECTORIZED RECOIL LOOP
|
||||
C
|
||||
C TARGET RECOIL ATOM SECTION
|
||||
@@ -1450,7 +1501,7 @@ C
|
||||
C
|
||||
C MAGIC (DETERMINATION OF SCATTERING ANGLE : KRYPTON-CARBON POT.)
|
||||
C
|
||||
IF(IPOTR.NE.1) GO TO 4201
|
||||
IF(IPOTR.NE.POT_KRC) GO TO 4201
|
||||
C KR-C POTENTIAL
|
||||
C CALL MAGICKRC(C2R(1),S2R(1),BR(1),RR(1),EPSR(1),NREC2)
|
||||
205 DO IV=IVMIN,IVMAX
|
||||
@@ -1494,7 +1545,7 @@ C GET MAX AND MIN INDEX OF TEST FAILURES
|
||||
ENDDO
|
||||
GO TO 4203
|
||||
|
||||
4201 IF(IPOTR.NE.2) GO TO 4202
|
||||
4201 IF(IPOTR.NE.POT_MOLIERE) GO TO 4202
|
||||
C MOLIERE POTENTIAL
|
||||
C CALL MAGICMOL(C2R(1),S2R(1),BR(1),RR(1),EPSR(1),NREC2)
|
||||
4205 DO IV=IVMIN,IVMAX
|
||||
@@ -1537,7 +1588,7 @@ C GET MAX AND MIN INDEX OF TEST FAILURES
|
||||
ENDDO
|
||||
GO TO 4203
|
||||
|
||||
4202 IF(IPOTR.NE.3) GO TO 4203
|
||||
4202 IF(IPOTR.NE.POT_ZBL) GO TO 4203
|
||||
C ZBL POTENTIAL
|
||||
C CALL MAGICZBL(C2R(1),S2R(1),BR(1),RR(1),EPSR(1),NREC2)
|
||||
5205 DO 5206 IV=IVMIN,IVMAX
|
||||
@@ -1589,7 +1640,7 @@ C
|
||||
T1=CVMGT(T(IREC1),0.D0,KKR.EQ.3)
|
||||
TR1=TR1+T1
|
||||
DEEORR=CVMGT(0.D0,KOR(JJR(IREC1,2),JJR(IREC1,1))
|
||||
& * DSQRT(ER(IREC1,2))*EX1R(IREC1),KDEE2.EQ.1)
|
||||
& * DSQRT(ER(IREC1,2))*EX1R(IREC1),KDEE2.EQ.STOP_LS)
|
||||
DEERS(IREC1)=DEERS(IREC1)+DEEORR
|
||||
TAUR(IREC1)=CVMGT(PR(IREC1)*DSQRT(S2R(IREC1)/C2R(IREC1)),0
|
||||
& .D0,KKR.EQ.0)
|
||||
@@ -1645,6 +1696,7 @@ C
|
||||
& *ARHO(LRR(IREC1,2))
|
||||
TAUPSR(IREC1,2)=TAUR(IREC1)*DABS(CPSIR(IREC1,2))
|
||||
ENDDO
|
||||
C KDEE2 uses STOP_LS, STOP_OR, and STOP_MIXED in this order.
|
||||
GO TO(115,116,117),KDEE2
|
||||
115 DO IREC1=1,NREC2
|
||||
DEER(IREC1)=CVMGT(0.D0,KLM(LRR(IREC1,2), JJR(IREC1,2))
|
||||
@@ -1959,6 +2011,9 @@ C
|
||||
27 CONTINUE
|
||||
IF(IH1.EQ.0.AND.IH.EQ.NH) GO TO 140
|
||||
C
|
||||
C=======================================================================
|
||||
C PROJECTILE STOP, BACKSCATTER AND TRANSMISSION TESTS
|
||||
C=======================================================================
|
||||
C PROJECTILE CANDIDATE FOR REFLECTION
|
||||
C
|
||||
DO IV=1,IH1
|
||||
@@ -2408,6 +2463,9 @@ C advanced by the loop above, so skip the trailing range.
|
||||
140 IF(NREC1+NREC2.GT.0) GO TO 83
|
||||
C
|
||||
C
|
||||
C=======================================================================
|
||||
C WRITE MAIN OUTPUT REPORT
|
||||
C=======================================================================
|
||||
C PRINTOUT
|
||||
C
|
||||
C
|
||||
@@ -2506,7 +2564,7 @@ C
|
||||
ENDIF
|
||||
1418 FORMAT(/1X,I3,6H.LAYER,17X,5F6.2,3X,5F7.2,3X,5F6.2)
|
||||
1416 CONTINUE
|
||||
IF(KDEE1.LT.4) GO TO 1421
|
||||
IF(KDEE1.LT.STOP_ICRU49) GO TO 1421
|
||||
WRITE(21,1419)
|
||||
1419 FORMAT(//30X,'CH1',10X,'CH2',10X,'CH3',10X,'CH4',10X,'CH5')
|
||||
DO 1417 I=1,L
|
||||
@@ -2523,23 +2581,23 @@ C
|
||||
1415 FORMAT(/1X,I3,6H.LAYER,17X,5F13.6)
|
||||
1423 FORMAT(/25X,5F13.6)
|
||||
1421 CONTINUE
|
||||
IF(IPOT.EQ.1) DPOT='KR-C POTENTIAL'
|
||||
IF(IPOT.EQ.2) DPOT='mod. MOLIERE '
|
||||
IF(IPOT.EQ.3) DPOT='ZBL POTENTIAL'
|
||||
IF(IPOTR.EQ.1) DPOTR='KR-C POTENTIAL'
|
||||
IF(IPOTR.EQ.2) DPOTR='MOLIERE POTENTIAL'
|
||||
IF(IPOTR.EQ.3) DPOTR='ZBL POTENTIAL'
|
||||
IF(IPOT.EQ.POT_KRC) DPOT='KR-C POTENTIAL'
|
||||
IF(IPOT.EQ.POT_MOLIERE) DPOT='mod. MOLIERE '
|
||||
IF(IPOT.EQ.POT_ZBL) DPOT='ZBL POTENTIAL'
|
||||
IF(IPOTR.EQ.POT_KRC) DPOTR='KR-C POTENTIAL'
|
||||
IF(IPOTR.EQ.POT_MOLIERE) DPOTR='MOLIERE POTENTIAL'
|
||||
IF(IPOTR.EQ.POT_ZBL) DPOTR='ZBL POTENTIAL'
|
||||
WRITE(21,1411) DPOT,DPOTR
|
||||
1411 FORMAT(//7X,'INTERACTION POTENTIAL : PROJECTILE-TARGET : ',A18
|
||||
& ,' TARGET-TARGET : ',A18)
|
||||
IF(KDEE1.EQ.1) DKDEE1='LINDHARD-SCHARFF'
|
||||
IF(KDEE1.EQ.2) DKDEE1='OEN-ROBINSON'
|
||||
IF(KDEE1.EQ.3) DKDEE1='50% LS 50% OR'
|
||||
IF(KDEE1.EQ.4) DKDEE1='AZ nach ICRU49'
|
||||
IF(KDEE1.EQ.5) DKDEE1='ZIEGLER'
|
||||
IF(KDEE2.EQ.1) DKDEE2='LINDHARD-SCHARFF'
|
||||
IF(KDEE2.EQ.2) DKDEE2='OEN-ROBINSON'
|
||||
IF(KDEE2.EQ.3) DKDEE2='50% LS 50% OR'
|
||||
IF(KDEE1.EQ.STOP_LS) DKDEE1='LINDHARD-SCHARFF'
|
||||
IF(KDEE1.EQ.STOP_OR) DKDEE1='OEN-ROBINSON'
|
||||
IF(KDEE1.EQ.STOP_MIXED) DKDEE1='50% LS 50% OR'
|
||||
IF(KDEE1.EQ.STOP_ICRU49) DKDEE1='AZ nach ICRU49'
|
||||
IF(KDEE1.EQ.STOP_ZIEGLER) DKDEE1='ZIEGLER'
|
||||
IF(KDEE2.EQ.STOP_LS) DKDEE2='LINDHARD-SCHARFF'
|
||||
IF(KDEE2.EQ.STOP_OR) DKDEE2='OEN-ROBINSON'
|
||||
IF(KDEE2.EQ.STOP_MIXED) DKDEE2='50% LS 50% OR'
|
||||
WRITE(21,1413) DKDEE1,DKDEE2
|
||||
1413 FORMAT(//7X,'INELASTIC LOSS MODEL : PROJECTILE-TARGET : ',A18
|
||||
& ,' TARGET-TARGET : ',A18)
|
||||
@@ -3569,6 +3627,9 @@ C & I0,3x))
|
||||
C The *.seq file is the compact per-run summary consumed by the GUI for
|
||||
C scan plots (fractions stopped in each layer, backscattering,
|
||||
C transmission, mean depth, etc.). Each run writes its own summary file.
|
||||
C=======================================================================
|
||||
C WRITE SEQUENCE SUMMARY FILE
|
||||
C=======================================================================
|
||||
OPEN(UNIT=33,FILE=seqnam,STATUS='replace')
|
||||
WRITE(33,7802) (chem(k),k=1,NLayers)
|
||||
WRITE(33,7801)E0keV,EsigkeV,ALPHA,ALPHASIG,NH,IIM,IB,IT,tryE
|
||||
@@ -4027,6 +4088,9 @@ C
|
||||
|
||||
|
||||
|
||||
C=======================================================================
|
||||
C UTILITY SUBROUTINES AND FUNCTIONS
|
||||
C=======================================================================
|
||||
SUBROUTINE MOMENTS(FIM0,SEM,THM,FOM,FIM,SIM,SIGMA,DFIM0,DSEM,DTHM,
|
||||
# X1S,X2S,X3S,X4S,X5S,X6S,Y)
|
||||
IMPLICIT NONE
|
||||
@@ -4544,6 +4608,9 @@ C in seconds from beginning of year
|
||||
END
|
||||
|
||||
|
||||
C=======================================================================
|
||||
C RANDOM NUMBER GENERATOR
|
||||
C=======================================================================
|
||||
SUBROUTINE RANLUX(RVEC,LENV)
|
||||
C Subtract-and-borrow random number generator proposed by
|
||||
C Marsaglia and Zaman, implemented by F. James with the name
|
||||
|
||||
Reference in New Issue
Block a user