!copyright (C) 2001  MSC-RPN COMM  %%%RPNPHY%%%
*** S/P UPDATE2
*

      SUBROUTINE UPDATE3( TS, T2, WG, W2, WF, WL, WR, WS, 1
     1            ALPHAS, RHOS, RHOSNO, VMOD, CD, RHOA, 
     1            HFLUX, EFLUX, TST, T2T, WGT, W2T, 
     1            WFT, WLT, WRT, WST,
     1            ALPHAST, RHOST,
     1            BM, FQ, ALFAT, ALFAQ,
     1            CTU, TH, HU, ZA,
     1            N )
*
#include "impnone.cdk"
*
*
      INTEGER N
      REAL TS(N), T2(N), WG(N), W2(N), WR(N), WS(N)
      REAL WF(N), WL(N)
      REAL ALPHAS(N), RHOS(N), RHOSNO(N)
      REAL VMOD(N), CD(N), RHOA(N)
      REAL HFLUX(N), EFLUX(N)
      REAL TST(N), T2T(N), WGT(N), W2T(N), WRT(N), WST(N)
      REAL WFT(N), WLT(N)
      REAL ALPHAST(N), RHOST(N)
      REAL BM(N), FQ(N)
      REAL ALFAT(N), ALFAQ(N)
      REAL CTU(N), TH(N), HU(N), ZA(N)
*
*Author
*          S. Belair (January 1997)
*Revisions
* 001      J. Mailhot (March 1998) - Addition of sea ice surface
* 002      J. Mailhot (Oct 1998) - Remove AQ and add ALFAQ
*                                  Change name from UPDATE1 to UPDATE2
* 003      S. Belair (Jan 1999) - New variables WF and WL
* 004      S. Belair (Feb 1999) - Change formulation for the vertical
*                                 diffusion boundary terms, and cleanup
* 005      S. Belair (March 1999) 
*                                Remove temporal filtering for ISBA's
*                                prognostic variables
* 006      J.-F. Mahfouf (Spring 2003) - 
*              Add implicit boundary condition option for vert. diff.
*
*
*Object
*          Update the prognostic variables
*
*Arguments
*
*          - Input/Output -
* TS
* T2
* WG
* W2       prognostic variables at time -
* WF
* WL
* WR
* WS
* ALPHAS
* RHOS
* RHOSNO   density of snow (kg/m3) for output only
*
*
*          - Input -
*
* VMOD     module of the low-level wind
* CD       surface transfer coefficient for momentum
* RHOA     low-level air density
* HFLUX    surface flux of sensible heat
* EFLUX    water vapor flux
*
*           - Output -
* TST
* T2T
* WGT
* W2T       prognostic variables at time +
* WFT
* WLT
* WRT
* WST
* ALPHAST
* RHOST
*
* BM        homogeneous boundary condition term in the
*           diffusion equation for U and V
* ALFAT     inhomogeneous boundary term in the diffusion equation for Theta
* ALFAQ     inhomogeneous boundary term in the diffusion equation for Q
* FQ        surface momentum flux
*
*
#include "consphy.cdk"
*
#include "options.cdk"
*
*
      INTEGER I
*
*
*
      DO I=1,N
*
        TS(I)     = TST(I)
        T2(I)     = T2T(I)
        WG(I)     = WGT(I)
        W2(I)     = W2T(I)
        WF(I)     = WFT(I)
        WL(I)     = WLT(I)
        WR(I)     = WRT(I)
        WS(I)     = WST(I)
        ALPHAS(I) = ALPHAST(I)
        RHOS(I)   = RHOST(I)
        RHOSNO(I) = RHOST(I)*RAUW
*
        WG(I)     = MAX( WG(I)   , 0.001  )
        W2(I)     = MAX( W2(I)   , 0.001  )
*
      END DO
*
*
*
*                   Feedback on the vertical diffusion
*
      DO I=1,N
        BM(I)      =  VMOD(I)*CD(I)
        FQ(I)      =  RHOA(I)*CD(I)*VMOD(I)*VMOD(I)
        ALFAT(I)   =  -HFLUX(I) / (CPD*RHOA(I))
        ALFAQ(I)   =  -EFLUX(I) 
        IF (IMPFLX) THEN
          ALFAT(I)   =   ALFAT(I) - CTU(I)* TH(I)
          ALFAQ(I)   =   ALFAQ(I) - CTU(I)* HU(I)
        ENDIF
      END DO
*
*
*
*
*
      RETURN
      END