SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/subscale_z0eff.F90
Go to the documentation of this file.
00001 !     ##########################
00002       MODULE MODI_SUBSCALE_Z0EFF
00003 !     ##########################
00004 INTERFACE SUBSCALE_Z0EFF
00005       SUBROUTINE SUBSCALE_Z0EFF_1D_NVEG(PAOSIP,PAOSIM,PAOSJP,PAOSJM,            &
00006                                 PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,        &
00007                                 PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,       &
00008                                 PZ0REL,OMASK                               )
00009 !
00010 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00011 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00012 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00013 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00014 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00015 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00016 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00017 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00018 REAL,               INTENT(IN)  :: PZ0VEG  ! vegetation roughness length
00019 !
00020 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIP! roughness length for increasing x
00021 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIM! roughness length for decreasing x
00022 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJP! roughness length for increasing y
00023 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJM! roughness length for decreasing y
00024 !
00025 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0REL  ! roughness length
00026 !                                                      ! of SSO only
00027 LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OMASK ! mask where computations
00028                                                        ! are done
00029 !
00030 END SUBROUTINE SUBSCALE_Z0EFF_1D_NVEG
00031 !
00032       SUBROUTINE SUBSCALE_Z0EFF_1D_BIS(PAOSIP,PAOSIM,PAOSJP,PAOSJM,        &
00033                                 PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,        &
00034                                 PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,       &
00035                                 PZ0REL,OMASK                               )
00036 !
00037 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00038 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00039 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00040 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00041 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00042 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00043 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00044 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00045 REAL, DIMENSION(:), INTENT(IN)  :: PZ0VEG  ! vegetation roughness length
00046 !
00047 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIP! roughness length for increasing x
00048 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIM! roughness length for decreasing x
00049 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJP! roughness length for increasing y
00050 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJM! roughness length for decreasing y
00051 !
00052 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0REL  ! roughness length
00053 !                                                      ! of SSO only
00054 LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OMASK ! mask where computations
00055                                                        ! are done
00056 !
00057 END SUBROUTINE SUBSCALE_Z0EFF_1D_BIS
00058 
00059 SUBROUTINE SUBSCALE_Z0EFF_1D_PATCH(PAOSIP,PAOSIM,PAOSJP,PAOSJM,            &
00060                                 PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,        &
00061                                 PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,       &
00062                                 PZ0REL,OMASK                               )
00063 !
00064 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00065 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00066 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00067 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00068 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00069 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00070 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00071 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00072 REAL, DIMENSION(:,:), INTENT(IN)  :: PZ0VEG  ! vegetation roughness length
00073 !
00074 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFIP! roughness length for increasing x
00075 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFIM! roughness length for decreasing x
00076 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFJP! roughness length for increasing y
00077 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFJM! roughness length for decreasing y
00078 !
00079 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0REL  ! roughness length
00080 !                                                      ! of SSO only
00081 LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OMASK ! mask where computations
00082                                                        ! are done
00083 !
00084 END SUBROUTINE SUBSCALE_Z0EFF_1D_PATCH
00085 
00086 END INTERFACE
00087 !
00088 END MODULE MODI_SUBSCALE_Z0EFF
00089 !     ######################################################################
00090       SUBROUTINE SUBSCALE_Z0EFF_1D_NVEG(PAOSIP,PAOSIM,PAOSJP,PAOSJM,       &
00091                                 PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,        &
00092                                 PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,       &
00093                                 PZ0REL,OMASK                               )
00094 !     ######################################################################
00095 !
00096 !!*SUBSCALE_Z0EFF  computes an effective roughness lenght deduced
00097 !!                 from the subgrid-scale orography.
00098 !!
00099 !!
00100 !!    METHOD
00101 !!    ------
00102 !!    See M.Georgelin and al. July 1994, Monthly Weather Review.
00103 !!   
00104 !!    EXTERNAL
00105 !!    --------
00106 !!
00107 !!    IMPLICIT ARGUMENTS
00108 !!    ------------------
00109 !!
00110 !!
00111 !!    REFERENCE
00112 !!    ---------
00113 !!
00114 !!    AUTHOR
00115 !!    ------
00116 !!
00117 !!    M. Georgelin      Laboratoire d'Aerologie
00118 !!
00119 !!    MODIFICATION
00120 !!    ------------
00121 !!
00122 !!    Original    18/12/95
00123 !!                22/12/97 (V Masson) call with dummy arguments
00124 !!
00125 !----------------------------------------------------------------------------
00126 !
00127 !*    0.     DECLARATION
00128 !            -----------
00129 !
00130 USE MODD_SURF_PAR, ONLY : XUNDEF
00131 !
00132 USE MODI_SUBSCALE_Z0EFF_1D
00133 USE MODI_Z0REL_1D
00134 !
00135 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00136 USE PARKIND1  ,ONLY : JPRB
00137 !
00138 IMPLICIT NONE
00139 !
00140 !*    0.1    Declaration of dummy arguments
00141 !            ------------------------------
00142 !
00143 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00144 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00145 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00146 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00147 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00148 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00149 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00150 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00151 REAL,               INTENT(IN)  :: PZ0VEG  ! vegetation roughness length
00152 !
00153 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIP! roughness length for increasing x
00154 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIM! roughness length for decreasing x
00155 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJP! roughness length for increasing y
00156 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJM! roughness length for decreasing y
00157 !
00158 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0REL  ! roughness length
00159 !                                                    ! of SSO only
00160 LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OMASK ! mask where computations
00161                                                        ! are done
00162 !
00163 REAL,    DIMENSION(SIZE(PZ0EFFIM)) :: ZZ0VEG
00164 LOGICAL, DIMENSION(SIZE(PZ0EFFIM)) :: GMASK
00165 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00166 !
00167 !-------------------------------------------------------------------------------
00168 IF (LHOOK) CALL DR_HOOK('MODI_SUBSCALE_Z0EFF:SUBSCALE_Z0EFF_1D_NVEG',0,ZHOOK_HANDLE)
00169 !
00170 IF (PRESENT(OMASK)) THEN
00171   GMASK=OMASK
00172 ELSE
00173   GMASK=(PAOSIP/=XUNDEF)    ! computations always performed where SSO data exist
00174   PZ0EFFIP = XUNDEF
00175   PZ0EFFIM = XUNDEF
00176   PZ0EFFJP = XUNDEF
00177   PZ0EFFJM = XUNDEF
00178 END IF
00179 !
00180 ZZ0VEG(:) = PZ0VEG
00181 !
00182  CALL SUBSCALE_Z0EFF_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM,             &
00183                        PHO2IP,PHO2IM,PHO2JP,PHO2JM,ZZ0VEG,      &
00184                        PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,     &
00185                        GMASK                                    )
00186 !
00187 IF (PRESENT(PZ0REL)) CALL Z0REL_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM, &
00188                                    PHO2IP,PHO2IM,PHO2JP,PHO2JM, &
00189                                    PZ0REL,GMASK                 )
00190 !
00191 IF (LHOOK) CALL DR_HOOK('MODI_SUBSCALE_Z0EFF:SUBSCALE_Z0EFF_1D_NVEG',1,ZHOOK_HANDLE)
00192 !
00193 !-------------------------------------------------------------------------------
00194 END SUBROUTINE SUBSCALE_Z0EFF_1D_NVEG
00195 !-------------------------------------------------------------------------------
00196 !
00197 !     ######################################################################
00198       SUBROUTINE SUBSCALE_Z0EFF_1D_BIS(PAOSIP,PAOSIM,PAOSJP,PAOSJM,        &
00199                                 PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,        &
00200                                 PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,       &
00201                                 PZ0REL,OMASK                               )
00202 !     ######################################################################
00203 !
00204 !!*SUBSCALE_Z0EFF  computes an effective roughness lenght deduced
00205 !!                 from the subgrid-scale orography.
00206 !!
00207 !!
00208 !!    METHOD
00209 !!    ------
00210 !!    See M.Georgelin and al. July 1994, Monthly Weather Review.
00211 !!   
00212 !!    EXTERNAL
00213 !!    --------
00214 !!
00215 !!    IMPLICIT ARGUMENTS
00216 !!    ------------------
00217 !!
00218 !!
00219 !!    REFERENCE
00220 !!    ---------
00221 !!
00222 !!    AUTHOR
00223 !!    ------
00224 !!
00225 !!    M. Georgelin      Laboratoire d'Aerologie
00226 !!
00227 !!    MODIFICATION
00228 !!    ------------
00229 !!
00230 !!    Original    18/12/95
00231 !!                22/12/97 (V Masson) call with dummy arguments
00232 !!
00233 !----------------------------------------------------------------------------
00234 !
00235 !*    0.     DECLARATION
00236 !            -----------
00237 !
00238 USE MODD_SURF_PAR, ONLY : XUNDEF
00239 !
00240 USE MODI_SUBSCALE_Z0EFF_1D
00241 USE MODI_Z0REL_1D
00242 !
00243 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00244 USE PARKIND1  ,ONLY : JPRB
00245 !
00246 IMPLICIT NONE
00247 !
00248 !*    0.1    Declaration of dummy arguments
00249 !            ------------------------------
00250 !
00251 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00252 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00253 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00254 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00255 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00256 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00257 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00258 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00259 REAL, DIMENSION(:), INTENT(IN)  :: PZ0VEG  ! vegetation roughness length
00260 !
00261 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIP! roughness length for increasing x
00262 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFIM! roughness length for decreasing x
00263 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJP! roughness length for increasing y
00264 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0EFFJM! roughness length for decreasing y
00265 !
00266 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0REL  ! roughness length
00267 !                                                      ! of SSO only
00268 LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OMASK ! mask where computations
00269                                                        ! are done
00270 !
00271 !*    0.2    Declaration of other local variables
00272 !            ------------------------------------
00273 !
00274 LOGICAL, DIMENSION(SIZE(PZ0EFFIM)) :: GMASK
00275 !
00276 INTEGER         :: JJ
00277 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00278 !----------------------------------------------------------------------------
00279 !
00280 IF (LHOOK) CALL DR_HOOK('MODI_SUBSCALE_Z0EFF:SUBSCALE_Z0EFF_1D_BIS',0,ZHOOK_HANDLE)
00281 !
00282 IF (PRESENT(OMASK)) THEN
00283   GMASK=OMASK
00284 ELSE
00285   GMASK=(PAOSIP/=XUNDEF)    ! computations always performed where SSO data exist
00286   PZ0EFFIP = XUNDEF
00287   PZ0EFFIM = XUNDEF
00288   PZ0EFFJP = XUNDEF
00289   PZ0EFFJM = XUNDEF
00290 END IF
00291 !
00292  CALL SUBSCALE_Z0EFF_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM,             &
00293                        PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,      &
00294                        PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,     &
00295                        GMASK                                    )
00296 !
00297 IF (PRESENT(PZ0REL)) CALL Z0REL_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM, &
00298                                    PHO2IP,PHO2IM,PHO2JP,PHO2JM, &
00299                                    PZ0REL,GMASK                 )
00300 !
00301 IF (LHOOK) CALL DR_HOOK('MODI_SUBSCALE_Z0EFF:SUBSCALE_Z0EFF_1D_BIS',1,ZHOOK_HANDLE)
00302 !-------------------------------------------------------------------------------
00303 !
00304 END SUBROUTINE SUBSCALE_Z0EFF_1D_BIS
00305 !
00306 !     ######spl
00307       SUBROUTINE SUBSCALE_Z0EFF_1D_PATCH(PAOSIP,PAOSIM,PAOSJP,PAOSJM,      &
00308                                 PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG,        &
00309                                 PZ0EFFIP,PZ0EFFIM,PZ0EFFJP,PZ0EFFJM,       &
00310                                 PZ0REL,OMASK                               )
00311 !     ######################################################################
00312 !
00313 !!*SUBSCALE_Z0EFF  computes an effective roughness lenght deduced
00314 !!                 from the subgrid-scale orography.
00315 !!
00316 !!
00317 !!    METHOD
00318 !!    ------
00319 !!    See M.Georgelin and al. July 1994, Monthly Weather Review.
00320 !!   
00321 !!    EXTERNAL
00322 !!    --------
00323 !!
00324 !!    IMPLICIT ARGUMENTS
00325 !!    ------------------
00326 !!
00327 !!
00328 !!    REFERENCE
00329 !!    ---------
00330 !!
00331 !!    AUTHOR
00332 !!    ------
00333 !!
00334 !!    M. Georgelin      Laboratoire d'Aerologie
00335 !!
00336 !!    MODIFICATION
00337 !!    ------------
00338 !!
00339 !!    Original    18/12/95
00340 !!                22/12/97 (V Masson) call with dummy arguments
00341 !!
00342 !----------------------------------------------------------------------------
00343 !
00344 !*    0.     DECLARATION
00345 !            -----------
00346 !
00347 USE MODD_CSTS,       ONLY : XKARMAN
00348 USE MODD_ISBA_PAR,   ONLY : XCDZ0EFF
00349 USE MODD_SURF_PAR,   ONLY : XUNDEF
00350 !
00351 USE MODI_SUBSCALE_Z0EFF_1D
00352 USE MODI_Z0REL_1D
00353 !
00354 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00355 USE PARKIND1  ,ONLY : JPRB
00356 !
00357 IMPLICIT NONE
00358 !
00359 !*    0.1    Declaration of dummy arguments
00360 !            ------------------------------
00361 !
00362 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00363 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00364 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00365 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00366 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00367 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00368 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00369 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00370 REAL, DIMENSION(:,:), INTENT(IN)  :: PZ0VEG  ! vegetation roughness length
00371 !
00372 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFIP! roughness length for increasing x
00373 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFIM! roughness length for decreasing x
00374 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFJP! roughness length for increasing y
00375 REAL, DIMENSION(:,:), INTENT(INOUT) :: PZ0EFFJM! roughness length for decreasing y
00376 !
00377 REAL, DIMENSION(:), INTENT(OUT), OPTIONAL :: PZ0REL  ! roughness length
00378 !                                                      ! of SSO only
00379 LOGICAL, DIMENSION(:), INTENT(IN), OPTIONAL :: OMASK ! mask where computations
00380                                                        ! are done
00381 !
00382 !*    0.2    Declaration of other local variables
00383 !            ------------------------------------
00384 !
00385 LOGICAL, DIMENSION(SIZE(PZ0EFFIM,1)) :: GMASK
00386 !
00387 INTEGER :: IPATCH  ! number of patches
00388 INTEGER :: JPATCH  ! loop counter on number of patches
00389 INTEGER :: JJ      ! loop counter on points
00390 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00391 !----------------------------------------------------------------------------
00392 !
00393 IF (LHOOK) CALL DR_HOOK('MODI_SUBSCALE_Z0EFF:SUBSCALE_Z0EFF_1D_PATCH',0,ZHOOK_HANDLE)
00394 PZ0EFFIP = XUNDEF
00395 PZ0EFFIM = XUNDEF
00396 PZ0EFFJP = XUNDEF
00397 PZ0EFFJM = XUNDEF
00398 !
00399 IPATCH = SIZE(PZ0VEG,2)
00400 !----------------------------------------------------------------------------
00401 DO JPATCH=1,IPATCH
00402 !----------------------------------------------------------------------------
00403 !
00404   IF (PRESENT(OMASK)) THEN
00405     GMASK=OMASK
00406   ELSE
00407     GMASK=PZ0VEG(:,JPATCH) /= XUNDEF    ! computations always performed where defined
00408   END IF
00409 !
00410   CALL SUBSCALE_Z0EFF_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM,                &
00411                        PHO2IP,PHO2IM,PHO2JP,PHO2JM,PZ0VEG(:,JPATCH), &
00412                        PZ0EFFIP(:,JPATCH),PZ0EFFIM(:,JPATCH),        &
00413                        PZ0EFFJP(:,JPATCH),PZ0EFFJM(:,JPATCH),        &
00414                        GMASK                                         )
00415 !
00416 END DO
00417 !
00418 IF (PRESENT(OMASK)) THEN
00419   GMASK=OMASK
00420 ELSE
00421   GMASK=(PAOSIP/=XUNDEF)
00422 END IF
00423 !
00424 IF (PRESENT(PZ0REL)) CALL Z0REL_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM, &
00425                                    PHO2IP,PHO2IM,PHO2JP,PHO2JM, &
00426                                    PZ0REL,GMASK                 )
00427 !
00428 IF (LHOOK) CALL DR_HOOK('MODI_SUBSCALE_Z0EFF:SUBSCALE_Z0EFF_1D_PATCH',1,ZHOOK_HANDLE)
00429 !-------------------------------------------------------------------------------
00430 !
00431 END SUBROUTINE SUBSCALE_Z0EFF_1D_PATCH