20#if defined PIO_LIB && defined DISTRIBUTE
26#if defined PIO_LIB && defined DISTRIBUTE
34#if defined PIO_LIB && defined DISTRIBUTE
82#if defined PIO_LIB && defined DISTRIBUTE
89#if defined PARALLEL_IO && defined DISTRIBUTE
93 & ncvarid, tindex, gtype, &
94 & LBi, UBi, LBj, UBj, LBk, UBk, LBt, UBt, &
102 & MinValue, MaxValue)
RESULT (status)
114 logical,
intent(in),
optional :: setfillval
116 integer,
intent(in) :: ng, model, ncid, ncvarid, tindex, gtype
117 integer,
intent(in) :: ifield
118 integer,
intent(in) :: lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt
120 integer,
intent(in),
optional :: extractfield
122 real(dp),
intent(in) :: ascl
126 real(r8),
intent(in) :: amask(lbi:,lbj:)
128 real(r8),
intent(in) :: adat(lbi:,lbj:,lbk:,lbt:)
131 real(r8),
intent(in) :: amask(lbi:ubi,lbj:ubj)
133 real(r8),
intent(in) :: adat(lbi:ubi,lbj:ubj,lbk:ubk,lbt:ubt)
135 real(r8),
intent(out),
optional :: minvalue
136 real(r8),
intent(out),
optional :: maxvalue
142 integer :: extract_flag
143 integer :: i, ic, j, jc, k, kc, l, lc, npts
144 integer :: imin, imax, jmin, jmax, kmin, kmax
145 integer :: ioff, joff, koff, loff
146 integer :: istr, iend
147 integer :: ilen, isize, jlen, jsize, ijlen, ijklen, klen, llen
151 integer,
dimension(5) :: start, total
153 real(r8),
parameter :: inival = 0.0_r8
155 real(r8),
allocatable :: awrk(:)
168 SELECT CASE (abs(mytype))
214 IF (
PRESENT(setfillval))
THEN
226 IF (
PRESENT(extractfield))
THEN
227 extract_flag=extractfield
244 SELECT CASE (abs(mytype))
280 IF (.not.
allocated(awrk))
THEN
281 allocate ( awrk(npts) )
293 awrk(ic)=adat(i,j,k,l)*ascl
295 IF (abs(awrk(ic)).eq.0.0_r8)
THEN
300 IF ((amask(i,j).eq.0.0_r8).and.landfill)
THEN
322 status=nf90_put_var(ncid, ncvarid, awrk, start, total)
325# if defined WRITE_WATER && defined MASKING
335 SELECT CASE (abs(mytype))
371 IF (.not.
allocated(awrk))
THEN
372 allocate ( awrk(npts) )
388 awrk(ic)=adat(i,j,k,l)*ascl
390 IF (abs(awrk(ic)).eq.0.0_r8)
THEN
394 IF (amask(i,j).eq.0.0_r8)
THEN
404 CALL mp_collect (ng, model, npts, inival, awrk)
410 IF (awrk(i).lt.
spval)
THEN
427 status=nf90_put_var(ncid, ncvarid, awrk(istr:), start, total)
435 IF (
allocated(awrk))
THEN
447 & ncvarid, tindex, gtype, &
448 & LBi, UBi, LBj, UBj, LBk, UBk, LBt, UBt, &
456 & MinValue, MaxValue)
RESULT (status)
476 logical,
intent(in),
optional :: setfillval
478 integer,
intent(in) :: ng, model, ncid, ncvarid, tindex, gtype
479 integer,
intent(in) :: ifield
480 integer,
intent(in) :: lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt
482 integer,
intent(in),
optional :: extractfield
484 real(dp),
intent(in) :: ascl
488 real(r8),
intent(in) :: amask(lbi:,lbj:)
490 real(r8),
intent(in) :: adat(lbi:,lbj:,lbk:,lbt:)
493 real(r8),
intent(in) :: amask(lbi:ubi,lbj:ubj)
495 real(r8),
intent(in) :: adat(lbi:ubi,lbj:ubj,lbk:ubk,lbt:ubt)
497 real(r8),
intent(out),
optional :: minvalue
498 real(r8),
intent(out),
optional :: maxvalue
504 integer :: extract_flag
505 integer :: i, fourth, npts, tile
508 integer,
dimension(5) :: start, total
510 real(r8),
dimension((Lm(ng)+2)*(Mm(ng)+2)*(UBk-LBk+1)) :: awrk
534 IF (
PRESENT(setfillval))
THEN
546 IF (
PRESENT(extractfield))
THEN
547 extract_flag=extractfield
556 stats % checksum=0_i8b
566 IF (
PRESENT(minvalue))
THEN
581 dim4_loop :
DO fourth=lbt,ubt
583 & gtype, ifield, tindex, &
584 & landfill, extract_flag, &
585 & lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, &
591 & start, total, npts, awrk)
597 IF (
PRESENT(minvalue))
THEN
600 IF (abs(awrk(i)).lt.
spval)
THEN
601 minvalue=min(minvalue,awrk(i))
602 maxvalue=max(maxvalue,awrk(i))
613 status=nf90_put_var(ncid, ncvarid, awrk, start, total)
625 & lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, &
632 WRITE (stdout,10) trim(
vname(1,ifield)), stats%min, stats%max, &
634 10
FORMAT (4x,
'- ',a,
':',t35,
'Min = ',1p,e15.8,
', Max = ', &
635 & 1p,e15.8,
', CheckSum = ',i0)
651#if defined PIO_LIB && defined DISTRIBUTE
655 & pioVar, tindex, pioDesc, &
656 & LBi, UBi, LBj, UBj, LBk, UBk, LBt, UBt, &
661 & Adat, SetFillVal, &
662 & MinValue, MaxValue)
RESULT (status)
674 logical,
intent(in),
optional :: setfillval
676 integer,
intent(in) :: ng, model, tindex
677 integer,
intent(in) :: ifield
678 integer,
intent(in) :: lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt
680 integer,
intent(in),
optional :: extractfield
682 real(dp),
intent(in) :: ascl
686 real(r8),
intent(in) :: amask(lbi:,lbj:)
688 real(r8),
intent(in) :: adat(lbi:,lbj:,lbk:,lbt:)
691 real(r8),
intent(in) :: amask(lbi:ubi,lbj:ubj)
693 real(r8),
intent(in) :: adat(lbi:ubi,lbj:ubj,lbk:ubk,lbt:ubt)
695 real(r8),
intent(out),
optional :: minvalue
696 real(r8),
intent(out),
optional :: maxvalue
698 TYPE (file_desc_t),
intent(inout) :: piofile
699 TYPE (io_desc_t),
intent(inout) :: piodesc
700 TYPE (my_vardesc),
intent(inout) :: piovar
704 logical :: landfill, lminmax
706 logical,
pointer :: lwater(:,:,:,:)
708 integer :: extract_flag
709 integer :: i, j, k, l, tile
710 integer :: imin, imax, jmin, jmax
711 integer :: cgrid, dkind, ghost, gtype
714 integer,
dimension(5) :: start, total
716 real(r8),
dimension(2) :: rbuffer
718 real(r4),
pointer :: awrk4(:,:,:,:)
719 real(r8),
pointer :: awrk8(:,:,:,:)
726 character (len= 3),
dimension(2) :: op_handle
741 SELECT CASE (abs(gtype))
761 IF (
PRESENT(minvalue))
THEN
763 IF (.not.
associated(lwater))
THEN
764 allocate ( lwater(lbi:ubi,lbj:ubj,lbk:ubk,lbt:ubt) )
774 IF (
PRESENT(setfillval))
THEN
786 IF (
PRESENT(extractfield))
THEN
787 extract_flag=extractfield
796 stats % checksum=0_i8b
811 IF (dkind.eq.pio_double)
THEN
812 IF (.not.
associated(awrk8))
THEN
813 allocate ( awrk8(lbi:ubi,lbj:ubj,lbk:ubk,lbt:ubt) )
821 awrk8(i,j,k,l)=adat(i,j,k,l)*ascl
823 IF ((amask(i,j).eq.0.0_r8).and.landfill)
THEN
825 IF (lminmax) lwater(i,j,k,l)=.false.
833 rbuffer(1)=minval(awrk8, mask=lwater)
834 rbuffer(2)=maxval(awrk8, mask=lwater)
837 IF (.not.
associated(awrk4))
THEN
838 allocate ( awrk4(lbi:ubi,lbj:ubj,lbk:ubk,lbt:ubt) )
846 awrk4(i,j,k,l)=real(adat(i,j,k,l)*ascl, r4)
848 IF ((amask(i,j).eq.0.0_r8).and.landfill)
THEN
849 awrk4(i,j,k,l)=real(
spval, r4)
857 rbuffer(1)=real(minval(awrk4, mask=lwater),r8)
858 rbuffer(2)=real(maxval(awrk4, mask=lwater),r8)
864 IF (tindex.gt.0)
THEN
865 CALL pio_setframe (piofile, &
867 & int(tindex, kind=pio_offset_kind))
872 IF (dkind.eq.pio_double)
THEN
873 CALL pio_write_darray (piofile, &
876 & awrk8(imin:imax,jmin:jmax, &
877 & lbk:ubk,lbt:ubt), &
880 CALL pio_write_darray (piofile, &
883 & awrk4(imin:imax,jmin:jmax, &
884 & lbk:ubk,lbt:ubt), &
901 & lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, &
908 WRITE (stdout,10) trim(
vname(1,ifield)), stats%min, stats%max, &
910 10
FORMAT (4x,
'- ',a,
':',t35,
'Min = ',1p,e15.8,
', Max = ', &
911 & 1p,e15.8,
', CheckSum = ',i0)
922 CALL mp_reduce (ng, model, 2, rbuffer, op_handle)
925 IF (
associated(lwater))
deallocate (lwater)
930 IF (dkind.eq.pio_double)
THEN
931 IF (
associated(awrk8))
deallocate (awrk8)
933 IF (
associated(awrk4))
deallocate (awrk4)
subroutine mp_gather3d(ng, model, lbi, ubi, lbj, ubj, lbk, ubk, tindex, gtype, ascl, amask, a, npts, awrk, setfillval)
subroutine mp_gather2d(ng, model, lbi, ubi, lbj, ubj, tindex, gtype, ascl, amask, a, npts, awrk, setfillval)
subroutine, public tile_bounds_1d(ng, tile, imax, istr, iend)
character(len=maxlen), dimension(6, 0:nv) vname
type(t_bounds), dimension(:), allocatable bounds
integer, parameter r3dvar
integer, parameter l4dvar
type(t_iobounds), dimension(:), allocatable iobounds
integer, parameter u3dvar
integer, parameter u2dvar
integer, parameter p2dvar
integer, parameter r2dvar
integer, parameter l3dvar
integer, parameter v2dvar
integer, parameter p3dvar
integer, parameter v3dvar
real(dp), parameter spval
integer function pio_fwrite4d(ng, model, piofile, ifield, piovar, tindex, piodesc, lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, ascl, amask, adat, setfillval, minvalue, maxvalue)
integer function nf90_fwrite4d(ng, model, ncid, ifield, ncvarid, tindex, gtype, lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, ascl, amask, adat, setfillval, extractfield, minvalue, maxvalue)
subroutine, public pack_field4d(ng, model, tile, gtype, ifield, tindex, landfill, extract_flag, lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, fourth, amask, ascl, adat, start, total, npts, awrk)
subroutine, public stats_4dfld(ng, tile, model, gtype, s, extract_flag, lbi, ubi, lbj, ubj, lbk, ubk, lbt, ubt, f, fmask, debug)