SUBROUTINE SATCOV(JCAP,NLATH,NLON,CSHAT, * RLATS,PLN,WGTS,TRIGS,IFAX,RLKM,LMAD) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: SATCOV SET UP ERROR FOR SATEMS C PRGMMR: PARRISH ORG: W/NMC22 DATE: 90-10-06 C C ABSTRACT: SET UP GRID ERROR AND CORRELATION SPECTRUM FOR SATEMS C (START WITH TRANSFORM OF SOAR FUNCTION) C C PROGRAM HISTORY LOG: C 90-10-06 PARRISH C C INPUT ARGUMENT LIST: C JCAP - TRIANGULAR TRUNCATION C NLATH - NUMBER OF GAUSSIAN LATS IN ONE HEMISPHERE C NLON - NUMBER OF LONGITUDES C AP,BP - RECURSION CONSTANTS FOR SPHERICAL HARMONICS C SLAT - SIN(GAUSSIAN LATITUDES) C PE0 - STARTING FUNCTIONS FOR SPHERICAL HARMONICS C WGTS - GAUSSIAN INTEGRATION WEIGHTS C TRIGS,IFAX - USED BY FFT C RLATS - GRID LATITUDES (RADIANS) C RLKM - SAT ERROR CORRELATION LENGTH SCALE C LMIX,LASTMIX,LPAIRS - USED FOR MULTITASKING C C OUTPUT ARGUMENT LIST: C CSHAT - SAT. CORRELATION FUNCTION ARRAY C C ATTRIBUTES: C LANGUAGE: CFT77 C MACHINE: CRAY YMP C C$$$ C C-CRA DIMENSION LMAD(0:JCAP,0:JCAP) C-CRA REAL CSHAT((JCAP+1)*(JCAP+2)) C-CRA REAL CSN(0:JCAP),CST(0:JCAP) C-CRA REAL PLN((JCAP+1)*(JCAP+2),NLATH) C-CRA REAL WGTS(NLATH*2),TRIGS(2*NLON),RLATS(2*NLATH) C-CRA REAL CGRID(2*NLATH+1,NLON+2) C-CRA INTEGER IFAX(10) DIMENSION LMAD(0:62,0:62) REAL CSHAT((62+1)*(62+2)) REAL CSN(0:62),CST(0:62) REAL PLN((62+1)*(62+2),48) REAL WGTS(48*2),TRIGS(2*192),RLATS(2*48) REAL CGRID(2*48+1,192+2) INTEGER IFAX(10) C-------- C RLKM=400. C-------- RLKM IS LENGTH PARAMETER FOR SOAR (IN KM) NC=(JCAP+1)*(JCAP+2) RL=RLKM/6370. IF(RLKM .EQ. 0.)THEN C-CRA CSN=1. C REAL CSN(0:JCAP),CST(0:JCAP) DO ITMP=0,JCAP CSN(ITMP)=1. ENDDO ELSE C-------- RL IS LENGTH IN RADIANS C-------- C-------- COMPUTE CORRELATION FUNCTION ON GRID. C-------- PIH=2.*ATAN(1.) DO J=1,NLATH*2 ARG=(PIH-RLATS(J))/RL CORSAT=(1.+ARG)*EXP(-ARG) C PRINT *,J,CORSAT DO I=1,NLON CGRID(J,I)=CORSAT END DO END DO CALL G2S0(CSHAT,CGRID,JCAP,NLON,NLATH,WGTS,PLN,TRIGS,IFAX) C-------- C-------- BEYOND WAVE 30, ERROR IS INFINITE C-------- DO N=31,JCAP CSHAT(LMAD(N,0))=CSHAT(LMAD(30,0)) END DO DO N=0,JCAP CSN(N)=SQRT(2./(2.*N+1.))*CSHAT(LMAD(N,0)) CSN(N)=MAX(CSN(N),5.E-4*CSN(0)) END DO END IF WRITE(6,110)RLKM,JCAP 110 FORMAT(' SATEM ERROR COVAR SPECTRUM FOLLOWS FOR L=',F5.0, * ' KM, JCAP=',I3) WRITE(6,120)(CSN(N),N=0,JCAP) 120 FORMAT(1H ,5E12.4) DO M=0,JCAP DO L=0,JCAP-M CSHAT(LMAD(M,L))=CSN(M+L) CSHAT(LMAD(M,L)+1)=CSN(M+L) END DO END DO C-------- C-------- MULTIPLY L=0 PART OF SPECTRUM BY 2 C-------- DO I=1,NC IF(CSHAT(I) .NE. 0.)CSHAT(I)=1./CSHAT(I) END DO DO M=0,JCAP CSHAT(LMAD(M,0))=2.*CSHAT(LMAD(M,0)) END DO C-------- C-------- COMPUTE DIAGONAL FOR NORMALIZATION C-------- CALL S2MG2X(CSHAT,CGRID,JCAP,NLATH,NLON,PLN) RNMAX=-1.E12 RNMIN=1.E12 DO 1150 I=1,NLON DO 1150 J=1,2*NLATH RNMAX=MAX(CGRID(J,I),RNMAX) RNMIN=MIN(CGRID(J,I),RNMIN) 1150 CONTINUE WRITE(6,1160)RLKM,JCAP,RNMAX,RNMIN 1160 FORMAT(' SATEM ERROR L= ',F5.0,' KM, JCAP= ',I3, * ' MAX, MIN OF H*CHAT*HTRANS=',3E11.3) FACTOR=1./RNMAX C-CRA CSHAT=FACTOR*CSHAT C REAL CSHAT((JCAP+1)*(JCAP+2)) DO ITMP=1,(JCAP+1)*(JCAP+2) CSHAT(ITMP)=FACTOR*CSHAT(ITMP) ENDDO C CALL S2MG2X(CSHAT,CGRID,JCAP,NLATH,NLON,AP,BP,SLAT,PE0) C RNMAX=-1.E12 C RNMIN=1.E12 C DO 2150 I=1,NLON C DO 2150 J=1,2*NLATH C RNMAX=MAX(CGRID(J,I),RNMAX) C RNMIN=MIN(CGRID(J,I),RNMIN) C150 CONTINUE C WRITE(6,2160)RNMAX,RNMIN C160 FORMAT(' AFTER NORMALIZATION, MAX, MIN OF H*CHAT*HTRANS=', C * 2E11.3) RETURN END