SURFEX v7.3
General documentation of Surfex
|
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