SUBROUTINE CALWXT_DOMINANT(PREC,IWX1,IWX2,IWX3,IWX4, & IWX5,DOMS,DOMIP,DOMZR,DOMR) C C WRITTEN: 5 APRIL 2006, G MANIKIN C C THIS ROUTINE TAKES THE PRECIP TYPE SOLUTIONS FROM DIFFERENT C ALGORITHMS AND DETERMINES THE MAJORITY TO GIVE A DOMINANT TYPE C PARAMETER (NALG=5) PARAMETER (PTHRESH=0.02) REAL PREC, DOMS, DOMR, DOMZR, DOMIP INTEGER IWX,IWX1,IWX2,IWX3,IWX4,IWX5 DIMENSION RAIN(NALG),SNOW(NALG),SLEET(NALG),FREEZR(NALG) C DOMR = 0. DOMS = 0. DOMZR = 0. DOMIP = 0. C C SKIP THIS POINT IF NO PRECIP THIS TIME STEP IF (PREC .LE. PTHRESH) RETURN ISNO=MOD(IWX1,2) IIP=MOD(IWX1,4)/2 IZR=MOD(IWX1,8)/4 IRAIN=IWX1/8 SNOW(1) = ISNO*1.0 SLEET(1) = IIP*1.0 FREEZR(1) = IZR*1.0 RAIN(1) = IRAIN*1.0 ISNO=MOD(IWX2,2) IIP=MOD(IWX2,4)/2 IZR=MOD(IWX2,8)/4 IRAIN=IWX2/8 SNOW(2) = ISNO*1.0 SLEET(2) = IIP*1.0 FREEZR(2) = IZR*1.0 RAIN(2) = IRAIN*1.0 ISNO=MOD(IWX3,2) IIP=MOD(IWX3,4)/2 IZR=MOD(IWX3,8)/4 IRAIN=IWX3/8 SNOW(3) = ISNO*1.0 SLEET(3) = IIP*1.0 FREEZR(3) = IZR*1.0 RAIN(3) = IRAIN*1.0 ISNO=MOD(IWX4,2) IIP=MOD(IWX4,4)/2 IZR=MOD(IWX4,8)/4 IRAIN=IWX4/8 SNOW(4) = ISNO*1.0 SLEET(4) = IIP*1.0 FREEZR(4) = IZR*1.0 RAIN(4) = IRAIN*1.0 ISNO=MOD(IWX5,2) IIP=MOD(IWX5,4)/2 IZR=MOD(IWX5,8)/4 IRAIN=IWX5/8 SNOW(5) = ISNO*1.0 SLEET(5) = IIP*1.0 FREEZR(5) = IZR*1.0 RAIN(5) = IRAIN*1.0 TOTSN = 0 TOTIP = 0 TOTR = 0 TOTZR = 0 C LOOP OVER THE NUMBER OF DIFFERENT ALGORITHMS THAT ARE USED DO 820 L = 1, NALG IF (RAIN(L).GT. 0) THEN TOTR = TOTR + 1 GOTO 830 ENDIF IF (SNOW(L).GT. 0) THEN TOTSN = TOTSN + 1 GOTO 830 ENDIF IF (SLEET(L).GT. 0) THEN TOTIP = TOTIP + 1 GOTO 830 ENDIF IF (FREEZR(L).GT. 0) THEN TOTZR = TOTZR + 1 GOTO 830 ENDIF 830 CONTINUE 820 CONTINUE C TIES ARE BROKEN TO FAVOR THE MOST DANGEROUS FORM OF PRECIP C FREEZING RAIN > SNOW > SLEET > RAIN IF (TOTSN .GT. TOTIP) THEN IF (TOTSN .GT. TOTZR) THEN IF (TOTSN .GE. TOTR) THEN DOMS = 1. GOTO 800 ELSE DOMR = 1. GOTO 800 ENDIF ELSE IF (TOTZR .GE. TOTR) THEN DOMZR = 1. GOTO 800 ELSE DOMR = 1. GOTO 800 ENDIF ELSE IF (TOTIP .GT. TOTZR) THEN IF (TOTIP .GE. TOTR) THEN DOMIP = 1. GOTO 800 ELSE DOMR = 1. GOTO 800 ENDIF ELSE IF (TOTZR .GE. TOTR) THEN DOMZR = 1. GOTO 800 ELSE DOMR = 1. GOTO 800 ENDIF 800 RETURN END