| 1 | SUBROUTINE MSCAT
|
|---|
| 2 | C VERSION 4.00 -- 26 JAN 1986/1900
|
|---|
| 3 | C******************************************************************
|
|---|
| 4 | COMMON/ELECIN/EKELIM,ICOMP,EKE0,EKE1,CMFP0,CMFP1,RANGE0,RANGE1, XR
|
|---|
| 5 | *0,TEFF0,BLCC,XCC,PICMP0(1),PICMP1(1),EICMP0(1),EICMP1(1),MPEEM(1),
|
|---|
| 6 | * ESIG0(500),ESIG1(500),PSIG0(500),PSIG1(500),EDEDX0(500),EDEDX1(50
|
|---|
| 7 | *0),PDEDX0(500),PDEDX1(500),EBR10(500),EBR11(500),PBR10(500),PBR11(
|
|---|
| 8 | *500),PBR20(500),PBR21(500),TMXS0(500),TMXS1(500),CMFPE0(1),CMFPE1(
|
|---|
| 9 | *1),CMFPP0(1),CMFPP1(1),ERANG0(1),ERANG1(1),PRANG0(1),PRANG1(1),CXC
|
|---|
| 10 | *2E0(1),CXC2E1(1),CXC2P0(1),CXC2P1(1),CLXAE0(1),CLXAE1(1),CLXAP0(1)
|
|---|
| 11 | *,CLXAP1(1), THR0(1,1),THR1(1,1),THR2(1,1),THRI0(1,1),THRI1(1,1),TH
|
|---|
| 12 | *RI2(1,1),FSTEP(16),FSQR(16),MSMAP(200), VERT1(1000),VERT2(100,16),
|
|---|
| 13 | *MSTEPS,JRMAX,MXV1, MXV2,NBLC,NRNTH,NRNTHI,BLC0,BLC1,RTHR0,RTHR1,RT
|
|---|
| 14 | *HRI0,RTHRI1
|
|---|
| 15 | *KEEP,EPCONT.
|
|---|
| 16 | COMMON/EPCONT/ EDEP,RATIO,TSTEP,TUSTEP,USTEP,TVSTEP,VSTEP,IDISC,
|
|---|
| 17 | * IROLD,IRNEW,RHOFAC, EOLD,ENEW,EKE,ELKE,BETA2,GLE,
|
|---|
| 18 | * TSCAT,IAUSFL
|
|---|
| 19 | DOUBLE PRECISION EDEP,RATIO
|
|---|
| 20 | REAL TSTEP,TUSTEP,USTEP,TVSTEP,VSTEP,RHOFAC,EOLD,ENEW,
|
|---|
| 21 | * EKE,ELKE,BETA2,GLE,TSCAT
|
|---|
| 22 | INTEGER IDISC,IROLD,IRNEW,IAUSFL(29)
|
|---|
| 23 | *KEND.
|
|---|
| 24 | COMMON/MISC/KMPI,KMPO,DUNIT,NOSCAT,MED(6),RHOR(6),IRAYLR(6)
|
|---|
| 25 | COMMON/MULTS/NG21,B0G21,B1G21,G210(7),G211(7),G212(7), NG22,B0G22,
|
|---|
| 26 | *B1G22,G220(8),G221(8),G222(8), NG31,B0G31,B1G31,G310(11),G311(11),
|
|---|
| 27 | *G312(11), NG32,B0G32,B1G32,G320(25),G321(25),G322(25), NBGB,B0BGB,
|
|---|
| 28 | *B1BGB,BGB0(8),BGB1(8),BGB2(8)
|
|---|
| 29 | *KEEP,RANDPA.
|
|---|
| 30 | COMMON /RANDPA/ FAC,U1,U2,RD,NSEQ,ISEED,KNOR
|
|---|
| 31 | DOUBLE PRECISION FAC,U1,U2
|
|---|
| 32 | REAL RD(3000)
|
|---|
| 33 | INTEGER ISEED(103,10),NSEQ
|
|---|
| 34 | LOGICAL KNOR
|
|---|
| 35 | *KEEP,RUNPAR.
|
|---|
| 36 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
|---|
| 37 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
|---|
| 38 | * MONIOU,MDEBUG,NUCNUC,
|
|---|
| 39 | * CETAPE,
|
|---|
| 40 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
|---|
| 41 | * N1STTR,MDBASE,
|
|---|
| 42 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
|---|
| 43 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
|---|
| 44 | * ,GHEISH,GHESIG
|
|---|
| 45 | COMMON /RUNPAC/ DSN,HOST,USER
|
|---|
| 46 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
|---|
| 47 | REAL STEPFC
|
|---|
| 48 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
|---|
| 49 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
|---|
| 50 | * N1STTR,MDBASE
|
|---|
| 51 | INTEGER CETAPE
|
|---|
| 52 | CHARACTER*79 DSN
|
|---|
| 53 | CHARACTER*20 HOST,USER
|
|---|
| 54 |
|
|---|
| 55 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
|---|
| 56 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
|---|
| 57 | * ,GHEISH,GHESIG
|
|---|
| 58 | *KEEP,STACKE.
|
|---|
| 59 | COMMON/STACKE/ E,TIME,X,Y,Z,U,V,W,DNEAR,IQ,IGEN,IR,IOBS,LPCTE,NP
|
|---|
| 60 | DOUBLE PRECISION E(60),TIME(60)
|
|---|
| 61 | REAL X(60),Y(60),Z(60),U(60),V(60),W(60),DNEAR(60)
|
|---|
| 62 | INTEGER IQ(60),IGEN(60),IR(60),IOBS(60),LPCTE(60),NP
|
|---|
| 63 | *KEND.
|
|---|
| 64 | COMMON/THRESH/RMT2,RMSQ,ESCD2,AP,API,AE,UP,UE,TE,THMOLL
|
|---|
| 65 | COMMON/UPHIIN/SINC0,SINC1,SIN0(20002),SIN1(20002)
|
|---|
| 66 | COMMON/UPHIOT/THETA,SINTHE,COSTHE,SINPHI, COSPHI,PI,TWOPI,PI5D2
|
|---|
| 67 | DOUBLE PRECISION PZERO,PRM,PRMT2,RMI,VC
|
|---|
| 68 | COMMON/USEFUL/PZERO,PRM,PRMT2,RMI,VC,RM,MEDIUM,MEDOLD,IBLOBE,ICALL
|
|---|
| 69 | COMMON/ACLOCK/NCLOCK,JCLOCK
|
|---|
| 70 | C_____IF (NCLOCK.GT.JCLOCK) THEN
|
|---|
| 71 | C______WRITE(MDEBUG,* )' MSCAT: NP=',NP,' IR=',IR(NP),' IOBS=',IOBS(NP)
|
|---|
| 72 | C______CALL AUSGB2
|
|---|
| 73 | C_____END IF
|
|---|
| 74 | VSTEFF=TVSTEP*RHOFAC
|
|---|
| 75 | OMEGA0=BLCC*VSTEFF/BETA2
|
|---|
| 76 | IF ((OMEGA0.LE.1.0)) THEN
|
|---|
| 77 | SINTHE=0.0
|
|---|
| 78 | COSTHE=1.0
|
|---|
| 79 | THETA=0.0
|
|---|
| 80 | NOSCAT=NOSCAT+1
|
|---|
| 81 | RETURN
|
|---|
| 82 | END IF
|
|---|
| 83 | BLC=LOG(OMEGA0)
|
|---|
| 84 | IF (BLC.LE.1.30685) THEN
|
|---|
| 85 | B=1.530394*BLC
|
|---|
| 86 | ELSE
|
|---|
| 87 | IB=B0BGB+BLC*B1BGB
|
|---|
| 88 | IF (IB.GT.NBGB) THEN
|
|---|
| 89 | WRITE(KMPO,940)IB
|
|---|
| 90 | 940 FORMAT('MSCAT: NBGB<IB=',I5)
|
|---|
| 91 | END IF
|
|---|
| 92 | B=BGB0(IB)+BLC*(BGB1(IB)+BLC*BGB2(IB))
|
|---|
| 93 | END IF
|
|---|
| 94 | XR=XCC*SQRT(MAX(0.,VSTEFF*B))/(EOLD*BETA2)
|
|---|
| 95 | IF (B.GT.2.0) THEN
|
|---|
| 96 | BI=1./B
|
|---|
| 97 | BMD=1./(1.0+1.75*BI)
|
|---|
| 98 | BM1=(1.0-2.0*BI)*BMD
|
|---|
| 99 | BM2=(1.0+0.025*BI)*BMD
|
|---|
| 100 | ELSE
|
|---|
| 101 | BI=0.5
|
|---|
| 102 | BM1=(1.-2./B)*0.53333333
|
|---|
| 103 | BM2=0.54
|
|---|
| 104 | END IF
|
|---|
| 105 | 951 CONTINUE
|
|---|
| 106 | CALL RMMAR(RMS1,1,2)
|
|---|
| 107 | IF (RMS1.LE.BM1) THEN
|
|---|
| 108 | CALL RMMAR(RMS2,1,2)
|
|---|
| 109 | IF((RMS2.EQ.0.0))RMS2=1.E-30
|
|---|
| 110 | THR=SQRT(MAX(0.,-LOG(RMS2)))
|
|---|
| 111 | ELSE IF((RMS1.LE.BM2)) THEN
|
|---|
| 112 | CALL RMMAR(RD,3,2)
|
|---|
| 113 | RMS3=RD(1)
|
|---|
| 114 | RMS4=RD(2)
|
|---|
| 115 | RMS5=RD(3)
|
|---|
| 116 | ETA=MAX(RMS3,RMS4)
|
|---|
| 117 | I31=B0G31+ETA*B1G31
|
|---|
| 118 | G31=G310(I31)+ETA*(G311(I31)+ETA*G312(I31))
|
|---|
| 119 | I32=B0G32+ETA*B1G32
|
|---|
| 120 | G32=G320(I32)+ETA*(G321(I32)+ETA*G322(I32))
|
|---|
| 121 | G3=G31+G32*BI
|
|---|
| 122 | IF((RMS5.GT.G3))GO TO951
|
|---|
| 123 | THR=1.0/ETA
|
|---|
| 124 | ELSE
|
|---|
| 125 | CALL RMMAR(RD,2,2)
|
|---|
| 126 | RMS6=RD(1)
|
|---|
| 127 | RMS7=RD(2)
|
|---|
| 128 | THR=RMS6
|
|---|
| 129 | I21=B0G21+THR*B1G21
|
|---|
| 130 | G21=G210(I21)+THR*(G211(I21)+THR*G212(I21))
|
|---|
| 131 | I22=B0G22+THR*B1G22
|
|---|
| 132 | G22=G220(I22)+THR*(G221(I22)+THR*G222(I22))
|
|---|
| 133 | G2=G21+G22*BI
|
|---|
| 134 | IF((RMS7.GT.G2))GO TO951
|
|---|
| 135 | END IF
|
|---|
| 136 | THETA=THR*XR
|
|---|
| 137 | IF((THETA.GE.PI))GO TO951
|
|---|
| 138 | LTHETA=SINC1*THETA+SINC0
|
|---|
| 139 | SINTHE=SIN1(LTHETA)*THETA+SIN0(LTHETA)
|
|---|
| 140 | CALL RMMAR(RMS8,1,2)
|
|---|
| 141 | IF(((RMS8*RMS8*THETA.LE.SINTHE)))GO TO952
|
|---|
| 142 | GO TO 951
|
|---|
| 143 | 952 CONTINUE
|
|---|
| 144 | CTHET=PI5D2-THETA
|
|---|
| 145 | LCTHET=SINC1*CTHET+SINC0
|
|---|
| 146 | COSTHE=SIN1(LCTHET)*CTHET+SIN0(LCTHET)
|
|---|
| 147 | RETURN
|
|---|
| 148 | END
|
|---|