SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/read_prep_teb_snow.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE READ_PREP_TEB_SNOW(HPROGRAM,HSNOW_ROOF,KSNOW_ROOF,HSNOW_ROAD,KSNOW_ROAD,HFILE,HFILETYPE)
00003 !     #######################################################
00004 !
00005 !!****  *READ_PREP_TEB_SNOW* - routine to read the configuration for snow
00006 !!                              in TEB fields preparation
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      A. Lemonsu  *Meteo France*      
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    04/2007 
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODN_PREP_TEB_SNOW
00038 USE MODD_READ_NAMELIST, ONLY : LNAM_READ
00039 !
00040 USE MODD_SURF_PAR,       ONLY : XUNDEF
00041 !
00042 USE MODE_POS_SURF
00043 USE MODI_TEST_NAM_VAR_SURF
00044 USE MODI_GET_LUOUT
00045 USE MODI_OPEN_NAMELIST
00046 USE MODI_CLOSE_NAMELIST
00047 !
00048 USE MODD_CSTS,     ONLY : XTT
00049 USE MODD_SNOW_PAR, ONLY : XANSMIN, XRHOSMAX
00050 USE MODD_PREP_TEB, ONLY : XWSNOW_ROOF_p=>XWSNOW_ROOF, XTSNOW_ROOF_p=>XTSNOW_ROOF, &
00051                           XRSNOW_ROOF_p=>XRSNOW_ROOF, XASNOW_ROOF, &
00052                           XWSNOW_ROAD_p=>XWSNOW_ROAD, XTSNOW_ROAD_p=>XTSNOW_ROAD, &
00053                           XRSNOW_ROAD_p=>XRSNOW_ROAD, XASNOW_ROAD, &
00054                           CFILE_SNOW, CTYPE_SNOW, LSNOW_IDEAL 
00055 !
00056 USE MODD_PREP_SNOW, ONLY : NSNOW_LAYER_MAX
00057 !
00058 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00059 USE PARKIND1  ,ONLY : JPRB
00060 !
00061 IMPLICIT NONE
00062 !
00063 !*       0.1   Declarations of arguments
00064 !              -------------------------
00065 !
00066  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling TEB
00067  CHARACTER(LEN=3),  INTENT(OUT) :: HSNOW_ROOF ! snow scheme for roofs
00068  CHARACTER(LEN=3),  INTENT(OUT) :: HSNOW_ROAD ! snow scheme for roads
00069 INTEGER,           INTENT(OUT) :: KSNOW_ROOF ! snow scheme layers for roofs
00070 INTEGER,           INTENT(OUT) :: KSNOW_ROAD ! snow scheme layers for roads
00071  CHARACTER(LEN=28), OPTIONAL, INTENT(OUT) :: HFILE        ! file name
00072  CHARACTER(LEN=6),  OPTIONAL, INTENT(OUT) :: HFILETYPE    ! file type
00073 !
00074 !*       0.2   Declarations of local variables
00075 !              -------------------------------
00076 !
00077 REAL, DIMENSION(NSNOW_LAYER_MAX) :: XWSNOW_ROAD, XRSNOW_ROAD, XTSNOW_ROAD, 
00078                                     XWSNOW_ROOF, XRSNOW_ROOF, XTSNOW_ROOF
00079 !
00080 LOGICAL           :: GFOUND         ! Return code when searching namelist
00081 INTEGER           :: ILUOUT         ! output file logical unit
00082 INTEGER           :: ILUNAM         ! namelist file logical unit
00083 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00084 !-------------------------------------------------------------------------------
00085 NAMELIST/NAM_PREP_TEB_SNOW/CSNOW_ROOF, CSNOW_ROAD, CFILE_SNOW, CTYPE_SNOW, LSNOW_IDEAL, &
00086                            XWSNOW_ROOF, XTSNOW_ROOF, XRSNOW_ROOF, XASNOW_ROOF,          &
00087                            XWSNOW_ROAD, XTSNOW_ROAD, XRSNOW_ROAD, XASNOW_ROAD
00088 !-------------------------------------------------------------------------------
00089 !
00090 !* default
00091 !  -------
00092 !
00093 
00094 IF (LHOOK) CALL DR_HOOK('READ_PREP_TEB_SNOW',0,ZHOOK_HANDLE)
00095 IF (LNAM_READ) THEN
00096   !
00097   CSNOW_ROOF = '1-L'
00098   CSNOW_ROAD = '1-L'
00099   !
00100   CFILE_SNOW    = '                         '
00101   CTYPE_SNOW    = '      '  
00102   !
00103   XWSNOW_ROOF(:) = 0.
00104   XTSNOW_ROOF(:) = XTT
00105   XRSNOW_ROOF(:) = XRHOSMAX
00106   XASNOW_ROOF = XANSMIN
00107   !
00108   XWSNOW_ROAD(:) = 0.
00109   XTSNOW_ROAD(:) = XTT
00110   XRSNOW_ROAD(:) = XRHOSMAX
00111   XASNOW_ROAD = XANSMIN
00112   !
00113   CALL GET_LUOUT(HPROGRAM,ILUOUT)
00114   CALL OPEN_NAMELIST(HPROGRAM,ILUNAM)
00115   !
00116   !* reading of namelist
00117   !  -------------------
00118   !
00119   !
00120   CALL POSNAM(ILUNAM,'NAM_PREP_TEB_SNOW',GFOUND,ILUOUT)
00121   IF (GFOUND) READ(UNIT=ILUNAM,NML=NAM_PREP_TEB_SNOW)
00122   !
00123   CALL TEST_NAM_VAR_SURF(ILUOUT,'CSNOW_ROOF',CSNOW_ROOF,'1-L')
00124   CALL TEST_NAM_VAR_SURF(ILUOUT,'CSNOW_ROAD',CSNOW_ROAD,'1-L')
00125   !
00126   ALLOCATE(XWSNOW_ROOF_p(1))
00127   ALLOCATE(XRSNOW_ROOF_p(1))
00128   ALLOCATE(XTSNOW_ROOF_p(1))
00129   !
00130   XWSNOW_ROOF_p=XWSNOW_ROOF(1)
00131   XRSNOW_ROOF_p=XRSNOW_ROOF(1)
00132   XTSNOW_ROOF_p=XTSNOW_ROOF(1)
00133   !
00134   ALLOCATE(XWSNOW_ROAD_p(1))
00135   ALLOCATE(XRSNOW_ROAD_p(1))
00136   ALLOCATE(XTSNOW_ROAD_p(1))
00137   !
00138   XWSNOW_ROAD_p=XWSNOW_ROAD(1)
00139   XRSNOW_ROAD_p=XRSNOW_ROAD(1)
00140   XTSNOW_ROAD_p=XTSNOW_ROAD(1)
00141   !
00142   CALL CLOSE_NAMELIST(HPROGRAM,ILUNAM)
00143   !
00144 ENDIF
00145 !
00146 HSNOW_ROOF = CSNOW_ROOF
00147 HSNOW_ROAD = CSNOW_ROAD
00148 KSNOW_ROOF = 1
00149 KSNOW_ROAD = 1
00150 !
00151 IF (LEN_TRIM(CFILE_SNOW)>0 .AND. LEN_TRIM(CTYPE_SNOW)>0 ) THEN
00152   IF (PRESENT(HFILE)) HFILE = CFILE_SNOW
00153   IF (PRESENT(HFILETYPE)) HFILETYPE = CTYPE_SNOW
00154 END IF
00155 !
00156 IF (LHOOK) CALL DR_HOOK('READ_PREP_TEB_SNOW',1,ZHOOK_HANDLE)
00157 !-------------------------------------------------------------------------------
00158 !-------------------------------------------------------------------------------
00159 !
00160 END SUBROUTINE READ_PREP_TEB_SNOW