6 SUBROUTINE read_sbl_n (DTCO, U, SB, OSBL, HPROGRAM, HSURF)
53 USE modi_get_type_dim_n
67 LOGICAL,
INTENT(INOUT) :: OSBL
69 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
70 CHARACTER(LEN=6),
INTENT(IN) :: HSURF
77 CHARACTER(LEN=8) :: YBASE
78 CHARACTER(LEN=12) :: YRECFM
79 CHARACTER(LEN=13) :: YFORMAT
80 CHARACTER(LEN=3) :: YREAD
84 INTEGER :: IVERSION, IBUGFIX
85 REAL(KIND=JPRB) :: ZHOOK_HANDLE
97 CALL read_surf(hprogram,yrecfm,iversion,iresp)
100 CALL read_surf(hprogram,yrecfm,ibugfix,iresp)
105 IF (hsurf==
"TOWN ")
THEN 107 ELSEIF (hsurf==
"WATER ")
THEN 109 ELSEIF (hsurf==
"NATURE")
THEN 111 ELSEIF (hsurf==
"SEA ")
THEN 114 CALL read_surf(hprogram,yrecfm,osbl,iresp)
118 ALLOCATE(sb%XZ (0,0))
119 ALLOCATE(sb%XU (0,0))
120 ALLOCATE(sb%XT (0,0))
121 ALLOCATE(sb%XQ (0,0))
122 ALLOCATE(sb%XTKE(0,0))
123 ALLOCATE(sb%XLMO(0,0))
124 ALLOCATE(sb%XP (0,0))
125 IF (hsurf==
"TOWN ")
THEN 126 ALLOCATE(sb%XLM (0,0))
127 ALLOCATE(sb%XLEPS(0,0))
129 ALLOCATE(sb%XDZ (0,0))
130 ALLOCATE(sb%XZF (0,0))
131 ALLOCATE(sb%XDZF(0,0))
138 IF (hsurf==
"TOWN ")
THEN 140 ELSEIF (hsurf==
"WATER ")
THEN 142 ELSEIF (hsurf==
"NATURE")
THEN 144 ELSEIF (hsurf==
"SEA ")
THEN 148 IF (hsurf==
"NATURE")
THEN 154 yrecfm=
trim(ybase)//
'_LVL' 155 CALL read_surf(hprogram,yrecfm,sb%NLVL,iresp)
162 ALLOCATE(sb%XZ(ilu,sb%NLVL))
165 WRITE(yrecfm,yformat)
trim(ybase)//
'_Z',jlayer
166 CALL read_surf(hprogram,yrecfm,sb%XZ(:,jlayer),iresp)
169 ALLOCATE(sb%XU (ilu,sb%NLVL))
170 ALLOCATE(sb%XT (ilu,sb%NLVL))
171 ALLOCATE(sb%XQ (ilu,sb%NLVL))
172 ALLOCATE(sb%XTKE(ilu,sb%NLVL))
173 ALLOCATE(sb%XLMO(ilu,sb%NLVL))
174 ALLOCATE(sb%XP (ilu,sb%NLVL))
176 IF (iversion>7 .OR. iversion==7 .AND.ibugfix>=2)
THEN 178 CALL read_surf(hprogram,yrecfm,yread,iresp)
183 IF(yread==
'ALL')
THEN 187 WRITE(yrecfm,yformat)
trim(ybase)//
'_U',jlayer
188 CALL read_surf(hprogram,yrecfm,sb%XU(:,jlayer),iresp)
193 WRITE(yrecfm,yformat)
trim(ybase)//
'_T',jlayer
194 CALL read_surf(hprogram,yrecfm,sb%XT(:,jlayer),iresp)
199 WRITE(yrecfm,yformat)
trim(ybase)//
'_Q',jlayer
200 CALL read_surf( hprogram,yrecfm,sb%XQ(:,jlayer),iresp)
205 WRITE(yrecfm,yformat)
trim(ybase)//
'_E',jlayer
206 CALL read_surf(hprogram,yrecfm,sb%XTKE(:,jlayer),iresp)
210 IF (iversion<7 .OR. hsurf/=
"TOWN ")
THEN 211 yrecfm=
trim(ybase)//
'_LMO ' 212 CALL read_surf(hprogram,yrecfm,sb%XLMO(:,1),iresp)
213 DO jlayer = 2,sb%NLVL
214 sb%XLMO(:,jlayer) = sb%XLMO(:,1)
218 WRITE(yrecfm,
'(A10,I2.2)')
trim(ybase)//
'_MO',jlayer
219 CALL read_surf(hprogram,yrecfm,sb%XLMO(:,jlayer),iresp)
225 WRITE(yrecfm,yformat)
trim(ybase)//
'_P',jlayer
226 CALL read_surf(hprogram,yrecfm,sb%XP(:,jlayer),iresp)
238 IF (hsurf==
"TOWN ")
THEN 242 ALLOCATE(sb%XLM(ilu,sb%NLVL))
246 ALLOCATE(sb%XLEPS(ilu,sb%NLVL))
267 ALLOCATE(sb%XDZ (ilu,sb%NLVL))
268 ALLOCATE(sb%XZF (ilu,sb%NLVL))
269 ALLOCATE(sb%XDZF(ilu,sb%NLVL))
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
static const char * trim(const char *name, int *n)
subroutine read_sbl_n(DTCO, U, SB, OSBL, HPROGRAM, HSURF)
subroutine canopy_grid(KI, SB)