SUBROUTINE CALWXT_DOMINANT_POST(PREC,RAIN,FREEZR,SLEET,SNOW, & & DOMR,DOMZR,DOMIP,DOMS) ! ! WRITTEN: 24 AUGUST 2005, G MANIKIN ! ! THIS ROUTINE TAKES THE PRECIP TYPE SOLUTIONS FROM DIFFERENT ! ALGORITHMS AND SUMS THEM UP TO GIVE A DOMINANT TYPE ! ! use params_mod, only: use ctlblk_mod, only: jsta, jend, pthresh, im, jsta_2l, jend_2u,& jm !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - implicit none ! integer,PARAMETER :: NALG=5 ! INPUT: REAL PREC(IM,jsta_2l:jend_2u) real,DIMENSION(IM,JM),intent(inout) :: DOMS,DOMR,DOMZR,DOMIP real,DIMENSION(IM,JM,NALG),intent(in) :: RAIN,SNOW,SLEET,FREEZR integer I,J,L real TOTSN,TOTIP,TOTR,TOTZR !-------------------------------------------------------------------------- print* , 'into dominant' DO J=JSTA,JEND DO I=1,IM DOMR(I,J) = 0. DOMS(I,J) = 0. DOMZR(I,J) = 0. DOMIP(I,J) = 0. ENDDO ENDDO ! DO 800 J=JSTA,JEND DO 800 I=1,IM ! SKIP THIS POINT IF NO PRECIP THIS TIME STEP IF (PREC(I,J).LE.PTHRESH) GOTO 800 TOTSN = 0 TOTIP = 0 TOTR = 0 TOTZR = 0 ! LOOP OVER THE NUMBER OF DIFFERENT ALGORITHMS THAT ARE USED DO 820 L = 1, NALG IF (RAIN(I,J,L).GT. 0) THEN TOTR = TOTR + 1 GOTO 830 ENDIF IF (SNOW(I,J,L).GT. 0) THEN TOTSN = TOTSN + 1 GOTO 830 ENDIF IF (SLEET(I,J,L).GT. 0) THEN TOTIP = TOTIP + 1 GOTO 830 ENDIF IF (FREEZR(I,J,L).GT. 0) THEN TOTZR = TOTZR + 1 GOTO 830 ENDIF 830 CONTINUE 820 CONTINUE ! TIES ARE BROKEN TO FAVOR THE MOST DANGEROUS FORM OF PRECIP ! FREEZING RAIN > SNOW > SLEET > RAIN IF (TOTSN .GT. TOTIP) THEN IF (TOTSN .GT. TOTZR) THEN IF (TOTSN .GE. TOTR) THEN DOMS(I,J) = 1 GOTO 800 ELSE DOMR(I,J) = 1 GOTO 800 ENDIF ELSE IF (TOTZR .GE. TOTR) THEN DOMZR(I,J) = 1 GOTO 800 ELSE DOMR(I,J) = 1 GOTO 800 ENDIF ELSE IF (TOTIP .GT. TOTZR) THEN IF (TOTIP .GE. TOTR) THEN DOMIP(I,J) = 1 GOTO 800 ELSE DOMR(I,J) = 1 GOTO 800 ENDIF ELSE IF (TOTZR .GE. TOTR) THEN DOMZR(I,J) = 1 GOTO 800 ELSE DOMR(I,J) = 1 GOTO 800 ENDIF 800 CONTINUE RETURN END