SUBROUTINE M1GLAT(KHALF,COLRAD,WGT,WGTCS,RCS2) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: M1GLAT COMPUTE GAUSSIAN LATS AND WEIGHTS C PRGMMR: SELA ORG: W/NMC22 DATE: 79-03-03 C C ABSTRACT: COMPUTE GAUSSIAN LATITUDES AND WEIGHTS. SEE P887, 25.4.29, C HANDBOOK OF MATH FUNCTIONS, ABRAMOWITZ AND STEGUN, FOR DETAILS. C C PROGRAM HISTORY LOG: C 79-03-03 SELA C 88-04-08 PARRISH ADD DOCBLOCK C C INPUT ARGUMENT LIST: C KHALF - NUMBER OF GAUSSIAN LATITUDES TO COMPUTE (POLE TO C - EQUATOR) C C OUTPUT ARGUMENT LIST: C COLRAD - GAUSSIAN COLATITUDES IN RADIANS (FULL PRECISION) C WGT - INTEGRATION WEIGHTS (FULL PRECISION) C WGTCS - WGT/(COS(LAT))**2 C RCS2 - 1/(COS(LAT))**2 C C ATTRIBUTES: C LANGUAGE: CFT77 C MACHINE: CRAY C C$$$ REAL COLRAD(1),WGT(1),WGTCS(1),RCS2(1) EPS=1.E-12 SI=1.E0 K2=2*KHALF RK2=K2 SCALE=2. /(RK2*RK2) K1=K2-1 PI=ATAN(SI)*4.E0 DRADZ=PI/360.E0 RAD=0.E0 DO 1000 K=1,KHALF ITER=0 DRAD=DRADZ 1 CALL M1POLY(K2,RAD,P2) 2 P1 =P2 ITER=ITER+1 RAD=RAD+DRAD CALL M1POLY(K2,RAD,P2) IF(SIGN(SI,P1).EQ.SIGN(SI,P2))GO TO 2 IF(DRAD.LT.EPS)GO TO 3 RAD=RAD-DRAD DRAD=DRAD*0.25E0 GO TO 1 3 CONTINUE COLRAD(K)=RAD PHI=RAD *180.E0/PI CALL M1POLY(K1,RAD,P1) X= COS(RAD) W=SCALE*(1.E0-X*X)/(P1*P1) WGT(K)= W SN= SIN(RAD) W=W/(SN*SN) WGTCS(K)= W RC=1.E0/(SN*SN) RCS2(K)= RC CALL M1POLY(K2,RAD,P1) PRPHI = PHI PRCOL = COLRAD(K) 1000 CONTINUE RETURN END