SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/coupling_seawat_sbln.F90
Go to the documentation of this file.
00001 !     ###############################################################################
00002 SUBROUTINE COUPLING_SEAWAT_SBL_n(HPROGRAM, HCOUPLING, HSURF,                               &
00003                PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, &
00004                PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV,          &
00005                PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA,                   &
00006                PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, OSBL, PSST, PZ0,                   &
00007                PZ, PXU, KLVL, PTKE, PT, PQ, PLMO, PZF, PDZ, PDZF, PP,                      &
00008                K2M, PT2M, PQ2M, PHU2M, PZON10M, PMER10M, PWIND10M, PWIND10M_MAX,           &
00009                PT2M_MIN, PT2M_MAX, PHU2M_MIN, PHU2M_MAX,                                   &
00010                PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                           &
00011                PPEW_A_COEF, PPEW_B_COEF,                                                   &
00012                PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF,                         &
00013                HTEST                                                                       )
00014 !     ###############################################################################
00015 !
00016 !!****  *COUPLING_SEAWAT_SBL_n * - Adds a SBL into SEAFLUX
00017 !!
00018 !!    PURPOSE
00019 !!    -------
00020 !
00021 !!**  METHOD
00022 !!    ------
00023 !!
00024 !!    REFERENCE
00025 !!    ---------
00026 !!      
00027 !!
00028 !!    AUTHOR
00029 !!    ------
00030 !!     V. Masson 
00031 !!
00032 !!    MODIFICATIONS
00033 !!    -------------
00034 !!      Original    09/2007
00035 !!      V. Masson   05/2009 Implicitation of momentum fluxes
00036 !!      S. Riette   06/2009 Initialisation of XT, PQ, XU and XTKE on canopy levels
00037 !!      S. Riette   10/2009 Iterative computation of XZ0
00038 !!      S. Riette   01/2010 Use of interpol_sbl to compute 10m wind diagnostic
00039 !----------------------------------------------------------------
00040 !
00041 USE MODD_SURF_PAR,         ONLY : XUNDEF
00042 USE MODD_CSTS,             ONLY : XCPD
00043 ! 
00044 USE MODE_COUPLING_CANOPY
00045 !
00046 USE MODI_INIT_WATER_SBL
00047 !
00048 USE MODI_CANOPY_EVOL
00049 USE MODI_CANOPY_GRID_UPDATE
00050 !
00051 USE MODI_COUPLING_SEAFLUX_n
00052 USE MODI_COUPLING_WATFLUX_n
00053 USE MODI_COUPLING_FLAKE_n
00054 !
00055 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00056 USE PARKIND1  ,ONLY : JPRB
00057 !
00058 IMPLICIT NONE
00059 !
00060 !*      0.1    declarations of arguments
00061 !
00062  CHARACTER(LEN=6),    INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00063  CHARACTER(LEN=1),    INTENT(IN)  :: HCOUPLING ! type of coupling
00064                                               ! 'E' : explicit
00065                                               ! 'I' : implicit
00066  CHARACTER(LEN=1),    INTENT(IN)  :: HSURF     ! 
00067 INTEGER,             INTENT(IN)  :: KYEAR     ! current year (UTC)
00068 INTEGER,             INTENT(IN)  :: KMONTH    ! current month (UTC)
00069 INTEGER,             INTENT(IN)  :: KDAY      ! current day (UTC)
00070 REAL,                INTENT(IN)  :: PTIME     ! current time since midnight (UTC, s)
00071 INTEGER,             INTENT(IN)  :: KI        ! number of points
00072 INTEGER,             INTENT(IN)  :: KSV       ! number of scalars
00073 INTEGER,             INTENT(IN)  :: KSW       ! number of short-wave spectral bands
00074 REAL, DIMENSION(KI), INTENT(IN)  :: PTSUN     ! solar time                    (s from midnight)
00075 REAL,                INTENT(IN)  :: PTSTEP    ! atmospheric time-step                 (s)
00076 REAL, DIMENSION(KI), INTENT(IN)  :: PZREF     ! height of T,q forcing                 (m)
00077 REAL, DIMENSION(KI), INTENT(IN)  :: PUREF     ! height of wind forcing                (m)
00078 !
00079 REAL, DIMENSION(KI), INTENT(IN)  :: PTA       ! air temperature forcing               (K)
00080 REAL, DIMENSION(KI), INTENT(IN)  :: PQA       ! air humidity forcing                  (kg/m3)
00081 REAL, DIMENSION(KI), INTENT(IN)  :: PRHOA     ! air density                           (kg/m3)
00082 REAL, DIMENSION(KI,KSV),INTENT(IN) :: PSV     ! scalar variables
00083 !                                             ! chemistry:   first char. in HSV: '#'  (molecule/m3)
00084 !                                             !
00085  CHARACTER(LEN=6), DIMENSION(KSV),INTENT(IN):: HSV  ! name of all scalar variables
00086 REAL, DIMENSION(KI), INTENT(IN)  :: PU        ! zonal wind                            (m/s)
00087 REAL, DIMENSION(KI), INTENT(IN)  :: PV        ! meridian wind                         (m/s)
00088 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PDIR_SW ! direct  solar radiation (on horizontal surf.)
00089 !                                             !                                       (W/m2)
00090 REAL, DIMENSION(KI,KSW),INTENT(IN) :: PSCA_SW ! diffuse solar radiation (on horizontal surf.)
00091 !                                             !                                       (W/m2)
00092 REAL, DIMENSION(KSW),INTENT(IN)  :: PSW_BANDS ! mean wavelength of each shortwave band (m)
00093 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH   ! zenithal angle at t  (radian from the vertical)
00094 REAL, DIMENSION(KI), INTENT(IN)  :: PZENITH2  ! zenithal angle at t+1(radian from the vertical)
00095 REAL, DIMENSION(KI), INTENT(IN)  :: PAZIM     ! azimuthal angle      (radian from North, clockwise)
00096 REAL, DIMENSION(KI), INTENT(IN)  :: PLW       ! longwave radiation (on horizontal surf.)
00097 !                                             !                                       (W/m2)
00098 REAL, DIMENSION(KI), INTENT(IN)  :: PPS       ! pressure at atmospheric model surface (Pa)
00099 REAL, DIMENSION(KI), INTENT(IN)  :: PPA       ! pressure at forcing level             (Pa)
00100 REAL, DIMENSION(KI), INTENT(IN)  :: PZS       ! atmospheric model CANOPY           (m)
00101 REAL, DIMENSION(KI), INTENT(IN)  :: PCO2      ! CO2 concentration in the air          (kg/m3)
00102 REAL, DIMENSION(KI), INTENT(IN)  :: PSNOW     ! snow precipitation                    (kg/m2/s)
00103 REAL, DIMENSION(KI), INTENT(IN)  :: PRAIN     ! liquid precipitation                  (kg/m2/s)
00104 !
00105 !
00106 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTH     ! flux of heat                          (W/m2)
00107 REAL, DIMENSION(KI), INTENT(OUT) :: PSFTQ     ! flux of water vapor                   (kg/m2/s)
00108 REAL, DIMENSION(KI), INTENT(OUT) :: PSFU      ! zonal momentum flux                   (Pa)
00109 REAL, DIMENSION(KI), INTENT(OUT) :: PSFV      ! meridian momentum flux                (Pa)
00110 REAL, DIMENSION(KI), INTENT(OUT) :: PSFCO2    ! flux of CO2                           (kg/m2/s)
00111 REAL, DIMENSION(KI,KSV),INTENT(OUT):: PSFTS   ! flux of scalar var.                   (kg/m2/s)
00112 !
00113 LOGICAL, INTENT(IN) :: OSBL
00114 REAL, DIMENSION(KI), INTENT(IN) :: PSST
00115 REAL, DIMENSION(KI), INTENT(INOUT) :: PZ0
00116 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PZ
00117 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PXU
00118 INTEGER, INTENT(IN) :: KLVL
00119 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PTKE
00120 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PT
00121 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PQ
00122 REAL, DIMENSION(KI), INTENT(INOUT) :: PLMO
00123 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PZF
00124 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PDZ
00125 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PDZF
00126 REAL, DIMENSION(KI,KLVL), INTENT(INOUT) :: PP
00127 INTEGER, INTENT(IN) :: K2M
00128 REAL, DIMENSION(KI), INTENT(INOUT) :: PT2M
00129 REAL, DIMENSION(KI), INTENT(INOUT) :: PQ2M
00130 REAL, DIMENSION(KI), INTENT(INOUT) :: PHU2M
00131 REAL, DIMENSION(KI), INTENT(INOUT) :: PZON10M
00132 REAL, DIMENSION(KI), INTENT(INOUT) :: PMER10M
00133 REAL, DIMENSION(KI), INTENT(INOUT) :: PWIND10M
00134 REAL, DIMENSION(KI), INTENT(INOUT) :: PWIND10M_MAX
00135 REAL, DIMENSION(KI), INTENT(INOUT) :: PT2M_MIN
00136 REAL, DIMENSION(KI), INTENT(INOUT) :: PT2M_MAX
00137 REAL, DIMENSION(KI), INTENT(INOUT) :: PHU2M_MIN
00138 REAL, DIMENSION(KI), INTENT(INOUT) :: PHU2M_MAX
00139 !
00140 REAL, DIMENSION(KI), INTENT(OUT) :: PTRAD     ! radiative temperature                 (K)
00141 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PDIR_ALB! direct albedo for each spectral band  (-)
00142 REAL, DIMENSION(KI,KSW),INTENT(OUT):: PSCA_ALB! diffuse albedo for each spectral band (-)
00143 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS     ! emissivity                            (-)
00144 !
00145 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_A_COEF! implicit coefficients
00146 REAL, DIMENSION(KI), INTENT(IN) :: PPEW_B_COEF! needed if HCOUPLING='I'
00147 REAL, DIMENSION(KI), INTENT(IN) :: PPET_A_COEF
00148 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_A_COEF
00149 REAL, DIMENSION(KI), INTENT(IN) :: PPET_B_COEF
00150 REAL, DIMENSION(KI), INTENT(IN) :: PPEQ_B_COEF
00151  CHARACTER(LEN=2),    INTENT(IN) :: HTEST ! must be equal to 'OK'
00152 !
00153 !*      0.2    declarations of local variables
00154 !
00155 !* forcing variables
00156 !
00157 REAL, DIMENSION(KI)     :: ZWIND    ! lowest atmospheric level wind speed           (m/s)
00158 REAL, DIMENSION(KI)     :: ZEXNA    ! Exner function at lowest SBL scheme level     (-)
00159 REAL, DIMENSION(KI)     :: ZTA      ! temperature                                   (K)
00160 REAL, DIMENSION(KI)     :: ZPA      ! pressure                                      (Pa)
00161 REAL, DIMENSION(KI)     :: ZZREF    ! temperature forcing level                     (m)
00162 REAL, DIMENSION(KI)     :: ZUREF    ! wind        forcing level                     (m)
00163 REAL, DIMENSION(KI)     :: ZU       ! zonal wind                                    (m/s)
00164 REAL, DIMENSION(KI)     :: ZV       ! meridian wind                                 (m/s)
00165 REAL, DIMENSION(KI)     :: ZQA      ! specific humidity                             (kg/m3)
00166 REAL, DIMENSION(KI)     :: ZPEQ_A_COEF ! specific humidity implicit
00167 REAL, DIMENSION(KI)     :: ZPEQ_B_COEF ! coefficients (hum. in kg/kg)
00168 !
00169 !
00170 ! SBL turbulence scheme
00171 !
00172 REAL, DIMENSION(KI)        :: ZSFLUX_U  ! Surface flux u'w' (m2/s2)
00173 REAL, DIMENSION(KI)        :: ZSFLUX_T  ! Surface flux w'T' (mK/s)
00174 REAL, DIMENSION(KI)        :: ZSFLUX_Q  ! Surface flux w'q' (kgm2/s)
00175 REAL, DIMENSION(KI,KLVL)   :: ZFORC_U   ! tendency due to drag force for wind
00176 REAL, DIMENSION(KI,KLVL)   :: ZDFORC_UDU! formal derivative of
00177 !                                              ! tendency due to drag force for wind
00178 REAL, DIMENSION(KI,KLVL)   :: ZFORC_E   ! tendency due to drag force for TKE
00179 REAL, DIMENSION(KI,KLVL)   :: ZDFORC_EDE! formal derivative of
00180 !                                              ! tendency due to drag force for TKE
00181 REAL, DIMENSION(KI,KLVL)   :: ZFORC_T   ! tendency due to drag force for Temp
00182 REAL, DIMENSION(KI,KLVL)   :: ZDFORC_TDT! formal derivative of
00183 !                                              ! tendency due to drag force for Temp
00184 REAL, DIMENSION(KI,KLVL)   :: ZFORC_Q   ! tendency due to drag force for Temp
00185 REAL, DIMENSION(KI,KLVL)   :: ZDFORC_QDQ! formal derivative of
00186 !                                              ! tendency due to drag force for hum.
00187 REAL, DIMENSION(KI,KLVL)   :: ZLMO      ! MO length
00188 REAL, DIMENSION(KI,KLVL)   :: ZLM       ! mixing length
00189 REAL, DIMENSION(KI,KLVL)   :: ZLEPS     ! dissipative length
00190 REAL, DIMENSION(KI)     :: ZH           ! canopy height (m)
00191 REAL, DIMENSION(KI)     :: ZUSTAR       ! friction velocity (m/s)
00192 !
00193 REAL, DIMENSION(KI)     :: ZPET_A_COEF ! temperature implicit
00194 REAL, DIMENSION(KI)     :: ZPET_B_COEF ! coefficients (K)
00195 REAL, DIMENSION(KI)     :: ZPEW_A_COEF ! wind implicit
00196 REAL, DIMENSION(KI)     :: ZPEW_B_COEF ! coefficients (m/s)
00197 
00198 REAL, DIMENSION(KI)   :: ZALFAU   ! V+(1) = - alfa rho u'w'(1) + beta
00199 REAL, DIMENSION(KI)   :: ZBETAU   ! V+(1) = - alfa rho u'w'(1) + beta
00200 REAL, DIMENSION(KI)   :: ZALFATH  ! Th+(1) = - alfa rho w'th'(1) + beta
00201 REAL, DIMENSION(KI)   :: ZBETATH  ! Th+(1) = - alfa rho w'th'(1) + beta
00202 REAL, DIMENSION(KI)   :: ZALFAQ   ! Q+(1) = - alfa rho w'q'(1) + beta
00203 REAL, DIMENSION(KI)   :: ZBETAQ   ! Q+(1) = - alfa rho w'q'(1) + beta
00204 !
00205  CHARACTER(LEN=1) :: GCOUPLING
00206 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00207 !-------------------------------------------------------------------------------------
00208 !
00209 !
00210 !*      1.     Preliminary computations of the SBL scheme
00211 !              ------------------------------------------
00212 !
00213 IF (LHOOK) CALL DR_HOOK('COUPLING_SEAWAT_SBL_N',0,ZHOOK_HANDLE)
00214 IF (OSBL) THEN
00215 !
00216 !*      1.1    Updates SBL vertical grid as a function of forcing height
00217 !              ---------------------------------------------------------
00218 !
00219 !* determines where is the forcing level and modifies the upper levels of the canopy grid
00220 !
00221   ZH = 0.
00222   CALL CANOPY_GRID_UPDATE(KI,KLVL,ZH,PUREF,PZ,PZF,PDZ,PDZF)
00223 !
00224 !
00225 !
00226 !*     1.2     Initialisation at first time step
00227 !              ---------------------------------
00228 !
00229   IF(ANY(PT(:,:) == XUNDEF)) THEN
00230     CALL INIT_WATER_SBL(KLVL, PPA, PPS, PTA, PQA, PRHOA, PU, PV, PRAIN, PSNOW,     &
00231                         PSFTH, PSFTQ, PZREF, PUREF, PSST, PZ0, PZ,                 &
00232                         PT, PQ, PXU, PTKE, PP)
00233   ENDIF
00234 !
00235 !
00236 !*      1.3    Allocations
00237 !              -----------
00238 !
00239   CALL INIT_FORC( ZFORC_U, ZDFORC_UDU, ZFORC_E, ZDFORC_EDE, &
00240                  ZFORC_T, ZDFORC_TDT, ZFORC_Q, ZDFORC_QDQ )
00241 !
00242   ZSFLUX_U = 0.
00243   ZSFLUX_T = 0.
00244   ZSFLUX_Q = 0.
00245 !
00246   ZLMO = SPREAD(PLMO,2,KLVL)
00247 !
00248 !*      1.3   Computes coefficients for implicitation
00249 !             ---------------------------------------
00250 !
00251   ZWIND = SQRT(PU**2+PV**2)
00252   CALL CANOPY_EVOL(KI,KLVL,PTSTEP,1,PZ,ZWIND,PTA,PQA,PPA,PRHOA,           &
00253                  ZSFLUX_U,ZSFLUX_T,ZSFLUX_Q,                              &
00254                  ZFORC_U,ZDFORC_UDU,ZFORC_E,ZDFORC_EDE,                   &
00255                  ZFORC_T,ZDFORC_TDT,ZFORC_Q,ZDFORC_QDQ,                   &
00256                  PZ,PZF,PDZ,PDZF,PXU,PTKE,PT,PQ,ZLMO,ZLM,ZLEPS,PP,ZUSTAR, &
00257                  ZALFAU,ZBETAU,ZALFATH,ZBETATH,ZALFAQ,ZBETAQ              )
00258 
00259 !
00260 !*     1.5     Goes from atmospheric forcing to canopy forcing height
00261 !              ------------------------------------------------------
00262 !
00263   IF (HSURF=='F') THEN
00264     GCOUPLING = 'E'
00265   ELSEIF (HSURF=='S' .OR. HSURF=='W') THEN
00266     GCOUPLING ='I'
00267   ENDIF
00268 !
00269   CALL INIT_COUPLING_CANOPY( PP(:,1), PPA, PT(:,1), PQ(:,1), &
00270                            PU, PV, PZ(:,1), PXU(:,1),        &
00271                            PRHOA, ZALFAU, ZBETAU, ZALFATH,   &
00272                            ZBETATH, ZALFAQ, ZBETAQ,          &
00273                            ZPA, ZTA, ZQA, ZU, ZV,            &
00274                            ZUREF, ZZREF, ZEXNA,              &
00275                            ZPEW_A_COEF, ZPEW_B_COEF,         &
00276                            ZPET_A_COEF, ZPET_B_COEF,         &
00277                            ZPEQ_A_COEF, ZPEQ_B_COEF          )
00278 !
00279 !-------------------------------------------------------------------------------------
00280 ELSE
00281 !-------------------------------------------------------------------------------------
00282 !
00283 !*      2.     If no SBL scheme is used, forcing is not modified
00284 !              -------------------------------------------------
00285 !
00286   GCOUPLING = HCOUPLING
00287 !
00288   CALL INIT_COUPLING( HCOUPLING,                  &
00289                       PPS, PPA, PTA, PQA, PU, PV, &
00290                       PUREF, PZREF,               &
00291                       PPEW_A_COEF, PPEW_B_COEF,   &
00292                       PPET_A_COEF, PPET_B_COEF,   &
00293                       PPEQ_A_COEF, PPEQ_B_COEF,   &
00294                       ZPA, ZTA, ZQA, ZU, ZV,      &
00295                       ZUREF, ZZREF,               &
00296                       ZPEW_A_COEF, ZPEW_B_COEF,   &
00297                       ZPET_A_COEF, ZPET_B_COEF,   &
00298                       ZPEQ_A_COEF, ZPEQ_B_COEF    ) 
00299 !
00300 END IF
00301 !
00302 !-------------------------------------------------------------------------------------
00303 !
00304 !*      2.     Call of SEAFLUX
00305 !              ------------
00306 !
00307 IF (HSURF=='S') THEN
00308   CALL COUPLING_SEAFLUX_n(HPROGRAM, GCOUPLING,                                             &
00309              PTSTEP, KYEAR, KMONTH, KDAY, PTIME,                                           &
00310              KI, KSV, KSW,                                                                 &
00311              PTSUN, PZENITH, PZENITH2, PAZIM,                                              &
00312              ZZREF, ZUREF, PZS, ZU, ZV, ZQA, ZTA, PRHOA, PSV, PCO2, HSV,                   &
00313              PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, ZPA,                     &
00314              PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                      &
00315              PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                             &
00316              ZPEW_A_COEF, ZPEW_B_COEF,                                                     &
00317              ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF,                           &
00318              'OK'                                                                          )
00319 ELSEIF (HSURF=='W') THEN
00320   CALL COUPLING_WATFLUX_n(HPROGRAM, GCOUPLING,                                             &
00321              PTSTEP, KYEAR, KMONTH, KDAY, PTIME,                                           &
00322              KI, KSV, KSW,                                                                 &
00323              PTSUN, PZENITH, PZENITH2, PAZIM,                                              &
00324              ZZREF, ZUREF, PZS, ZU, ZV, ZQA, ZTA, PRHOA, PSV, PCO2, HSV,                   &
00325              PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, ZPA,                     &
00326              PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                      &
00327              PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                             &
00328              ZPEW_A_COEF, ZPEW_B_COEF,                                                     &
00329              ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF,                           &
00330              'OK'                                                                          )
00331 ELSEIF (HSURF=='F') THEN
00332   CALL COUPLING_FLAKE_n(HPROGRAM, GCOUPLING,                                                &
00333               PTSTEP, KYEAR, KMONTH, KDAY, PTIME,                                           &
00334               KI, KSV, KSW,                                                                 &
00335               PTSUN, PZENITH, PZENITH2, PAZIM,                                              &
00336               ZZREF, ZUREF, PZS, ZU, ZV, ZQA, ZTA, PRHOA, PSV, PCO2, HSV,                   &
00337               PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, ZPA,                     &
00338               PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV,                                      &
00339               PTRAD, PDIR_ALB, PSCA_ALB, PEMIS,                                             &
00340               ZPEW_A_COEF, ZPEW_B_COEF,                                                     &
00341               ZPET_A_COEF, ZPEQ_A_COEF, ZPET_B_COEF, ZPEQ_B_COEF,                           &
00342               'OK'                                                                          )
00343 ENDIF
00344 !
00345 !-------------------------------------------------------------------------------------
00346 !
00347 !*      3.     End if no SBL is used
00348 !              ---------------------
00349 !
00350 IF (.NOT. OSBL .AND. LHOOK) CALL DR_HOOK('COUPLING_SEAWAT_SBL_N',1,ZHOOK_HANDLE)
00351 IF (.NOT. OSBL) RETURN
00352 !
00353 !-------------------------------------------------------------------------------------
00354 !
00355 !*      4.     Computes the impact of canopy and surfaces on air
00356 !              -------------------------------------------------
00357 !
00358  CALL INIT_FORC( ZFORC_U, ZDFORC_UDU, ZFORC_E, ZDFORC_EDE, &
00359                ZFORC_T, ZDFORC_TDT, ZFORC_Q, ZDFORC_QDQ )
00360 !
00361 ZSFLUX_U = - SQRT(PSFU(:)**2+PSFV(:)**2) / PRHOA(:)
00362 ZSFLUX_T(:) = PSFTH(:) / XCPD * ZEXNA(:) / PRHOA(:)
00363 ZSFLUX_Q(:) = PSFTQ(:)
00364 !
00365 !-------------------------------------------------------------------------------------
00366 !
00367 !*      6.    Evolution of canopy air due to these impacts
00368 !             --------------------------------------------
00369 !
00370 ZWIND = SQRT(PU**2+PV**2)
00371  CALL CANOPY_EVOL(KI,KLVL,PTSTEP,2,PZ,ZWIND,PTA,PQA,PPA,PRHOA,                 &
00372                  ZSFLUX_U,ZSFLUX_T,ZSFLUX_Q,                                  &
00373                  ZFORC_U,ZDFORC_UDU,ZFORC_E,ZDFORC_EDE,                       &
00374                  ZFORC_T,ZDFORC_TDT,ZFORC_Q,ZDFORC_QDQ,                       &
00375                  PZ,PZF,PDZ,PDZF,PXU,PTKE,PT,PQ,ZLMO,ZLM,ZLEPS,PP,ZUSTAR,     &
00376                  ZALFAU,ZBETAU,ZALFATH,ZBETATH,ZALFAQ,ZBETAQ                  )
00377 !
00378 PLMO(:) = ZLMO(:,KLVL)
00379 !
00380 !-------------------------------------------------------------------------------------
00381 !
00382 !*      7.    2m and 10m diagnostics if canopy is used
00383 !             ----------------------------------------
00384 !
00385 !
00386 IF (OSBL .AND. K2M>=1) CALL INIT_2M_10M( PP(:,2), PT(:,2), PQ(:,2), PXU, PZ, &
00387                                          PU, PV, ZWIND, PRHOA,               &
00388                                          PT2M, PQ2M, PHU2M, PZON10M, PMER10M,&
00389                                          PWIND10M, PWIND10M_MAX, PT2M_MIN,   &
00390                                          PT2M_MAX, PHU2M_MIN, PHU2M_MAX      )
00391 !
00392 IF (LHOOK) CALL DR_HOOK('COUPLING_SEAWAT_SBL_N',1,ZHOOK_HANDLE)
00393 !
00394 !-------------------------------------------------------------------------------------
00395 !
00396 END SUBROUTINE COUPLING_SEAWAT_SBL_n