SUBROUTINE DVAST(TYPE,RESU,RESV,SCALE,N,RSPRES,PBOT,PTOP,MESAGE) C$$$ SUBPROGRAM DOCUMENTATION BLOCK C . . . . C SUBPROGRAM: DVAST PRINT TABLE OF VECTOR RES. BY DATA TYPE. C PRGMMR: PARRISH ORG: W/NMC22 DATE: 90-10-11 C C ABSTRACT: PRINT TABLE OF VECTOR RESIDUALS BY DATA TYPE. C C PROGRAM HISTORY LOG: C 90-10-11 PARRISH C C USAGE: CALL DVAST(TYPE,RESU,RESV,SCALE,N,RSPRES,PBOT,PTOP,MESAGE) C INPUT ARGUMENT LIST: C TYPE - OBS TYPES (PREPDA NUMBERS) C RESU - OBS U RESIDUALS C RESV - OBS V RESIDUALS C SCALE - RESCALING UNIT C N - NUMBER OF RESIDUALS C RSPRES - OBSERVATION PRESSURE C PBOT - PRESSURE AT BOTTOM OF LAYER C PTOP - PRESSURE AT TOP OF LAYER C MESAGE - MESSAGE TO APPEAR AT TOP OF TABLE ($ SIGNALS END) C C OUTPUT ARGUMENT LIST: C NONE C C ATTRIBUTES: C LANGUAGE: CFT77 C MACHINE: CRAY YMP C C$$$ DIMENSION TYPE(N),RESU(N),RESV(N) DIMENSION COUNT(7,101),RMS(7,101) DIMENSION RSPRES(N) CHARACTER*1 MESAGE(100),DOLLAR DATA DOLLAR/'$'/ C------- DO ITMP=1,7*101 COUNT(ITMP,1)=0. RMS(ITMP,1)=0. ENDDO C-------- IOFF=INT(TYPE(1)/100)*100 DO 100 I=1,N IF(RSPRES(I).LT.PTOP.OR.RSPRES(I).GT.PBOT) GO TO 99 C IF(NINT(TYPE(I)) .NE. 283)THEN RESS=SCALE*SQRT(RESU(I)**2+RESV(I)**2) C ELSE C RESS=SCALE*(RESU(I)-RESV(I)) C END IF ABSR=ABS(RESS) K=1 IF(ABSR.GT.2.) K=2 IF(ABSR.GT.4.) K=3 IF(ABSR.GT.8.) K=4 IF(ABSR.GT.15.) K=5 IF(ABSR.GT.30.) K=6 IF(ABSR.GT.80.) K=7 ITYPE=NINT(TYPE(I))-IOFF ITYPE=MAX(1,MIN(ITYPE,100)) DO 90 L=K,7 COUNT(L,ITYPE)=COUNT(L,ITYPE)+1. RMS(L,ITYPE)=RMS(L,ITYPE)+RESS*RESS COUNT(L,101)=COUNT(L,101)+1. RMS(L,101)=RMS(L,101)+RESS*RESS 90 CONTINUE 99 CONTINUE 100 CONTINUE IF(COUNT(7,101) .LE. 0.)RETURN IMSG=1 DO 400 K=1,100 IF(MESAGE(K).EQ.DOLLAR) GO TO 410 IMSG=IMSG+1 400 CONTINUE 410 CONTINUE IMSG=MAX(1,IMSG-1) WRITE(6,500)(MESAGE(I),I=1,IMSG) 500 FORMAT(/,1H ,100A1,/,' COUNT/VRMS:',/) WRITE(6,600) 600 FORMAT(T2,'TYPE',T12,'(E<2)',T22,'(E<4)',T32,'(E<8)', * T42,'(E<15)',T52,'(E<30)',T62,'(E<80)',T72,'(80