!copyright (C) 2001 MSC-RPN COMM %%%RPNPHY%%% *** S/P SURF_PRECIP * #include "phy_macros_f.h"![]()
SUBROUTINE SURF_PRECIP ( T, TLC, TLS, TSC, TSS, 1 1 RAINRATE, SNOWRATE, N) * #include "impnone.cdk"
* INTEGER N REAL T(N), TLC(N), TLS(N), TSC(N), TSS(N) REAL RAINRATE(N), SNOWRATE(N) * *Author * S. Belair (November 1998) *Revisions * 001 B. Bilodeau (January 2001) * Automatic arrays * 002 B. Bilodeau and S. Belair (July 2001) * Change conditions for option 0 * *Object * Determine the phase of precipitation * reaching the surface * *Arguments * * - Input - * T low-level air temperature * TLC total liquid "convective" precipitation rate * TLS total liquid "stratiform" precipitation rate * TSC total solid "convective" precipitation rate * TSS total solid "stratiform" precipitation rate * * - Output - * RAINRATE rate of precipitation at the surface (liquid) * SNOWRATE rate of precipitation at the surface (solid) * * #include "consphy.cdk"
#include "options.cdk"
* * INTEGER I, OPTION * * * *MODULES * ************************************************************************ * AUTOMATIC ARRAYS ************************************************************************ * AUTOMATIC ( TOTRATE , REAL , (N)) AUTOMATIC ( STRAT , REAL , (N)) * ************************************************************************ * * * * * * Sum of the precipitation rate at * the surface * DO I=1,N RAINRATE(I) = 0. SNOWRATE(I) = 0. TOTRATE (I) = TLC(I)+TLS(I)+TSC(I)+TSS(I) END DO * * * * OPTIONS: Depending on the explicit scheme * used during the integration, * we have two options for specifying * the phase of precipitation reaching * the ground * IF ( ISTCOND.EQ.0 .OR. ISTCOND.EQ.1 .OR. + ISTCOND.EQ.2 .OR. ISTCOND.EQ.6 ) THEN OPTION=0 ELSE OPTION=1 END IF * * * IF (OPTION.EQ.0) THEN * * FIRST OPTION: * The phase of the precipitation reaching * the surface is simply determined from * the low-level air temperature: * * T > 0. then rain * T < 0. then snow * DO I=1,N IF (T(I).GE.TCDK) THEN RAINRATE(I) = TOTRATE(I) SNOWRATE(I) = 0. ELSE IF (T(I).LT.TCDK) THEN RAINRATE(I) = 0. SNOWRATE(I) = TOTRATE(I) END IF END DO * * * ELSE * * * SECOND OPTION: * The phase of precipitation at the surface * is determined by results from the "explicit" * condensation scheme (MIXED-PHASE, EXMO, KONG-YAU). * DO I=1,N STRAT(I) = TLS(I) + TSS(I) * * * If "stratiform" (stable condensation) is greater * than 0, then the explicit scheme determines if * the precipitation is rain or snow * IF (TSS(I).GE.1.E-10) THEN RAINRATE(I) = 0.0 SNOWRATE(I) = TOTRATE(I) ELSE IF (TLS(I).GE.1.E-10) THEN RAINRATE(I) = TOTRATE(I) SNOWRATE(I) = 0.0 * * If "stratiform" precipitation is null, then * we use low-level air temperature to specify * the phase of precip. * ELSE IF (T(I).GE.TCDK) THEN RAINRATE(I) = TOTRATE(I) SNOWRATE(I) = 0.0 ELSE IF (T(I).LT.TCDK) THEN RAINRATE(I) = 0. SNOWRATE(I) = TOTRATE(I) END IF * * END DO * * END IF * * * * RETURN END