SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/z0rel_1d.F90
Go to the documentation of this file.
00001 !     ######################################################################
00002       SUBROUTINE Z0REL_1D(PAOSIP,PAOSIM,PAOSJP,PAOSJM,            &
00003                           PHO2IP,PHO2IM,PHO2JP,PHO2JM,            &
00004                           PZ0REL,OMASK                            )
00005 !     ######################################################################
00006 !
00007 !!*SUBSCALE_Z0EFF  computes an effective roughness lenght deduced
00008 !!                 from the subgrid-scale orography.
00009 !!
00010 !!
00011 !!    METHOD
00012 !!    ------
00013 !!    See M.Georgelin and al. July 1994, Monthly Weather Review.
00014 !!   
00015 !!    EXTERNAL
00016 !!    --------
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!
00022 !!    REFERENCE
00023 !!    ---------
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!
00028 !!    M. Georgelin      Laboratoire d'Aerologie
00029 !!
00030 !!    MODIFICATION
00031 !!    ------------
00032 !!
00033 !!    Original    18/12/95
00034 !!                22/12/97 (V Masson) call with dummy arguments
00035 !!
00036 !----------------------------------------------------------------------------
00037 !
00038 !*    0.     DECLARATION
00039 !            -----------
00040 !
00041 USE MODD_SURF_PAR, ONLY : XUNDEF
00042 USE MODD_CSTS,     ONLY : XKARMAN
00043 USE MODD_ISBA_PAR, ONLY : XCDZ0EFF
00044 !
00045 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00046 USE PARKIND1  ,ONLY : JPRB
00047 !
00048 IMPLICIT NONE
00049 !
00050 !*    0.1    Declaration of dummy arguments
00051 !            ------------------------------
00052 !
00053 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIP  ! A/S for increasing x
00054 REAL, DIMENSION(:), INTENT(IN)  :: PAOSIM  ! A/S for decreasing x
00055 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJP  ! A/S for increasing y
00056 REAL, DIMENSION(:), INTENT(IN)  :: PAOSJM  ! A/S for decreasing y
00057 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IP  ! h/2 for increasing x
00058 REAL, DIMENSION(:), INTENT(IN)  :: PHO2IM  ! h/2 for decreasing x
00059 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JP  ! h/2 for increasing y
00060 REAL, DIMENSION(:), INTENT(IN)  :: PHO2JM  ! h/2 for decreasing y
00061 !
00062 REAL, DIMENSION(:), INTENT(OUT) :: PZ0REL  ! roughness length
00063 !                                                      ! of SSO only
00064 LOGICAL, DIMENSION(:), INTENT(IN) :: OMASK ! mask where computations
00065                                                        ! are done
00066 !
00067 !*    0.2    Declaration of other local variables
00068 !            ------------------------------------
00069 !
00070 REAL,    DIMENSION(SIZE(PAOSIP)) :: ZLOC
00071 !
00072 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00073 !----------------------------------------------------------------------------
00074 IF (LHOOK) CALL DR_HOOK('Z0REL_1D',0,ZHOOK_HANDLE)
00075 !
00076 PZ0REL=XUNDEF
00077 !
00078 ZLOC(:) = 0.
00079 !
00080 WHERE (OMASK(:))
00081   ZLOC  (:) = 0.25 * XCDZ0EFF/(2.*XKARMAN**2)                  &
00082                    * (PAOSIP(:)+PAOSIM(:)+PAOSJP(:)+PAOSJM(:))        
00083   WHERE ( ZLOC(:) > 0. )
00084     PZ0REL(:) = 0.25 * (PHO2IP(:)+PHO2IM(:)+PHO2JP(:)+PHO2JM(:)) &
00085                      * EXP(-SQRT(1./ZLOC(:)))
00086     PZ0REL(:) = MAX(PZ0REL(:),0.)
00087   ELSEWHERE
00088     PZ0REL(:) = 0.
00089   END WHERE
00090 END WHERE
00091 !
00092 IF (LHOOK) CALL DR_HOOK('Z0REL_1D',1,ZHOOK_HANDLE)
00093 !-------------------------------------------------------------------------------
00094 END SUBROUTINE Z0REL_1D