!copyright (C) 2001 MSC-RPN COMM %%%RPNPHY%%%
*** S/P DRAG1
*
#include "phy_macros_f.h"
SUBROUTINE DRAG1 ( TS, WG, WR, THETAA, VMOD, HU, 1,1
1 PS, RS, VEG, Z0H, Z0TOT, WFC,
1 PSNG, PSNV, PSNZ0, LAI, ZA, FCOR,
1 RESA, ILMO, HST, UE2, FTEMP, FVAP,
1 CH, CD, HRSURF, HUSURF, HV, DEL, ZQS,
1 CTU, N )
*
#include "impnone.cdk"
*
INTEGER N
REAL TS(N), WG(N), WR(N), THETAA(N), VMOD(N), HU(N)
REAL PS(N), RS(N), VEG(N), Z0TOT(N), WFC(N)
REAL Z0H(N)
REAL PSNG(N), PSNV(N), PSNZ0(N), LAI(N), ZA(N)
REAL FCOR(N)
REAL RESA(N), ILMO(N), HST(N), UE2(N), FTEMP(N), FVAP(N)
REAL CH(N), CD(N), HUSURF(N), HV(N), DEL(N), ZQS(N)
REAL HRSURF(N), CTU(N)
*
*Author
* S. Belair (January 1997)
*Revisions
* 001 S. Belair (November 1998)
* Use FLXSURF1 to calculate the surface transfer
* coefficients instead of the MOMCOEF and HEATCOEF
* subroutines (Mascart method).
*
* 002 S. Belair (November 1998)
* Remove Z0 from the arguments (because now we
* use FLXSURF1.
*
* 003 B. Bilodeau (January 2001)
* Automatic arrays
*
* 004 S. Belair (September 2001)
* Add protection to calculation of DEL
*
*Object
*
* Calculates the drag coefficients for heat and momentum transfers
* over ground (i.e., Ch and Cd).
*
*
*Method
*
*
* 1) computes hu, hv, and DEL
*
* 2) use this to find qsoil, the grid-averaged relative humidity
* of the soil
*
* 3) find the transfer and resistance coefficients Ch, Cd, and Ra
* Calculate the surface fluxes of heat, moisture,
* and momentum over water surfaces.
*
*Arguments
*
* - Input/Output -
* RESA aerodynamical surface resistance
* ILMO
* HST
* UE2
* FTEMP
* FVAP
*
* - Input -
* TS surface temperature
* WG superficial volumetric water content
* WR water content retained by the vegetation canopy
* THETAA potential temperature at the lowest level
* VMOD module of the surface winds
* HU specific humidity of air at the lowest level
* PS surface pressure
* RS surface or stomatal resistance
* VEG fraction of a model grid area covered by vegetation
* Z0H roughness length for heat transfers
* Z0TOT roughness length including the effect of snow
* WFC volumetric water content at the field capacity
* PSNG fraction of bare ground covered by snow
* PSNV fraction of vegetation covered by snow
* PSNZ0 snow fraction for roughness length calculations
* LAI leaf area index
* ZA reference height
* FCOR Coriolis factor
*
*
* - Output -
* CH drag coefficient for heat
* CD drag coefficient for momentum
* HRSURF relative humidity of the surface
* HUSURF specific humidity of the surface
* HV Halstead coefficient (i.e., relative humidity of the
* vegetation canopy)
* DEL fraction of canopy covered by intercepted water
* ZQS area-averaged relative humidity of a model tile
* CTU homogeneous boundary condition term in the
* diffusion equation for Theta and Q
*
*
#include "consphy.cdk"
*
INTEGER I
REAL UE
*
*
*
EXTERNAL FLXSURF2
*
*
************************************************************************
* AUTOMATIC ARRAYS
************************************************************************
*
AUTOMATIC ( TEMP , REAL , (N) )
AUTOMATIC ( WRMAX , REAL , (N) )
AUTOMATIC ( QSAT , REAL , (N) )
AUTOMATIC ( COEF , REAL , (N) )
AUTOMATIC ( CMU , REAL , (N) )
AUTOMATIC ( SCR1 , REAL , (N) )
AUTOMATIC ( SCR6 , REAL , (N) )
AUTOMATIC ( SCR7 , REAL , (N) )
AUTOMATIC ( SCR8 , REAL , (N) )
AUTOMATIC ( SCR9 , REAL , (N) )
AUTOMATIC ( SCR10 , REAL , (N) )
AUTOMATIC ( SCR11 , REAL , (N) )
*
************************************************************************
*
*
#include "dintern.cdk"
#include "fintern.cdk"
*
*
*
*------------------------------------------------------------------------
*
*
*
*
** 1. RELATIVE AND SPECIFIC HUMIDITY OF THE GROUND (HU)
* -------------------------------------------------
*
* this relative humidity is related to
* the superficial soil moisture and the
* field capacity of the ground
*
DO I=1,N
TEMP(I) = PI*WG(I)/WFC(I)
HRSURF(I) = 0.5 * ( 1.-COS(TEMP(I)) )
END DO
*
* there is a specific treatment for dew
* (see Mahfouf and Noilhan, jam, 1991)
*
* first calculate the saturation vapor
* pressure and specific humidity
*
DO I=1,N
QSAT(I) = FOQST( TS(I), PS(I) )
END DO
*
*
DO I=1,N
*
*
* when hu*qsat < qa, there are two
* possibilities
*
* low-level air is dry, i.e.,
* qa < qsat
*
*
IF ( HRSURF(I)*QSAT(I).LT.HU(I).AND.QSAT(I).GT.HU(I) )
1 HRSURF(I) = HU(I) / QSAT(I)
*
*
* b) low-level air is humid, i.e.,
* qa >= qsat
*
IF ( HRSURF(I)*QSAT(I).LT.HU(I).AND.QSAT(I).LE.HU(I) )
1 HRSURF(I) = 1.0
*
* for very humid soil (i.e., wg > wfc ),
* we take hu=1
*
IF ( WG(I).GT.WFC(I) )
1 HRSURF(I) = 1.0
*
*
END DO
*
*
DO I=1,N
HUSURF(I) = HRSURF(I) * QSAT(I)
END DO
*
*
*
*
** 2. FRACTION OF THE FOLIAGE COVERED BY INTERCEPTED WATER (DEL)
* ------------------------------------------------------------
*
* first calculate the maximum value of
* equivalent water content in the
* vegetation canopy
*
DO I=1,N
*
WRMAX(I) = 0.2 * VEG(I) * LAI(I)
*
* calculate DEL
*
COEF(I) = 1. + 2.*LAI(I)
*
IF ( VEG(I).GT.0.0.AND.WRMAX(I).GT.0.0 ) THEN
DEL(I) = MIN(WR(I),WRMAX(I)) /
1 ( (1.-COEF(I))*MIN(WR(I),WRMAX(I)) + COEF(I)*WRMAX(I) )
ELSE
DEL(I) = 0.0
END IF
*
END DO
*
*
** 3. HALSTEAD COEFFICIENT (RELATIVE HUMIDITY OF THE VEGETATION) (HV)
* ---------------------------------------------------------------
*
DO I=1,N
HV(I) = 1. - MAX(0.,SIGN(1.,QSAT(I)-HU(I)))
1 *RS(I)*(1.-DEL(I)) / (RESA(I)+RS(I))
END DO
*
*
*
*
** 4. GRID-AVERAGED HUMIDITY OF THE SOIL (ZQS)
* ----------------------------------------
*
DO I=1,N
ZQS(I) = ( (1.-VEG(I))*(1.-PSNG(I))*HRSURF(I)
1 + (1.-VEG(I))* PSNG(I)
1 + VEG(I) *(1.-PSNV(I))*HV(I)
1 + VEG(I) * PSNV(I) )*QSAT(I)
1 + VEG(I) *(1.-PSNV(I))*(1.-HV(I))*HU(I)
END DO
*
*
*** 5. SURFACE TRANSFER COEFFICIENTS FOR HEAT AND MOMENTUM (CH and CD)
** ---------------------------------------------------------------
*
*
* Arbitrary values for the height
* of the boundary layer (for FLXSURF2)
* No impact on the results.
*
*
CALL FLXSURF2
( CMU, CTU, SCR1, FTEMP, FVAP, ILMO,
1 UE2, FCOR, THETAA, HU, ZA, VMOD, TS,
1 ZQS, HST, Z0TOT, Z0H, SCR6, SCR7,
1 SCR8, SCR9, SCR10, SCR11, N )
*
*
DO I=1,N
UE = SQRT( UE2(I) )
CMU(I) = CMU(I) / UE
*
CD(I) = CMU(I) * CMU(I)
CH(I) = CMU(I) * CTU(I)/UE
*
RESA(I) = 1. / CH(I) / (VMOD(I)+0.001)
END DO
*
*
*
*
** 7. HALSTEAD COEFFICIENT (WITH THE NEW VALUES OF RESA)
* --------------------------------------------------
*
*
DO I=1,N
HV(I) = 1. - MAX(0.,SIGN(1.,QSAT(I)-HU(I)))
1 *RS(I)*(1.-DEL(I)) / (RESA(I)+RS(I))
END DO
*
*
*
*
RETURN
END