| 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 | 
|---|