SUBROUTINE HOPERS(ZS,DS,HS,QS,PS,BHALF,BHALFP,NSIG,JCAP, * AGVZ,WGVZ,BVZ,NMDSZH,VZ,VD,VH,VQ,IN,BALN) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: HOPER ANALYSIS VARIABLES TO GRID VARIABLES C PRGMMR: PARRISH ORG: W/NMC22 DATE: 90-10-06 C C ABSTRACT: CONVERT ANALYSIS VARIABLES TO GRID VARIABLES C C PROGRAM HISTORY LOG: C 90-10-06 PARRISH C 94-02-02 PARRISH C C INPUT ARGUMENT LIST: C ZS,DS,HS,QS,PS - COEFS OF VORT, DIV, UNBAL T, UNBAL LOG(PS), Q C BHALF - BACKGROUND ERROR STATS C BHALFP - BACKGROUND ERROR STATS SURFACE PRESSURE C NSIG - NUMBER OF SIGMA LEVELS C JCAP - TRIANGULAR TRUNCATION C NLON - NUMBER OF LONGITUDES C NLATH - NUMBER OF GAUSSIAN LATS IN ONE HEMISPHERE C DEL2 - N*(N+1)/A**2 C TRIGS,IFAX - USED BY FFT C AGVZ - MASS-VARIABLE MODES TO TEMPERATURE CONVERSION C WGVZ - MASS-VARIABLE MODES TO LOG(PSFC) CONVERSION C BVZ - MASS-VARIABLE MODES TO DIVERGENCE CONVERSION C NMDSZH - NUMBER OF MODES USED IN BALANCE EQN. C VZ - VERTICAL MODE MATRIX - Z C VD - VERTICAL MODE MATRIX - D C VH - VERTICAL MODE MATRIX - TEMPS C VQ - VERTICAL MODE MATRIX - Q C IN - TOTAL WAVENUMBER INDEX ARRAY C BALN - SPECTRAL BALANCE OPERATOR CONSTANTS C C OUTPUT ARGUMENT LIST: C U,V,VORT,DIV,T,P,PLON,PLAT,Q - U,V,ETC ON GAUSSIAN GRID C C ATTRIBUTES: C LANGUAGE: CFT77 C MACHINE: CRAY YMP C C$$$ C C-CRA DIMENSION AGVZ(0:JCAP,NSIG,NMDSZH) C-CRA DIMENSION WGVZ(0:JCAP,NMDSZH) C-CRA DIMENSION BVZ(0:JCAP,NSIG,NMDSZH) C-CRA DIMENSION VZ(NSIG,NSIG),VD(NSIG,NSIG) C-CRA DIMENSION VQ(NSIG,NSIG),VH(NSIG,NSIG) C-CRA DIMENSION BHALF((JCAP+1)*(JCAP+2),NSIG,4) C-CRA DIMENSION BHALFP((JCAP+1)*(JCAP+2)) C-CRA DIMENSION ZS((JCAP+1)*(JCAP+2),NSIG) C-CRA DIMENSION DS((JCAP+1)*(JCAP+2),NSIG) C-CRA DIMENSION HS((JCAP+1)*(JCAP+2),NSIG) C-CRA DIMENSION QS((JCAP+1)*(JCAP+2),NSIG) C-CRA DIMENSION PS((JCAP+1)*(JCAP+2)) C-CRA DIMENSION IN((JCAP+1)*(JCAP+2)) C-CRA DIMENSION BALN((JCAP+1)*(JCAP+2)) C-CRA DIMENSION PSD((JCAP+1)*(JCAP+2)) C-CRA DIMENSION ZSF((JCAP+1)*(JCAP+2),NMDSZH) C-CRA DIMENSION WORK((JCAP+1)*(JCAP+2),NSIG) DIMENSION AGVZ(0:62,28,28) DIMENSION WGVZ(0:62,28) DIMENSION BVZ(0:62,28,28) DIMENSION VZ(28,28),VD(28,28) DIMENSION VQ(28,28),VH(28,28) DIMENSION BHALF((62+1)*(62+2),28,4) DIMENSION BHALFP((62+1)*(62+2)) DIMENSION ZS((62+1)*(62+2),28) DIMENSION DS((62+1)*(62+2),28) DIMENSION HS((62+1)*(62+2),28) DIMENSION QS((62+1)*(62+2),28) DIMENSION PS((62+1)*(62+2)) DIMENSION IN((62+1)*(62+2)) DIMENSION BALN((62+1)*(62+2)) DIMENSION PSD((62+1)*(62+2)) DIMENSION ZSF((62+1)*(62+2),28) DIMENSION WORK((62+1)*(62+2),28) C-------- C-------- INTERNAL SCRATCH DYNAMIC SPACE FOLLOWS: C-------- C-------- NC=(JCAP+1)*(JCAP+2) C-------- C-------- FIRST SUM IN VERTICAL, AND ZERO VARIOUS ARRAYS) DO K=1,NSIG IF(K .EQ. 1)THEN P=0. PLON=0. PLAT=0. DO I=1,NC PS(I)=PS(I)*BHALFP(I) END DO END IF DO I=1,NC ZS(I,K)=ZS(I,K)*BHALF(I,K,1) DS(I,K)=DS(I,K)*BHALF(I,K,2) HS(I,K)=HS(I,K)*BHALF(I,K,3) QS(I,K)=QS(I,K)*BHALF(I,K,4) END DO END DO C------------------------APPLY SPECTRAL BALANCE OPERATOR C------------------------TO ZS C-CRA ZSF=0. C DIMENSION ZSF((JCAP+1)*(JCAP+2),NMDSZH) DO ITMP=1,((JCAP+1)*(JCAP+2))*NMDSZH ZSF(ITMP,1)=0. ENDDO DO K=1,NMDSZH II0=2*(JCAP+1) IM0=0 DO M=1,JCAP DO LL=1,2*(JCAP+1-M) ZSF(II0+LL,K)=ZSF(II0+LL,K)+BALN(II0+LL)*ZS(IM0+LL,K) END DO II0=II0+2*(JCAP+1-M) IM0=IM0+2*(JCAP+2-M) END DO II0=0 IP0=2*(JCAP+1) DO M=0,JCAP-1 DO LL=1,2*(JCAP-M) ZSF(II0+LL,K)=ZSF(II0+LL,K)+BALN(IP0+LL)*ZS(IP0+LL,K) END DO II0=II0+2*(JCAP+1-M) IP0=IP0+2*(JCAP-M) END DO END DO C---------------DO TEMP AND PSFC C-CRA WORK=0. C DIMENSION WORK((JCAP+1)*(JCAP+2),NSIG) DO ITMP=1,((JCAP+1)*(JCAP+2))*NSIG WORK(ITMP,1)=0. ENDDO DO K=1,NSIG IF(K .EQ. 1)THEN DO J=1,NMDSZH DO I=1,NC PS(I)=PS(I) * +WGVZ(IN(I),J)*ZSF(I,J) END DO END DO END IF DO J=1,NMDSZH DO I=1,NC WORK(I,K)=WORK(I,K) * +AGVZ(IN(I),K,J)*ZSF(I,J) END DO END DO DO J=1,NSIG DO I=1,NC WORK(I,K)=WORK(I,K)+VH(K,J)*HS(I,J) END DO END DO END DO DO I=1,NSIG*NC HS(I,1)=WORK(I,1) WORK(I,1)=0. END DO C--------------- SUM IN VERTICAL DS DO K=1,NSIG DO J=1,NSIG DO I=1,NC WORK(I,K)=WORK(I,K)+VD(K,J)*DS(I,J) END DO END DO DO J=1,NMDSZH DO I=1,NC WORK(I,K)=WORK(I,K)+BVZ(IN(I),K,J)*ZSF(I,J) END DO END DO END DO DO I=1,NC*NSIG DS(I,1)=WORK(I,1) WORK(I,1)=0. END DO C-------- C-------- SUM IN VERTICAL QS DO K=1,NSIG DO J=1,NSIG DO I=1,NC WORK(I,K)=WORK(I,K)+VQ(K,J)*QS(I,J) END DO END DO END DO DO I=1,NSIG*NC QS(I,1)=WORK(I,1) WORK(I,1)=0. END DO C------- C-------- SUM IN VERTICAL ZS DO K=1,NSIG DO J=1,NSIG DO I=1,NC WORK(I,K)=WORK(I,K)+VZ(K,J)*ZS(I,J) END DO END DO END DO DO I=1,NSIG*NC ZS(I,1)=WORK(I,1) END DO RETURN END