File indexing completed on 2025-08-05 08:15:43
0001
0002
0003
0004 FUNCTION KLU(I,J)
0005
0006
0007 COMMON/LUJETS/N,K(9000,5),P(9000,5),V(9000,5)
0008 SAVE /LUJETS/
0009 COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200)
0010 SAVE /LUDAT1/
0011 COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
0012 SAVE /LUDAT2/
0013
0014
0015
0016 KLU=0
0017 IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN
0018 ELSEIF(I.EQ.0.AND.J.EQ.1) THEN
0019 KLU=N
0020 ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN
0021 DO 100 I1=1,N
0022 IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+1
0023 IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+
0024 & LUCHGE(K(I1,2))
0025 100 CONTINUE
0026 ELSEIF(I.EQ.0) THEN
0027
0028
0029 ELSEIF(J.LE.5) THEN
0030 KLU=K(I,J)
0031 ELSEIF(J.EQ.6) THEN
0032 KLU=LUCHGE(K(I,2))
0033
0034
0035 ELSEIF(J.LE.8) THEN
0036 IF(K(I,1).GE.1.AND.K(I,1).LE.10) KLU=1
0037 IF(J.EQ.8) KLU=KLU*K(I,2)
0038 ELSEIF(J.LE.12) THEN
0039 KFA=IABS(K(I,2))
0040 KC=LUCOMP(KFA)
0041 KQ=0
0042 IF(KC.NE.0) KQ=KCHG(KC,2)
0043 IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) KLU=K(I,2)
0044 IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) KLU=K(I,2)
0045 IF(J.EQ.11) KLU=KC
0046 IF(J.EQ.12) KLU=KQ*ISIGN(1,K(I,2))
0047
0048
0049 ELSEIF(J.EQ.13) THEN
0050 KFA=IABS(K(I,2))
0051 KLU=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10)
0052 IF(KFA.LT.10) KLU=KFA
0053 IF(MOD(KFA/1000,10).NE.0) KLU=MOD(KFA/1000,10)
0054 KLU=KLU*ISIGN(1,K(I,2))
0055
0056
0057 ELSEIF(J.LE.16) THEN
0058 I2=I
0059 I1=I
0060 110 KLU=KLU+1
0061 I3=I2
0062 I2=I1
0063 I1=K(I1,3)
0064 IF(I1.GT.0.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110
0065 IF(J.EQ.15) KLU=I2
0066 IF(J.EQ.16) THEN
0067 KLU=0
0068 DO 120 I1=I2+1,I3
0069 120 IF(K(I1,3).EQ.I2.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) KLU=KLU+1
0070 ENDIF
0071
0072
0073 ELSEIF(J.EQ.17) THEN
0074 I1=I
0075 130 KLU=KLU+1
0076 I3=I1
0077 I1=K(I1,3)
0078 I0=MAX(1,I1)
0079 KC=LUCOMP(K(I0,2))
0080 IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN
0081 IF(KLU.EQ.1) KLU=-1
0082 IF(KLU.GT.1) KLU=0
0083 RETURN
0084 ENDIF
0085 IF(KCHG(KC,2).EQ.0) GOTO 130
0086 IF(K(I1,1).NE.12) KLU=0
0087 IF(K(I1,1).NE.12) RETURN
0088 I2=I1
0089 140 I2=I2+1
0090 IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 140
0091 K3M=K(I3-1,3)
0092 IF(K3M.GE.I1.AND.K3M.LE.I2) KLU=0
0093 K3P=K(I3+1,3)
0094 IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) KLU=0
0095
0096
0097 ELSEIF(J.EQ.18) THEN
0098 IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) KLU=MAX(0,K(I,5)-K(I,4)+1)
0099 IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) KLU=0
0100 ELSEIF(J.LE.22) THEN
0101 IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN
0102 IF(J.EQ.19) KLU=MOD(K(I,4)/MSTU(5),MSTU(5))
0103 IF(J.EQ.20) KLU=MOD(K(I,5)/MSTU(5),MSTU(5))
0104 IF(J.EQ.21) KLU=MOD(K(I,4),MSTU(5))
0105 IF(J.EQ.22) KLU=MOD(K(I,5),MSTU(5))
0106 ELSE
0107 ENDIF
0108
0109 RETURN
0110 END