Skip to content

Commit

Permalink
Write out double type instead of 32 bit float. #34
Browse files Browse the repository at this point in the history
  • Loading branch information
nichannah committed May 1, 2020
1 parent 23fb798 commit b06e90f
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 47 deletions.
2 changes: 1 addition & 1 deletion drivers/auscom/CICE_InitMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ subroutine cice_init(accessom2)

! Initialise ParallelIO
#ifdef PIO
call ice_pio_init()
call ice_pio_init(1)
#endif

! Initialise libaccessom2
Expand Down
82 changes: 41 additions & 41 deletions io_pio/ice_history_write.F90
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ subroutine ice_write_hist (ns)
integer (kind=int_kind), dimension(5) :: dimidcz
integer (kind=int_kind), dimension(3) :: dimid_nverts
integer (kind=int_kind), dimension(4) :: dimidex
real (kind=real_kind) :: ltime
real (kind=dbl_kind) :: ltime
character (char_len) :: title
character (char_len) :: time_period_freq
character (char_len_long) :: ncfile(max_nstrm)
Expand Down Expand Up @@ -155,7 +155,7 @@ subroutine ice_write_hist (ns)
call ice_pio_initdecomp(ndim3=nzslyr, ndim4=ncat_hist, iodesc=iodesc4ds)

! ltime = time/int(secday)
ltime = real(time/int(secday),kind=real_kind)
ltime = real(time/int(secday),kind=dbl_kind)

!-----------------------------------------------------------------
! define dimensions
Expand All @@ -178,7 +178,7 @@ subroutine ice_write_hist (ns)
! define coordinate variables: time, time_bounds
!-----------------------------------------------------------------

status = pio_def_var(File,'time',pio_real,(/timid/),varid)
status = pio_def_var(File,'time',pio_double,(/timid/),varid)
status = pio_put_att(File,varid,'long_name','model time')

write(cdate,'(i8.8)') idate0
Expand All @@ -204,7 +204,7 @@ subroutine ice_write_hist (ns)
if (hist_avg .and. histfreq(ns) /= '1') then
dimid2(1) = boundid
dimid2(2) = timid
status = pio_def_var(File,'time_bounds',pio_real,dimid2,varid)
status = pio_def_var(File,'time_bounds',pio_double,dimid2,varid)
status = pio_put_att(File,varid,'long_name', &
'boundaries for time-averaging interval')
write(cdate,'(i8.8)') idate0
Expand Down Expand Up @@ -305,12 +305,12 @@ subroutine ice_write_hist (ns)
dimid2(2) = jmtid

do i = 1, ncoord
status = pio_def_var(File, trim(coord_var(i)%short_name), pio_real, &
status = pio_def_var(File, trim(coord_var(i)%short_name), pio_double, &
dimid2, varid)
status = pio_put_att(File,varid,'long_name',trim(coord_var(i)%long_name))
status = pio_put_att(File, varid, 'units', trim(coord_var(i)%units))
status = pio_put_att(File, varid, 'missing_value', spval)
status = pio_put_att(File, varid,'_FillValue',spval)
status = pio_put_att(File, varid, 'missing_value', spval_dbl)
status = pio_put_att(File, varid,'_FillValue',spval_dbl)
if (coord_var(i)%short_name == 'ULAT') then
status = pio_put_att(File,varid,'comment', &
trim('Latitude of NE corner of T grid cell'))
Expand All @@ -328,7 +328,7 @@ subroutine ice_write_hist (ns)

do i = 1, nvarz
if (igrdz(i)) then
status = pio_def_var(File, trim(var_nz(i)%short_name), pio_real, &
status = pio_def_var(File, trim(var_nz(i)%short_name), pio_double, &
(/dimidex(i)/), varid)
status = pio_put_att(File, varid, 'long_name', var_nz(i)%long_name)
status = pio_put_att(File, varid, 'units' , var_nz(i)%units)
Expand All @@ -337,31 +337,31 @@ subroutine ice_write_hist (ns)

! Attributes for tmask defined separately, since it has no units
if (igrd(n_tmask)) then
status = pio_def_var(File, 'tmask', pio_real, dimid2, varid)
status = pio_def_var(File, 'tmask', pio_double, dimid2, varid)
status = pio_put_att(File,varid, 'long_name', 'ocean grid mask')
status = pio_put_att(File, varid, 'coordinates', 'TLON TLAT')
status = pio_put_att(File, varid, 'missing_value', spval)
status = pio_put_att(File, varid,'_FillValue',spval)
status = pio_put_att(File, varid, 'missing_value', spval_dbl)
status = pio_put_att(File, varid,'_FillValue',spval_dbl)
status = pio_put_att(File,varid,'comment', '0 = land, 1 = ocean')
endif
if (igrd(n_blkmask)) then
status = pio_def_var(File, 'blkmask', pio_real, dimid2, varid)
status = pio_def_var(File, 'blkmask', pio_double, dimid2, varid)
status = pio_put_att(File,varid, 'long_name', 'ice grid block mask')
status = pio_put_att(File, varid, 'coordinates', 'TLON TLAT')
status = pio_put_att(File,varid,'comment', 'mytask + iblk/100')
status = pio_put_att(File, varid, 'missing_value', spval)
status = pio_put_att(File, varid,'_FillValue',spval)
status = pio_put_att(File, varid, 'missing_value', spval_dbl)
status = pio_put_att(File, varid,'_FillValue',spval_dbl)
endif

do i = 3, nvar ! note: n_tmask=1, n_blkmask=2
if (igrd(i)) then
status = pio_def_var(File, trim(var(i)%req%short_name), &
pio_real, dimid2, varid)
pio_double, dimid2, varid)
status = pio_put_att(File,varid, 'long_name', trim(var(i)%req%long_name))
status = pio_put_att(File, varid, 'units', trim(var(i)%req%units))
status = pio_put_att(File, varid, 'coordinates', trim(var(i)%coordinates))
status = pio_put_att(File, varid, 'missing_value', spval)
status = pio_put_att(File, varid,'_FillValue',spval)
status = pio_put_att(File, varid, 'missing_value', spval_dbl)
status = pio_put_att(File, varid,'_FillValue',spval_dbl)
endif
enddo

Expand All @@ -372,13 +372,13 @@ subroutine ice_write_hist (ns)
do i = 1, nvar_verts
if (f_bounds) then
status = pio_def_var(File, trim(var_nverts(i)%short_name), &
pio_real,dimid_nverts, varid)
pio_double,dimid_nverts, varid)
status = &
pio_put_att(File,varid, 'long_name', trim(var_nverts(i)%long_name))
status = &
pio_put_att(File, varid, 'units', trim(var_nverts(i)%units))
status = pio_put_att(File, varid, 'missing_value', spval)
status = pio_put_att(File, varid,'_FillValue',spval)
status = pio_put_att(File, varid, 'missing_value', spval_dbl)
status = pio_put_att(File, varid,'_FillValue',spval_dbl)
endif
enddo

Expand All @@ -397,7 +397,7 @@ subroutine ice_write_hist (ns)
do n=1,num_avail_hist_fields_2D
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimid3, varid)
pio_double, dimid3, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -406,8 +406,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand Down Expand Up @@ -442,7 +442,7 @@ subroutine ice_write_hist (ns)
do n = n2D + 1, n3Dccum
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimidz, varid)
pio_double, dimidz, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -451,8 +451,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand All @@ -479,7 +479,7 @@ subroutine ice_write_hist (ns)
do n = n3Dccum + 1, n3Dzcum
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimidz, varid)
pio_double, dimidz, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -488,8 +488,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand All @@ -516,7 +516,7 @@ subroutine ice_write_hist (ns)
do n = n3Dzcum + 1, n3Dbcum
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimidz, varid)
pio_double, dimidz, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -525,8 +525,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand Down Expand Up @@ -559,7 +559,7 @@ subroutine ice_write_hist (ns)
do n = n3Dbcum + 1, n4Dicum
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimidcz, varid)
pio_double, dimidcz, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -568,8 +568,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand Down Expand Up @@ -597,7 +597,7 @@ subroutine ice_write_hist (ns)
do n = n4Dicum + 1, n4Dscum
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimidcz, varid)
pio_double, dimidcz, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -606,8 +606,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand Down Expand Up @@ -635,7 +635,7 @@ subroutine ice_write_hist (ns)
do n = n4Dscum + 1, n4Dbcum
if (avail_hist_fields(n)%vhistfreq == histfreq(ns) .or. write_ic) then
status = pio_def_var(File, trim(avail_hist_fields(n)%vname), &
pio_real, dimidcz, varid)
pio_double, dimidcz, varid)
status = pio_put_att(File,varid,'units', &
trim(avail_hist_fields(n)%vunit))
status = pio_put_att(File,varid, 'long_name', &
Expand All @@ -644,8 +644,8 @@ subroutine ice_write_hist (ns)
trim(avail_hist_fields(n)%vcoord))
status = pio_put_att(File,varid,'cell_measures', &
trim(avail_hist_fields(n)%vcellmeas))
status = pio_put_att(File,varid,'missing_value',spval)
status = pio_put_att(File,varid,'_FillValue',spval)
status = pio_put_att(File,varid,'missing_value',spval_dbl)
status = pio_put_att(File,varid,'_FillValue',spval_dbl)

! Add cell_methods attribute to variables if averaged
if (hist_avg .and. histfreq(ns) /= '1') then
Expand Down
10 changes: 5 additions & 5 deletions io_pio/ice_pio.F90
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ module ice_pio
use ice_fileunits
use ice_exit
use pio
use pio_types, only: pio_iotype_netcdf4p, PIO_rearr_subset
use pio_types, only: pio_iotype_netcdf4p, PIO_rearr_box

implicit none
private
Expand Down Expand Up @@ -59,7 +59,7 @@ subroutine ice_pio_init(io_stride)

num_iotasks = get_num_procs() / stride

call pio_init(my_task, MPI_COMM_ICE, num_iotasks, 0, stride, PIO_rearr_subset, ice_pio_subsystem)
call pio_init(my_task, MPI_COMM_ICE, num_iotasks, 0, stride, PIO_rearr_box, ice_pio_subsystem)

pio_initialized = .true.
end subroutine ice_pio_init
Expand Down Expand Up @@ -141,20 +141,20 @@ subroutine ice_pio_initdecomp_2d(iodesc)
integer (kind=int_kind) :: &
iblk,ilo,ihi,jlo,jhi,lon,lat,i,j,n,k

type(block) :: this_block
type(block) :: this_block

integer(kind=int_kind), pointer :: dof2d(:)

allocate(dof2d(nx_block*ny_block*nblocks))

n=0
do iblk = 1, nblocks
this_block = get_block(blocks_ice(iblk),iblk)
this_block = get_block(blocks_ice(iblk),iblk)
ilo = this_block%ilo
ihi = this_block%ihi
jlo = this_block%jlo
jhi = this_block%jhi

do j=1,ny_block
do i=1,nx_block
n = n+1
Expand Down

0 comments on commit b06e90f

Please sign in to comment.