7 hprogram,hsurftype,hprefix,tpsnow )
57 USE yomhook
,ONLY : lhook, dr_hook
58 USE parkind1
,ONLY : jprb
68 CHARACTER (LEN=6),
INTENT(IN) :: hprogram
69 CHARACTER (LEN=*),
INTENT(IN) :: hsurftype
72 CHARACTER (LEN=3),
INTENT(IN) :: hprefix
78 INTEGER :: isurftype_len
80 CHARACTER (LEN=100) :: yfmt
81 CHARACTER(LEN=12) :: yrecfm
82 CHARACTER(LEN=100) :: ycomment
88 CHARACTER(LEN=4) :: ynlayer
91 REAL(KIND=JPRB) :: zhook_handle
93 IF (lhook) CALL dr_hook(
'WRITESURF_GR_SNOW',0,zhook_handle)
98 isurftype_len = len_trim(hsurftype)
104 WRITE(yfmt,
'(A5,I1,A4)')
'(A3,A',isurftype_len,
',A4)'
105 WRITE(yrecfm,yfmt)
'SN_',hsurftype,
'_TYP'
106 yrecfm=adjustl(hprefix//yrecfm)
109 hprogram,yrecfm,tpsnow%SCHEME,iresp,hcomment=ycomment)
115 WRITE(yfmt,
'(A5,I1,A4)')
'(A3,A',isurftype_len,
',A2)'
116 WRITE(yrecfm,yfmt)
'SN_',hsurftype,
'_N'
117 yrecfm=adjustl(hprefix//yrecfm)
118 ycomment =
'(INTEGER)'
120 hprogram,yrecfm,tpsnow%NLAYER,iresp,hcomment=ycomment)
126 IF (tpsnow%NLAYER>0)
THEN
132 WRITE(yfmt,
'(A5,I1,A1)')
'(A3,A',isurftype_len,
')'
133 WRITE(yrecfm,yfmt)
'SN_',hsurftype
134 yrecfm=adjustl(hprefix//yrecfm)
135 ycomment =
'(LOGICAL)'
137 hprogram,yrecfm,gsnow,iresp,hcomment=ycomment)
140 IF (.NOT. gsnow)
THEN
141 IF (lhook) CALL dr_hook(
'WRITESURF_GR_SNOW',1,zhook_handle)
149 ycomment =
'(LOGICAL)'
151 hprogram,
'LSNOW_FRAC_T',lsnow_frac_tot,iresp,hcomment=ycomment)
154 DO jlayer = 1,tpsnow%NLAYER
157 IF (jlayer>9) ynlayer=
'I2.2'
159 IF (tpsnow%SCHEME==
'1-L' .OR. tpsnow%SCHEME==
'D95' .OR. tpsnow%SCHEME==
'EBA' .OR. &
160 tpsnow%SCHEME==
'3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN
165 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
166 WRITE(yrecfm,yfmt)
'WSN_',hsurftype,jlayer
167 yrecfm=adjustl(hprefix//yrecfm)
168 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))'
169 WRITE(ycomment,yfmt)
'X_Y_WSNOW_',hsurftype,jlayer,
' (kg/m2)'
171 hprogram,yrecfm,tpsnow%WSNOW(:,jlayer,:),iresp,hcomment=ycomment)
176 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
177 WRITE(yrecfm,yfmt)
'RSN_',hsurftype,jlayer
178 yrecfm=adjustl(hprefix//yrecfm)
179 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))'
180 WRITE(ycomment,yfmt)
'X_Y_RSNOW_',hsurftype,jlayer,
' (kg/m3)'
182 hprogram,yrecfm,tpsnow%RHO(:,jlayer,:),iresp,hcomment=ycomment)
189 IF (tpsnow%SCHEME==
'1-L')
THEN
191 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
192 WRITE(yrecfm,yfmt)
'TSN_',hsurftype,jlayer
193 yrecfm=adjustl(hprefix//yrecfm)
194 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))'
195 WRITE(ycomment,yfmt)
'X_Y_TSNOW_',hsurftype,jlayer,
' (K)'
197 hprogram,yrecfm,tpsnow%T(:,jlayer,:),iresp,hcomment=ycomment)
201 IF (tpsnow%SCHEME==
'3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN
206 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
207 WRITE(yrecfm,yfmt)
'HSN_',hsurftype,jlayer
208 yrecfm=adjustl(hprefix//yrecfm)
209 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))'
210 WRITE(ycomment,yfmt)
'X_Y_HSNOW_',hsurftype,jlayer,
' (J/m3)'
212 hprogram,yrecfm,tpsnow%HEAT(:,jlayer,:),iresp,hcomment=ycomment)
217 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
218 WRITE(yrecfm,yfmt)
'SAG_',hsurftype,jlayer
219 yrecfm=adjustl(hprefix//yrecfm)
220 WRITE(yfmt,
'(A6,I1,A9)')
'(A9,A',isurftype_len,
','//ynlayer//
',A8))'
221 WRITE(ycomment,yfmt)
'X_Y_SAGE_',hsurftype,jlayer,
' (-)'
223 hprogram,yrecfm,tpsnow%AGE(:,jlayer,:),iresp,hcomment=ycomment)
227 IF (tpsnow%SCHEME==
'CRO')
THEN
232 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
233 WRITE(yrecfm,yfmt)
'SG1_',hsurftype,jlayer
234 yrecfm=adjustl(hprefix//yrecfm)
235 WRITE(yfmt,
'(A6,I1,A9)')
'(A11,A',isurftype_len,
','//ynlayer//
',A8))'
236 WRITE(ycomment,yfmt)
'X_Y_SGRAN1_',hsurftype,jlayer,
' (-)'
238 hprogram,yrecfm,tpsnow%GRAN1(:,jlayer,:),iresp,hcomment=ycomment)
243 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
244 WRITE(yrecfm,yfmt)
'SG2_',hsurftype,jlayer
245 yrecfm=adjustl(hprefix//yrecfm)
246 WRITE(yfmt,
'(A6,I1,A9)')
'(A11,A',isurftype_len,
','//ynlayer//
',A8))'
247 WRITE(ycomment,yfmt)
'X_Y_SGRAN2_',hsurftype,jlayer,
' (-)'
249 hprogram,yrecfm,tpsnow%GRAN2(:,jlayer,:),iresp,hcomment=ycomment)
254 WRITE(yfmt,
'(A5,I1,A6)')
'(A4,A',isurftype_len,
','//ynlayer//
')'
255 WRITE(yrecfm,yfmt)
'SHI_',hsurftype,jlayer
256 yrecfm=adjustl(hprefix//yrecfm)
257 WRITE(yfmt,
'(A6,I1,A9)')
'(A10,A',isurftype_len,
','//ynlayer//
',A8))'
258 WRITE(ycomment,yfmt)
'X_Y_SHIST_',hsurftype,jlayer,
' (-)'
260 hprogram,yrecfm,tpsnow%HIST(:,jlayer,:),iresp,hcomment=ycomment)
270 IF (tpsnow%SCHEME==
'D95' .OR. tpsnow%SCHEME==
'EBA' .OR. tpsnow%SCHEME==
'1-L' .OR. &
271 tpsnow%SCHEME==
'3-L' .OR. tpsnow%SCHEME==
'CRO')
THEN
273 WRITE(yfmt,
'(A5,I1,A1)')
'(A4,A',isurftype_len,
')'
274 WRITE(yrecfm,yfmt)
'ASN_',hsurftype
275 yrecfm=adjustl(hprefix//yrecfm)
276 WRITE(yfmt,
'(A6,I1,A5)')
'(A10,A',isurftype_len,
',A10)'
277 WRITE(ycomment,yfmt)
'X_Y_ASNOW_',hsurftype,
' (no unit)'
279 hprogram,yrecfm,tpsnow%ALB(:,:),iresp,hcomment=ycomment)
283 IF (lhook) CALL dr_hook(
'WRITESURF_GR_SNOW',1,zhook_handle)
subroutine writesurf_gr_snow(DGU, U, HPROGRAM, HSURFTYPE, HPREFIX, TPSNOW)
subroutine detect_field(HPROGRAM, PFIELD, OITSHERE)