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