38 INTEGER,
PARAMETER :: IOUNIT_DUMP = 33, IOUNIT_LOAD = 34, &
40 PRIVATE iounit_dump, iounit_load, iounit_textout,
fpio
64 CHARACTER(LEN=*),
INTENT(IN) :: filename
65 INTEGER,
INTENT(IN) :: cm_index
69 INTEGER millisecs_start, millisecs_stop, count_rate, count_max
71 CALL system_clock(millisecs_start, count_rate, count_max)
72 OPEN(iounit_dump, file=filename, action=
'WRITE', status=
'REPLACE', form=
"unformatted", access=
"stream")
73 CALL
fpio(iounit_dump,
'DUMP', cm_index)
75 CALL system_clock(millisecs_stop, count_rate, count_max)
81 CHARACTER(LEN=*),
INTENT(IN) :: filename
82 INTEGER,
INTENT(IN) :: cm_index
86 INTEGER millisecs_start, millisecs_stop, count_rate, count_max
88 CALL system_clock(millisecs_start, count_rate, count_max)
89 OPEN(iounit_load, file=filename, action=
'READ', status=
'OLD', form=
"unformatted", access=
"stream")
90 CALL
fpio(iounit_load,
'LOAD', cm_index)
92 CALL system_clock(millisecs_stop, count_rate, count_max)
97 INTEGER,
INTENT(IN) :: cm_index
107 nx=0.0; ny=0.0; nxmin1=0.0; nymin1=0.0; nxfield=0.0
108 nuvz=0.0; nwz=0.0; nz=0.0; nmixz=0.0; nlev_ec=0.0
109 dx=0.0; dy=0.0; xlon0=0.0; ylat0=0.0; dxconst=0.0; dyconst=0.0
112 oro=0.0; excessoro=0.0; lsm=0.0; xlanduse=0.0; height=0.0
115 uu(:,:,:,cm_index) = 0.0
116 vv(:,:,:,cm_index) = 0.0
117 uupol(:,:,:,cm_index) = 0.0
118 vvpol(:,:,:,cm_index) = 0.0
119 ww(:,:,:,cm_index) = 0.0
120 tt(:,:,:,cm_index) = 0.0
121 qv(:,:,:,cm_index) = 0.0
122 pv(:,:,:,cm_index) = 0.0
123 rho(:,:,:,cm_index) = 0.0
124 drhodz(:,:,:,cm_index) = 0.0
125 tth(:,:,:,cm_index) = 0.0
126 qvh(:,:,:,cm_index) = 0.0
127 pplev(:,:,:,cm_index) = 0.0
128 clouds(:,:,:,cm_index) = 0.0
129 cloudsh(:,:,cm_index) = 0.0
132 ps(:,:,:,cm_index) = 0.0
133 sd(:,:,:,cm_index) = 0.0
134 msl(:,:,:,cm_index) = 0.0
135 tcc(:,:,:,cm_index) = 0.0
136 u10(:,:,:,cm_index) = 0.0
137 v10(:,:,:,cm_index) = 0.0
138 tt2(:,:,:,cm_index) = 0.0
139 td2(:,:,:,cm_index) = 0.0
140 lsprec(:,:,:,cm_index) = 0.0
141 convprec(:,:,:,cm_index) = 0.0
142 sshf(:,:,:,cm_index) = 0.0
143 ssr(:,:,:,cm_index) = 0.0
144 surfstr(:,:,:,cm_index) = 0.0
145 ustar(:,:,:,cm_index) = 0.0
146 wstar(:,:,:,cm_index) = 0.0
147 hmix(:,:,:,cm_index) = 0.0
148 tropopause(:,:,:,cm_index) = 0.0
149 oli(:,:,:,cm_index) = 0.0
150 diffk(:,:,:,cm_index) = 0.0
151 vdep(:,:,:,cm_index) = 0.0
171 oron=0.0; excessoron=0.0; lsmn=0.0; xlandusen=0.0
174 uun(:,:,:,cm_index,:) = 0.0
175 wwn(:,:,:,cm_index,:) = 0.0
176 ttn(:,:,:,cm_index,:) = 0.0
177 qvn(:,:,:,cm_index,:) = 0.0
178 pvn(:,:,:,cm_index,:) = 0.0
179 cloudsn(:,:,:,cm_index,:) = 0.0
180 cloudsnh(:,:,cm_index,:) = 0.0
181 rhon(:,:,:,cm_index,:) = 0.0
182 drhodzn(:,:,:,cm_index,:) = 0.0
183 tthn(:,:,:,cm_index,:) = 0.0
184 qvhn(:,:,:,cm_index,:) = 0.0
187 psn(:,:,:,cm_index,:) = 0.0
188 sdn(:,:,:,cm_index,:) = 0.0
189 msln(:,:,:,cm_index,:) = 0.0
190 tccn(:,:,:,cm_index,:) = 0.0
191 u10n(:,:,:,cm_index,:) = 0.0
192 v10n(:,:,:,cm_index,:) = 0.0
193 tt2n(:,:,:,cm_index,:) = 0.0
194 td2n(:,:,:,cm_index,:) = 0.0
195 lsprecn(:,:,:,cm_index,:) = 0.0
196 convprecn(:,:,:,cm_index,:) = 0.0
197 sshfn(:,:,:,cm_index,:) = 0.0
198 ssrn(:,:,:,cm_index,:) = 0.0
199 surfstrn(:,:,:,cm_index,:) = 0.0
200 ustarn(:,:,:,cm_index,:) = 0.0
201 wstarn(:,:,:,cm_index,:) = 0.0
202 hmixn(:,:,:,cm_index,:) = 0.0
203 tropopausen(:,:,:,cm_index,:) = 0.0
204 olin(:,:,:,cm_index,:) = 0.0
205 diffkn(:,:,:,cm_index,:) = 0.0
206 vdepn(:,:,:,cm_index,:) = 0.0
217 xglobal=.false.; sglobal=.false.; nglobal=.false.
218 switchnorthg=0.0; switchsouthg=0.0
219 southpolemap(:) = 0.0
220 northpolemap(:) = 0.0
234 cbasefluxn(:,:,:) = 0.0
238 psconv=0.0; tt2conv=0.0; td2conv=0.0
239 nconvlev=0.0; nconvtop=0.0
243 SUBROUTINE fpio(iounit, op, cm_index)
245 INTEGER,
INTENT(IN) :: iounit
246 CHARACTER(LEN=4),
INTENT(IN) :: op
247 INTEGER,
INTENT(IN) :: cm_index
250 CHARACTER(LEN=128) :: errmesg
252 if (op ==
'DUMP')
THEN
255 WRITE(iounit) nx, ny, nxmin1, nymin1, nxfield
256 WRITE(iounit) nuvz, nwz, nz, nmixz, nlev_ec
257 WRITE(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst
260 WRITE(iounit) oro, excessoro, lsm, xlanduse, height
263 WRITE(iounit) uu(:,:,:,cm_index)
264 WRITE(iounit) vv(:,:,:,cm_index)
265 WRITE(iounit) uupol(:,:,:,cm_index)
266 WRITE(iounit) vvpol(:,:,:,cm_index)
267 WRITE(iounit) ww(:,:,:,cm_index)
268 WRITE(iounit) tt(:,:,:,cm_index)
269 WRITE(iounit) qv(:,:,:,cm_index)
270 WRITE(iounit) pv(:,:,:,cm_index)
271 WRITE(iounit) rho(:,:,:,cm_index)
272 WRITE(iounit) drhodz(:,:,:,cm_index)
273 WRITE(iounit) tth(:,:,:,cm_index)
274 WRITE(iounit) qvh(:,:,:,cm_index)
275 WRITE(iounit) pplev(:,:,:,cm_index)
276 WRITE(iounit) clouds(:,:,:,cm_index)
277 WRITE(iounit) cloudsh(:,:,cm_index)
280 WRITE(iounit) ps(:,:,:,cm_index)
281 WRITE(iounit) sd(:,:,:,cm_index)
282 WRITE(iounit) msl(:,:,:,cm_index)
283 WRITE(iounit) tcc(:,:,:,cm_index)
284 WRITE(iounit) u10(:,:,:,cm_index)
285 WRITE(iounit) v10(:,:,:,cm_index)
286 WRITE(iounit) tt2(:,:,:,cm_index)
287 WRITE(iounit) td2(:,:,:,cm_index)
288 WRITE(iounit) lsprec(:,:,:,cm_index)
289 WRITE(iounit) convprec(:,:,:,cm_index)
290 WRITE(iounit) sshf(:,:,:,cm_index)
291 WRITE(iounit) ssr(:,:,:,cm_index)
292 WRITE(iounit) surfstr(:,:,:,cm_index)
293 WRITE(iounit) ustar(:,:,:,cm_index)
294 WRITE(iounit) wstar(:,:,:,cm_index)
295 WRITE(iounit) hmix(:,:,:,cm_index)
296 WRITE(iounit) tropopause(:,:,:,cm_index)
297 WRITE(iounit) oli(:,:,:,cm_index)
298 WRITE(iounit) diffk(:,:,:,cm_index)
299 WRITE(iounit) vdep(:,:,:,cm_index)
307 WRITE(iounit) aknew(:)
308 WRITE(iounit) bknew(:)
315 WRITE(iounit) xlon0n(:)
316 WRITE(iounit) ylat0n(:)
319 WRITE(iounit) oron, excessoron, lsmn, xlandusen
322 WRITE(iounit) uun(:,:,:,cm_index,:)
323 WRITE(iounit) vvn(:,:,:,cm_index,:)
324 WRITE(iounit) wwn(:,:,:,cm_index,:)
325 WRITE(iounit) ttn(:,:,:,cm_index,:)
326 WRITE(iounit) qvn(:,:,:,cm_index,:)
327 WRITE(iounit) pvn(:,:,:,cm_index,:)
328 WRITE(iounit) cloudsn(:,:,:,cm_index,:)
329 WRITE(iounit) cloudsnh(:,:,cm_index,:)
330 WRITE(iounit) rhon(:,:,:,cm_index,:)
331 WRITE(iounit) drhodzn(:,:,:,cm_index,:)
332 WRITE(iounit) tthn(:,:,:,cm_index,:)
333 WRITE(iounit) qvhn(:,:,:,cm_index,:)
336 WRITE(iounit) psn(:,:,:,cm_index,:)
337 WRITE(iounit) sdn(:,:,:,cm_index,:)
338 WRITE(iounit) msln(:,:,:,cm_index,:)
339 WRITE(iounit) tccn(:,:,:,cm_index,:)
340 WRITE(iounit) u10n(:,:,:,cm_index,:)
341 WRITE(iounit) v10n(:,:,:,cm_index,:)
342 WRITE(iounit) tt2n(:,:,:,cm_index,:)
343 WRITE(iounit) td2n(:,:,:,cm_index,:)
344 WRITE(iounit) lsprecn(:,:,:,cm_index,:)
345 WRITE(iounit) convprecn(:,:,:,cm_index,:)
346 WRITE(iounit) sshfn(:,:,:,cm_index,:)
347 WRITE(iounit) ssrn(:,:,:,cm_index,:)
348 WRITE(iounit) surfstrn(:,:,:,cm_index,:)
349 WRITE(iounit) ustarn(:,:,:,cm_index,:)
350 WRITE(iounit) wstarn(:,:,:,cm_index,:)
351 WRITE(iounit) hmixn(:,:,:,cm_index,:)
352 WRITE(iounit) tropopausen(:,:,:,cm_index,:)
353 WRITE(iounit) olin(:,:,:,cm_index,:)
354 WRITE(iounit) diffkn(:,:,:,cm_index,:)
355 WRITE(iounit) vdepn(:,:,:,cm_index,:)
358 WRITE(iounit) xresoln(:)
359 WRITE(iounit) yresoln(:)
366 WRITE(iounit) xglobal, sglobal, nglobal
367 WRITE(iounit) switchnorthg, switchsouthg
368 WRITE(iounit) southpolemap(:)
369 WRITE(iounit) northpolemap(:)
372 WRITE(iounit) pconv(:)
373 WRITE(iounit) phconv(:)
375 WRITE(iounit) pconv_hpa(:)
376 WRITE(iounit) phconv_hpa(:)
379 WRITE(iounit) fmass(:,:)
381 WRITE(iounit) fmassfrac(:,:)
382 WRITE(iounit) cbaseflux(:,:)
383 WRITE(iounit) cbasefluxn(:,:,:)
384 WRITE(iounit) tconv(:)
385 WRITE(iounit) qconv(:)
386 WRITE(iounit) qsconv(:)
387 WRITE(iounit) psconv, tt2conv, td2conv
388 WRITE(iounit) nconvlev, nconvtop
390 ELSE IF (op ==
'LOAD')
THEN
393 READ(iounit) nx, ny, nxmin1, nymin1, nxfield
394 READ(iounit) nuvz, nwz, nz, nmixz, nlev_ec
395 READ(iounit) dx, dy, xlon0, ylat0, dxconst, dyconst
398 READ(iounit) oro, excessoro, lsm, xlanduse, height
401 READ(iounit) uu(:,:,:,cm_index)
402 READ(iounit) vv(:,:,:,cm_index)
403 READ(iounit) uupol(:,:,:,cm_index)
404 READ(iounit) vvpol(:,:,:,cm_index)
405 READ(iounit) ww(:,:,:,cm_index)
406 READ(iounit) tt(:,:,:,cm_index)
407 READ(iounit) qv(:,:,:,cm_index)
408 READ(iounit) pv(:,:,:,cm_index)
409 READ(iounit) rho(:,:,:,cm_index)
410 READ(iounit) drhodz(:,:,:,cm_index)
411 READ(iounit) tth(:,:,:,cm_index)
412 READ(iounit) qvh(:,:,:,cm_index)
413 READ(iounit) pplev(:,:,:,cm_index)
414 READ(iounit) clouds(:,:,:,cm_index)
415 READ(iounit) cloudsh(:,:,cm_index)
418 READ(iounit) ps(:,:,:,cm_index)
419 READ(iounit) sd(:,:,:,cm_index)
420 READ(iounit) msl(:,:,:,cm_index)
421 READ(iounit) tcc(:,:,:,cm_index)
422 READ(iounit) u10(:,:,:,cm_index)
423 READ(iounit) v10(:,:,:,cm_index)
424 READ(iounit) tt2(:,:,:,cm_index)
425 READ(iounit) td2(:,:,:,cm_index)
426 READ(iounit) lsprec(:,:,:,cm_index)
427 READ(iounit) convprec(:,:,:,cm_index)
428 READ(iounit) sshf(:,:,:,cm_index)
429 READ(iounit) ssr(:,:,:,cm_index)
430 READ(iounit) surfstr(:,:,:,cm_index)
431 READ(iounit) ustar(:,:,:,cm_index)
432 READ(iounit) wstar(:,:,:,cm_index)
433 READ(iounit) hmix(:,:,:,cm_index)
434 READ(iounit) tropopause(:,:,:,cm_index)
435 READ(iounit) oli(:,:,:,cm_index)
436 READ(iounit) diffk(:,:,:,cm_index)
437 READ(iounit) vdep(:,:,:,cm_index)
445 READ(iounit) aknew(:)
446 READ(iounit) bknew(:)
454 READ(iounit) xlon0n(:)
455 READ(iounit) ylat0n(:)
459 READ(iounit) oron, excessoron, lsmn, xlandusen
462 READ(iounit) uun(:,:,:,cm_index,:)
463 READ(iounit) vvn(:,:,:,cm_index,:)
464 READ(iounit) wwn(:,:,:,cm_index,:)
465 READ(iounit) ttn(:,:,:,cm_index,:)
466 READ(iounit) qvn(:,:,:,cm_index,:)
467 READ(iounit) pvn(:,:,:,cm_index,:)
468 READ(iounit) cloudsn(:,:,:,cm_index,:)
469 READ(iounit) cloudsnh(:,:,cm_index,:)
470 READ(iounit) rhon(:,:,:,cm_index,:)
471 READ(iounit) drhodzn(:,:,:,cm_index,:)
472 READ(iounit) tthn(:,:,:,cm_index,:)
473 READ(iounit) qvhn(:,:,:,cm_index,:)
476 READ(iounit) psn(:,:,:,cm_index,:)
477 READ(iounit) sdn(:,:,:,cm_index,:)
478 READ(iounit) msln(:,:,:,cm_index,:)
479 READ(iounit) tccn(:,:,:,cm_index,:)
480 READ(iounit) u10n(:,:,:,cm_index,:)
481 READ(iounit) v10n(:,:,:,cm_index,:)
482 READ(iounit) tt2n(:,:,:,cm_index,:)
483 READ(iounit) td2n(:,:,:,cm_index,:)
484 READ(iounit) lsprecn(:,:,:,cm_index,:)
485 READ(iounit) convprecn(:,:,:,cm_index,:)
486 READ(iounit) sshfn(:,:,:,cm_index,:)
487 READ(iounit) ssrn(:,:,:,cm_index,:)
488 READ(iounit) surfstrn(:,:,:,cm_index,:)
489 READ(iounit) ustarn(:,:,:,cm_index,:)
490 READ(iounit) wstarn(:,:,:,cm_index,:)
491 READ(iounit) hmixn(:,:,:,cm_index,:)
492 READ(iounit) tropopausen(:,:,:,cm_index,:)
493 READ(iounit) olin(:,:,:,cm_index,:)
494 READ(iounit) diffkn(:,:,:,cm_index,:)
495 READ(iounit) vdepn(:,:,:,cm_index,:)
498 READ(iounit) xresoln(:)
499 READ(iounit) yresoln(:)
506 READ(iounit) xglobal, sglobal, nglobal
507 READ(iounit) switchnorthg, switchsouthg
508 READ(iounit) southpolemap(:)
509 READ(iounit) northpolemap(:)
512 READ(iounit) pconv(:)
513 READ(iounit) phconv(:)
515 READ(iounit) pconv_hpa(:)
516 READ(iounit) phconv_hpa(:)
519 READ(iounit) fmass(:,:)
521 READ(iounit) fmassfrac(:,:)
522 READ(iounit) cbaseflux(:,:)
523 READ(iounit) cbasefluxn(:,:,:)
524 READ(iounit) tconv(:)
525 READ(iounit) qconv(:)
526 READ(iounit) qsconv(:)
527 READ(iounit) psconv, tt2conv, td2conv
528 READ(iounit) nconvlev, nconvtop
531 stop
'fpio(): Illegal operation'
544 CHARACTER(LEN=*),
INTENT(IN) :: filename
545 INTEGER,
INTENT(IN) :: cm_index
551 OPEN(iounit_textout, file=filename, action=
'WRITE', &
552 form=
"formatted", access=
"APPEND")
554 WRITE(iounit_textout, *)
'oro: ', oro
555 WRITE(iounit_textout, *)
'excessoro: ', excessoro
556 WRITE(iounit_textout, *)
'lsm: ', lsm
557 WRITE(iounit_textout, *)
'xlanduse: ', xlanduse
558 WRITE(iounit_textout, *)
'height: ', height
560 WRITE(iounit_textout, *)
'uu: ', uu(:,:,:,cm_index)
561 WRITE(iounit_textout, *)
'vv: ', vv(:,:,:,cm_index)
562 WRITE(iounit_textout, *)
'uupol: ', uupol(:,:,:,cm_index)
563 WRITE(iounit_textout, *)
'vvpol: ', vvpol(:,:,:,cm_index)
564 WRITE(iounit_textout, *)
'ww: ', ww(:,:,:,cm_index)
565 WRITE(iounit_textout, *)
'tt: ', tt(:,:,:,cm_index)
566 WRITE(iounit_textout, *)
'qv: ', qv(:,:,:,cm_index)
567 WRITE(iounit_textout, *)
'pv: ', pv(:,:,:,cm_index)
568 WRITE(iounit_textout, *)
'rho: ', rho(:,:,:,cm_index)
569 WRITE(iounit_textout, *)
'drhodz: ', drhodz(:,:,:,cm_index)
570 WRITE(iounit_textout, *)
'tth: ', tth(:,:,:,cm_index)
571 WRITE(iounit_textout, *)
'qvh: ', qvh(:,:,:,cm_index)
572 WRITE(iounit_textout, *)
'pplev: ', pplev(:,:,:,cm_index)
573 WRITE(iounit_textout, *)
'clouds: ', clouds(:,:,:,cm_index)
574 WRITE(iounit_textout, *)
'cloudsh: ', cloudsh(:,:,cm_index)
579 CLOSE(iounit_textout)
subroutine fpmetbinary_zero(cm_index)
subroutine fpmetbinary_filetext(filename, cm_index)
subroutine fpmetbinary_dump(filename, cm_index)
subroutine, private fpio(iounit, op, cm_index)
subroutine fpmetbinary_load(filename, cm_index)