File indexing completed on 2025-08-05 08:15:42
0001
0002
0003
0004
0005
0006 SUBROUTINE HIJCSC(JP,JT)
0007 DIMENSION PSC1(5),PSC2(5)
0008 COMMON/HIJCRDN/YP(3,300),YT(3,300)
0009 SAVE /HIJCRDN/
0010 COMMON/HIPARNT/HIPR1(100),IHPR2(50),HINT1(100),IHNT2(50)
0011 SAVE /HIPARNT/
0012 COMMON/RANSEED/NSEED
0013 SAVE /RANSEED/
0014 COMMON/HISTRNG/NFP(300,15),PP(300,15),NFT(300,15),PT(300,15)
0015 SAVE /HISTRNG/
0016 IF(JP.EQ.0 .OR. JT.EQ.0) GO TO 25
0017 DO 10 I=1,5
0018 PSC1(I)=PP(JP,I)
0019 PSC2(I)=PT(JT,I)
0020 10 CONTINUE
0021 CALL HIJELS(PSC1,PSC2)
0022 DPP1=PSC1(1)-PP(JP,1)
0023 DPP2=PSC1(2)-PP(JP,2)
0024 DPT1=PSC2(1)-PT(JT,1)
0025 DPT2=PSC2(2)-PT(JT,2)
0026 PP(JP,6)=PP(JP,6)+DPP1/2.0
0027 PP(JP,7)=PP(JP,7)+DPP2/2.0
0028 PP(JP,8)=PP(JP,8)+DPP1/2.0
0029 PP(JP,9)=PP(JP,9)+DPP2/2.0
0030 PT(JT,6)=PT(JT,6)+DPT1/2.0
0031 PT(JT,7)=PT(JT,7)+DPT2/2.0
0032 PT(JT,8)=PT(JT,8)+DPT1/2.0
0033 PT(JT,9)=PT(JT,9)+DPT2/2.0
0034 DO 20 I=1,4
0035 PP(JP,I)=PSC1(I)
0036 PT(JT,I)=PSC2(I)
0037 20 CONTINUE
0038 NFP(JP,5)=MAX(1,NFP(JP,5))
0039 NFT(JT,5)=MAX(1,NFT(JT,5))
0040
0041 RETURN
0042
0043
0044 25 IF(JP.EQ.0) GO TO 45
0045 PABS=SQRT(PP(JP,1)**2+PP(JP,2)**2+PP(JP,3)**2)
0046 BX=PP(JP,1)/PABS
0047 BY=PP(JP,2)/PABS
0048 BZ=PP(JP,3)/PABS
0049 DO 40 I=1,IHNT2(1)
0050 IF(I.EQ.JP) GO TO 40
0051 DX=YP(1,I)-YP(1,JP)
0052 DY=YP(2,I)-YP(2,JP)
0053 DZ=YP(3,I)-YP(3,JP)
0054 DIS=DX*BX+DY*BY+DZ*BZ
0055 IF(DIS.LE.0) GO TO 40
0056 BB=DX**2+DY**2+DZ**2-DIS**2
0057 R2=BB*HIPR1(40)/HIPR1(31)/0.1
0058
0059 GS=1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
0060 & *ROMG(R2))**2
0061 GS0=1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
0062 & *ROMG(0.0))**2
0063 IF(ATL_RAN(NSEED).GT.GS/GS0) GO TO 40
0064 DO 30 K=1,5
0065 PSC1(K)=PP(JP,K)
0066 PSC2(K)=PP(I,K)
0067 30 CONTINUE
0068 CALL HIJELS(PSC1,PSC2)
0069 DPP1=PSC1(1)-PP(JP,1)
0070 DPP2=PSC1(2)-PP(JP,2)
0071 DPT1=PSC2(1)-PP(I,1)
0072 DPT2=PSC2(2)-PP(I,2)
0073 PP(JP,6)=PP(JP,6)+DPP1/2.0
0074 PP(JP,7)=PP(JP,7)+DPP2/2.0
0075 PP(JP,8)=PP(JP,8)+DPP1/2.0
0076 PP(JP,9)=PP(JP,9)+DPP2/2.0
0077 PP(I,6)=PP(I,6)+DPT1/2.0
0078 PP(I,7)=PP(I,7)+DPT2/2.0
0079 PP(I,8)=PP(I,8)+DPT1/2.0
0080 PP(I,9)=PP(I,9)+DPT2/2.0
0081 DO 35 K=1,5
0082 PP(JP,K)=PSC1(K)
0083 PP(I,K)=PSC2(K)
0084 35 CONTINUE
0085 NFP(I,5)=MAX(1,NFP(I,5))
0086 GO TO 45
0087 40 CONTINUE
0088 45 IF(JT.EQ.0) GO TO 80
0089 50 PABS=SQRT(PT(JT,1)**2+PT(JT,2)**2+PT(JT,3)**2)
0090 BX=PT(JT,1)/PABS
0091 BY=PT(JT,2)/PABS
0092 BZ=PT(JT,3)/PABS
0093 DO 70 I=1,IHNT2(3)
0094 IF(I.EQ.JT) GO TO 70
0095 DX=YT(1,I)-YT(1,JT)
0096 DY=YT(2,I)-YT(2,JT)
0097 DZ=YT(3,I)-YT(3,JT)
0098 DIS=DX*BX+DY*BY+DZ*BZ
0099 IF(DIS.LE.0) GO TO 70
0100 BB=DX**2+DY**2+DZ**2-DIS**2
0101 R2=BB*HIPR1(40)/HIPR1(31)/0.1
0102
0103 GS=(1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
0104 & *ROMG(R2)))**2
0105 GS0=(1.0-EXP(-(HIPR1(30)+HINT1(11))/HIPR1(31)/2.0
0106 & *ROMG(0.0)))**2
0107 IF(ATL_RAN(NSEED).GT.GS/GS0) GO TO 70
0108 DO 60 K=1,5
0109 PSC1(K)=PT(JT,K)
0110 PSC2(K)=PT(I,K)
0111 60 CONTINUE
0112 CALL HIJELS(PSC1,PSC2)
0113 DPP1=PSC1(1)-PT(JT,1)
0114 DPP2=PSC1(2)-PT(JT,2)
0115 DPT1=PSC2(1)-PT(I,1)
0116 DPT2=PSC2(2)-PT(I,2)
0117 PT(JT,6)=PT(JT,6)+DPP1/2.0
0118 PT(JT,7)=PT(JT,7)+DPP2/2.0
0119 PT(JT,8)=PT(JT,8)+DPP1/2.0
0120 PT(JT,9)=PT(JT,9)+DPP2/2.0
0121 PT(I,6)=PT(I,6)+DPT1/2.0
0122 PT(I,7)=PT(I,7)+DPT2/2.0
0123 PT(I,8)=PT(I,8)+DPT1/2.0
0124 PT(I,9)=PT(I,9)+DPT2/2.0
0125 DO 65 K=1,5
0126 PT(JT,K)=PSC1(K)
0127 PT(I,K)=PSC2(K)
0128 65 CONTINUE
0129 NFT(I,5)=MAX(1,NFT(I,5))
0130 GO TO 80
0131 70 CONTINUE
0132 80 RETURN
0133 END