SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/set_rough.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE SET_ROUGH(OCANOPY,HROUGH)
00003 !     ########################################################################
00004 !
00005 !!****  *SET_ROUGH* - routine to set default values for roughness ISBA configuration
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    01/2004 
00031 !-------------------------------------------------------------------------------
00032 !
00033 !*       0.    DECLARATIONS
00034 !              ------------
00035 !
00036 USE MODD_SURF_PAR,   ONLY : XUNDEF
00037 !
00038 !
00039 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00040 USE PARKIND1  ,ONLY : JPRB
00041 !
00042 USE MODI_ABOR1_SFX
00043 !
00044 IMPLICIT NONE
00045 !
00046 !*       0.1   Declarations of arguments
00047 !              -------------------------
00048 !
00049 !
00050 LOGICAL,           INTENT(IN)     :: OCANOPY    ! True  = SBL scheme
00051                                                 ! False = no SBL scheme
00052  CHARACTER(LEN=4),  INTENT(INOUT)  :: HROUGH     ! type of roughness length
00053 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00054 !
00055 !
00056 !*       0.2   Declarations of local variables
00057 !              -------------------------------
00058 !
00059 !-------------------------------------------------------------------------------
00060 !
00061 !* default value if needed
00062 !
00063 IF (LHOOK) CALL DR_HOOK('SET_ROUGH',0,ZHOOK_HANDLE)
00064 IF (HROUGH  == "UNDE") THEN
00065   IF (OCANOPY) THEN
00066     HROUGH = "BE04"
00067   ELSE
00068     HROUGH = "Z04D"
00069   END IF
00070 END IF
00071 !
00072 !* coherence check
00073 !
00074 IF (OCANOPY .AND. (HROUGH=="Z01D" .OR. HROUGH=="Z04D")) THEN
00075   CALL ABOR1_SFX('If LISBA_CANOPY=T, orographic roughness cannot be computed by CROUGH="Z01D" or "Z04D"')
00076 END IF
00077 !
00078 IF (.NOT. OCANOPY .AND. HROUGH=="BE04") THEN
00079   CALL ABOR1_SFX('If LISBA_CANOPY=F, orographic roughness cannot be computed by CROUGH="BE04"')
00080 END IF
00081 IF (LHOOK) CALL DR_HOOK('SET_ROUGH',1,ZHOOK_HANDLE)
00082 !
00083 !-------------------------------------------------------------------------------
00084 !
00085 END SUBROUTINE SET_ROUGH