7 HPREFIX, KI, KMASK_P, KPATCH, TPSNOW, &
8 PWSN_WR, PRHO_WR, PHEA_WR, PAGE_WR, PSG1_WR, &
9 PSG2_WR, PHIS_WR, PALB_WR)
53 USE modi_write_field_2d_patch
54 USE modi_write_field_1d_patch
65 LOGICAL,
INTENT(IN) :: OSNOWDIMNC
67 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
69 CHARACTER (LEN=6),
INTENT(IN) :: HPROGRAM
70 CHARACTER (LEN=*),
INTENT(IN) :: HSURFTYPE
73 CHARACTER (LEN=3),
INTENT(IN) :: HPREFIX
75 INTEGER,
INTENT(IN) :: KI
76 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMASK_P
77 INTEGER,
INTENT(IN) :: KPATCH
79 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PWSN_WR
80 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PRHO_WR
81 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PHEA_WR
82 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PAGE_WR
83 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PSG1_WR
84 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PSG2_WR
85 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: PHIS_WR
86 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PALB_WR
90 CHARACTER (LEN=100) :: YFMT
91 CHARACTER(LEN=12) :: YRECFM
92 CHARACTER(LEN=100) :: YCOMMENT
93 CHARACTER(LEN=4) :: YNLAYER
95 CHARACTER(LEN=3) :: YPAT
97 INTEGER :: ISURFTYPE_LEN, IPAT_LEN, IFACT
103 REAL(KIND=JPRB) :: ZHOOK_HANDLE
105 IF (
lhook)
CALL dr_hook(
'WRITESURF_GR_SNOW',0,zhook_handle)
110 isurftype_len = len_trim(hsurftype)
119 WRITE(yfmt,
'(A5,I1,A4)')
'(A3,A',isurftype_len,
',A4)' 120 WRITE(yrecfm,yfmt)
'SN_',hsurftype,
'_TYP' 121 yrecfm=adjustl(hprefix//yrecfm)
123 CALL write_surf(hselect,hprogram,yrecfm,tpsnow%SCHEME,iresp,hcomment=ycomment
129 WRITE(yfmt,
'(A5,I1,A4)')
'(A3,A',isurftype_len,
',A2)' 130 WRITE(yrecfm,yfmt)
'SN_',hsurftype,
'_N' 131 yrecfm=adjustl(hprefix//yrecfm)
132 ycomment =
'(INTEGER)' 133 CALL write_surf(hselect,hprogram,yrecfm,tpsnow%NLAYER,iresp,hcomment=ycomment
142 WRITE(ypat,
'(I2)') kpatch
143 ypat =
"P"//adjustl(ypat)
144 ipat_len = len_trim(adjustl(ypat))
151 IF (tpsnow%NLAYER>0)
THEN 157 WRITE(yfmt,
'(A5,I1,A2,I1,A1)')
'(A3,A',isurftype_len,
',A',ipat_len,
')' 158 WRITE(yrecfm,yfmt)
'SN_',adjustl(hsurftype(:len_trim(hsurftype))),adjustl
161 CALL write_surf(hselect,hprogram,yrecfm,gsnow,iresp,hcomment=ycomment)
167 ycomment =
'(LOGICAL)' 171 IF ( osnowdimnc .AND. hprogram==
'OFFLIN' )
THEN 173 IF (tpsnow%SCHEME==
'1-L' .OR. tpsnow%SCHEME==
'D95' .OR. tpsnow%SCHEME=
'EBA' 174 '3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN 176 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 177 WRITE(yrecfm,yfmt)
'WSN_',hsurftype
178 yrecfm=adjustl(hprefix//yrecfm)
179 WRITE(yfmt,
'(A5,I1,A4)')
'(A9,A',isurftype_len,
',A8)' 180 WRITE(ycomment,yfmt)
'X_Y_WSNOW',hsurftype,
' (kg/m2)' 182 'snow_layer',pwsn_wr)
184 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 185 WRITE(yrecfm,yfmt)
'RSN_',hsurftype
186 yrecfm=adjustl(hprefix//yrecfm)
187 WRITE(yfmt,
'(A5,I1,A4)')
'(A9,A',isurftype_len,
',A8)' 188 WRITE(ycomment,yfmt)
'X_Y_RSNOW',hsurftype,
' (kg/m2)' 190 'snow_layer',prho_wr)
194 IF (tpsnow%SCHEME==
'3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN 196 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 197 WRITE(yrecfm,yfmt)
'HSN_',hsurftype
198 yrecfm=adjustl(hprefix//yrecfm)
199 WRITE(yfmt,
'(A5,I1,A4)')
'(A9,A',isurftype_len,
',A8)' 200 WRITE(ycomment,yfmt)
'X_Y_HSNOW',hsurftype,
' (kg/m2)' 202 'snow_layer',phea_wr)
204 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 205 WRITE(yrecfm,yfmt)
'ASN_',hsurftype
206 yrecfm=adjustl(hprefix//yrecfm)
207 WRITE(yfmt,
'(A5,I1,A4)')
'(A8,A',isurftype_len,
',A8)' 208 WRITE(ycomment,yfmt)
'X_Y_SAGE',hsurftype,
' (kg/m2)' 210 'snow_layer',page_wr)
214 IF (tpsnow%SCHEME==
'CRO')
THEN 216 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 217 WRITE(yrecfm,yfmt)
'SG1_',hsurftype
218 yrecfm=adjustl(hprefix//yrecfm)
219 WRITE(yfmt,
'(A5,I1,A4)')
'(A7,A',isurftype_len,
',A8)' 220 WRITE(ycomment,yfmt)
'X_Y_SG1',hsurftype,
' (kg/m2)' 222 'snow_layer',psg1_wr)
224 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 225 WRITE(yrecfm,yfmt)
'SG2_',hsurftype
226 yrecfm=adjustl(hprefix//yrecfm)
227 WRITE(yfmt,
'(A5,I1,A4)')
'(A7,A',isurftype_len,
',A8)' 228 WRITE(ycomment,yfmt)
'X_Y_SG2',hsurftype,
' (kg/m2)' 230 'snow_layer',psg2_wr)
232 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 233 WRITE(yrecfm,yfmt)
'SHI_',hsurftype
234 yrecfm=adjustl(hprefix//yrecfm)
235 WRITE(yfmt,
'(A5,I1,A4)')
'(A8,A',isurftype_len,
',A8)' 236 WRITE(ycomment,yfmt)
'X_Y_HIST',hsurftype,
' (kg/m2)' 238 'snow_layer',phis_wr)
242 IF (tpsnow%SCHEME==
'1-L')
THEN 244 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 245 WRITE(yrecfm,yfmt)
'TSN_',hsurftype
246 yrecfm=adjustl(hprefix//yrecfm)
247 WRITE(yfmt,
'(A6,I1,A4)')
'(A10,A',isurftype_len,
',A8)' 248 WRITE(ycomment,yfmt)
'X_Y_TSNOW',hsurftype,
' (K)' 255 DO jl = 1,tpsnow%NLAYER
258 IF (jl>9) ynlayer=
'I2.2' 260 IF (tpsnow%SCHEME==
'1-L' .OR. tpsnow%SCHEME==
'D95' .OR. tpsnow%SCHEME
'EBA' 261 '3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN 266 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 267 WRITE(yrecfm,yfmt)
'WSN_',hsurftype,jl
268 yrecfm=adjustl(hprefix//yrecfm)
269 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))' 270 WRITE(ycomment,yfmt)
'X_Y_WSNOW_',hsurftype,jl,
' (kg/m2)' 277 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 278 WRITE(yrecfm,yfmt)
'RSN_',hsurftype,jl
279 yrecfm=adjustl(hprefix//yrecfm)
280 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))' 281 WRITE(ycomment,yfmt)
'X_Y_RSNOW_',hsurftype,jl,
' (kg/m3)' 287 IF (tpsnow%SCHEME==
'3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN 292 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 293 WRITE(yrecfm,yfmt)
'HSN_',hsurftype,jl
294 yrecfm=adjustl(hprefix//yrecfm)
295 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))' 296 WRITE(ycomment,yfmt)
'X_Y_HSNOW_',hsurftype,jl,
' (J/m3)' 303 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 304 WRITE(yrecfm,yfmt)
'SAG_',hsurftype,jl
305 yrecfm=adjustl(hprefix//yrecfm)
306 WRITE(yfmt,
'(A6,I1,A9)')
'(A9,A',isurftype_len,
','//ynlayer//
',A8))' 307 WRITE(ycomment,yfmt)
'X_Y_SAGE_',hsurftype,jl,
' (-)' 313 IF (tpsnow%SCHEME==
'CRO')
THEN 318 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 319 WRITE(yrecfm,yfmt)
'SG1_',hsurftype,jl
320 yrecfm=adjustl(hprefix//yrecfm)
321 WRITE(yfmt,
'(A6,I1,A9)')
'(A11,A',isurftype_len,
','//ynlayer//
',A8))' 322 WRITE(ycomment,yfmt)
'X_Y_SGRAN1_',hsurftype,jl,
' (-)' 329 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 330 WRITE(yrecfm,yfmt)
'SG2_',hsurftype,jl
331 yrecfm=adjustl(hprefix//yrecfm)
332 WRITE(yfmt,
'(A6,I1,A9)')
'(A11,A',isurftype_len,
','//ynlayer//
',A8))' 333 WRITE(ycomment,yfmt)
'X_Y_SGRAN2_',hsurftype,jl,
' (-)' 340 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 341 WRITE(yrecfm,yfmt)
'SHI_',hsurftype,jl
342 yrecfm=adjustl(hprefix//yrecfm)
343 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))' 344 WRITE(ycomment,yfmt)
'X_Y_SHIST_',hsurftype,jl,
' (-)' 353 IF (tpsnow%SCHEME==
'1-L')
THEN 355 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')' 356 WRITE(yrecfm,yfmt)
'TSN_',hsurftype,jl
357 yrecfm=adjustl(hprefix//yrecfm)
358 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))' 359 WRITE(ycomment,yfmt)
'X_Y_TSNOW_',hsurftype,jl,
' (K)' 372 IF (tpsnow%SCHEME==
'D95' .OR. tpsnow%SCHEME==
'EBA' .OR. tpsnow%SCHEME==
'1-L' 373 '3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN 375 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')' 376 WRITE(yrecfm,yfmt)
'ASN_',hsurftype
377 yrecfm=adjustl(hprefix//yrecfm)
378 WRITE(yfmt,
'(A6,I1,A5)')
'(A10,A',isurftype_len,
',A10)' 379 WRITE(ycomment,yfmt)
'X_Y_ASNOW_',hsurftype,
' (no unit)' 385 IF (
lhook)
CALL dr_hook(
'WRITESURF_GR_SNOW',1,zhook_handle)
subroutine write_field_1d_patch(HSELECT, HPROGRAM, HRECFM, HCOMMENT, KP, KMASK, PFIELD_IN, KSIZE, PWORK_WR)
subroutine write_field_2d_patch(HSELECT, HPROGRAM, HRECFM, HCOMMENT, KP, KMASK, PFIELD_IN, KSIZE, HNAM_DIM, PWORK_WR)
subroutine writesurf_gr_snow(OSNOWDIMNC, HSELECT, HPROGRAM, HSURF
subroutine detect_field(HPROGRAM, PFIELD, OITSHERE)