44 USE modi_end_io_surf_n
45 USE modi_init_io_surf_n
55 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
56 LOGICAL,
INTENT(IN) :: OSBL
60 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
61 CHARACTER(LEN=3),
INTENT(IN) :: HWRITE
63 CHARACTER(LEN=6),
INTENT(IN) :: HSURF
69 CHARACTER(LEN=8) :: YBASE
70 CHARACTER(LEN=12) :: YRECFM
71 CHARACTER(LEN=13) :: YFORMAT
72 CHARACTER(LEN=100):: YCOMMENT
75 REAL(KIND=JPRB) :: ZHOOK_HANDLE
83 IF (
lhook)
CALL dr_hook(
'WRITESURF_SBL_N',0,zhook_handle)
85 IF (hsurf==
"TOWN ")
THEN 87 ELSEIF (hsurf==
"WATER ")
THEN 89 ELSEIF (hsurf==
"NATURE")
THEN 91 ELSEIF (hsurf==
"SEA ")
THEN 94 ycomment=
'flag to use SBL levels' 95 CALL write_surf(hselect,hprogram,yrecfm,osbl,iresp,hcomment=ycomment)
97 IF (.NOT. osbl .AND.
lhook)
CALL dr_hook(
'WRITESURF_SBL_N',1,zhook_handle
98 IF (.NOT. osbl)
RETURN 100 IF (hsurf==
"TOWN ")
THEN 102 ELSEIF (hsurf==
"WATER ")
THEN 104 ELSEIF (hsurf==
"NATURE")
THEN 106 ELSEIF (hsurf==
"SEA ")
THEN 110 IF (hsurf==
"NATURE")
THEN 118 yrecfm=
trim(ybase)//
'_LVL' 119 ycomment=
'number of SBL levels' 120 CALL write_surf(hselect,hprogram,yrecfm,sb%NLVL,iresp,hcomment=ycomment
125 WRITE(yrecfm,yformat)
trim(ybase)//
'_Z',jl
126 ycomment=
'altitudes of SBL levels (m)' 127 CALL write_surf(hselect,hprogram,yrecfm,sb%XZ(:,jl),iresp,hcomment=ycomment
130 IF (hwrite/=
'PRE')
THEN 135 WRITE(yrecfm,yformat)
trim(ybase)//
'_U',jl
136 ycomment=
'wind at SBL levels (m/s)' 137 CALL write_surf(hselect,hprogram,yrecfm,sb%XU(:,jl),iresp,hcomment=ycomment
143 WRITE(yrecfm,yformat)
trim(ybase)//
'_T',jl
144 ycomment=
'temperature at SBL levels (K)' 145 CALL write_surf(hselect,hprogram,yrecfm,sb%XT(:,jl),iresp,hcomment=ycomment
151 WRITE(yrecfm,yformat)
trim(ybase)//
'_Q',jl
152 ycomment=
'humidity at SBL levels (kg/m3)' 153 CALL write_surf(hselect,hprogram,yrecfm,sb%XQ(:,jl),iresp,hcomment=ycomment
159 WRITE(yrecfm,yformat)
trim(ybase)//
'_E',jl
160 ycomment=
'Tke at SBL levels (m2/s2)' 161 CALL write_surf(hselect,hprogram,yrecfm,sb%XTKE(:,jl),iresp,hcomment
166 IF (hsurf==
"TOWN ")
THEN 169 WRITE(yrecfm,
'(A10,I2.2)')
trim(ybase)//
'_MO',jl
170 ycomment=
'Monin-Obukhov length (m)' 171 CALL write_surf(hselect,hprogram,yrecfm,sb%XLMO(:,jl),iresp,hcomment
176 IF (
ASSOCIATED(sb%XLM))
THEN 178 WRITE(yrecfm,
'(A10,I2.2)')
trim(ybase)//
'_LM',jl
179 ycomment=
'mixing length (m)' 180 CALL write_surf(hselect,hprogram,yrecfm,sb%XLM(:,jl),iresp,hcomment
186 IF (
ASSOCIATED(sb%XLEPS))
THEN 188 WRITE(yrecfm,
'(A10,I2.2)')
trim(ybase)//
'_LE',jl
189 ycomment=
'mixing length (m)' 190 CALL write_surf(hselect,hprogram,yrecfm,sb%XLEPS(:,jl),iresp,hcomment
195 yrecfm=
trim(ybase)//
'_LMO ' 196 CALL write_surf(hselect,hprogram,yrecfm,sb%XLMO(:,sb%NLVL),iresp,hcomment
202 WRITE(yrecfm,yformat)
trim(ybase)//
'_P',jl
203 ycomment=
'Pressure at SBL levels (Pa)' 204 CALL write_surf(hselect,hprogram,yrecfm,sb%XP(:,jl),iresp,hcomment=ycomment
209 IF (
lhook)
CALL dr_hook(
'WRITESURF_SBL_N',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine writesurf_sbl_n(HSELECT, OSBL, SB, HPROGRAM, HWRITE, H