diff --git a/modulefiles/fv3gfs/enkf_chgres_recenter_nc.wcoss_cray b/modulefiles/fv3gfs/enkf_chgres_recenter_nc.wcoss_cray index 270592c850..d619dd8644 100644 --- a/modulefiles/fv3gfs/enkf_chgres_recenter_nc.wcoss_cray +++ b/modulefiles/fv3gfs/enkf_chgres_recenter_nc.wcoss_cray @@ -4,15 +4,22 @@ module load ncep/1.0 module load PrgEnv-intel/5.2.56 -module rm intel -module load intel/16.3.210 -module load cray-mpich/7.2.0 +module unload intel/15.0.3.187 +module load intel/18.1.163 module load craype-haswell -module load cray-netcdf +module load cray-mpich/7.2.0 -module load bacio-intel/2.0.2 -module load w3nco-intel/2.0.6 +# Loading netcdf modules +module use /usrx/local/dev/modulefiles +module load NetCDF-intel-sandybridge/4.7.4 +module load HDF5-parallel-intel-sandybridge/1.10.6 + +module use /gpfs/hps/nco/ops/nwprod/lib/modulefiles module load ip-intel/3.0.0 module load sp-intel/2.0.2 +module load w3nco-intel/2.0.6 + +module use /usrx/local/nceplibs/modulefiles +module load bacio-intel/2.0.2 export FC=ftn diff --git a/sorc/enkf_chgres_recenter_nc.fd/input_data.f90 b/sorc/enkf_chgres_recenter_nc.fd/input_data.f90 index 0d05da8091..609aed05a6 100644 --- a/sorc/enkf_chgres_recenter_nc.fd/input_data.f90 +++ b/sorc/enkf_chgres_recenter_nc.fd/input_data.f90 @@ -9,9 +9,9 @@ module input_data private integer, public :: idvc, idsl, idvm, nvcoord - integer, public :: ntrac, ncldt + integer, public :: nvcoord_input, ntrac, ncldt integer, public :: ij_input, kgds_input(200) - integer, public :: i_input, j_input, lev + integer, public :: i_input, j_input, lev, lev_output integer, public :: idate(6) integer, public :: icldamt, iicmr, & idelz,idpres,idzdt, & @@ -19,6 +19,7 @@ module input_data real, allocatable, public :: vcoord(:,:) + real, allocatable, public :: vcoord_input(:,:) real, allocatable, public :: clwmr_input(:,:) real, allocatable, public :: dzdt_input(:,:) real, allocatable, public :: grle_input(:,:) @@ -52,7 +53,8 @@ subroutine read_input_data type(Dataset) :: indset type(Dimension) :: ncdim real, allocatable :: work2d(:,:),work3d(:,:,:) - integer iret + integer iret, k, kk + real, allocatable :: ak(:), bk(:) ! hard code these values that are the same for GFS idvc=2 @@ -76,6 +78,19 @@ subroutine read_input_data ij_input = i_input * j_input + call read_attribute(indset, 'ak', ak) + call read_attribute(indset, 'bk', bk) + + nvcoord_input = 2 + allocate(vcoord_input(lev+1,nvcoord_input)) + do k = 1, lev+1 + kk = lev+2-k + vcoord_input(k,1) = ak(kk) + vcoord_input(k,2) = bk(kk) + print*,'VCOORD OF INPUT DATA ',k,vcoord_input(k,:) + enddo + + deallocate(ak, bk) print* print*,"READ SURFACE PRESSURE" @@ -297,40 +312,33 @@ subroutine read_vcoord_info implicit none - integer :: istat, levs_vcoord, n, k - - print* - print*,"OPEN VERTICAL COORD FILE: ", trim(vcoord_file) - open(14, file=trim(vcoord_file), form='formatted', iostat=istat) - if (istat /= 0) then - print*,"FATAL ERROR OPENING FILE. ISTAT IS: ", istat - call errexit(4) - endif - - read(14, *, iostat=istat) nvcoord, levs_vcoord - if (istat /= 0) then - print*,"FATAL ERROR READING FILE HEADER. ISTAT IS: ",istat - call errexit(5) - endif + integer :: istat, n, k, k2 -!--------------------------------------------------------------------------------- -! The last value in the file is not used for the fv3 core. Only read the first -! (lev + 1) values. -!--------------------------------------------------------------------------------- + real, allocatable :: ak(:), bk(:) - allocate(vcoord(lev+1, nvcoord)) - read(14, *, iostat=istat) ((vcoord(n,k), k=1,nvcoord), n=1,lev+1) - if (istat /= 0) then - print*,"FATAL ERROR READING FILE. ISTAT IS: ",istat - call errexit(6) - endif + type(Dataset) :: refdset print* - do k = 1, (lev+1) - print*,'VCOORD FOR LEV ', k, 'IS: ', vcoord(k,:) + print*,"READ OUTPUT VERT COORDINATE INFO FROM REFERENCE FILE: ",trim(ref_file) + + refdset = open_dataset(ref_file) + call read_attribute(refdset, 'ak', ak) + call read_attribute(refdset, 'bk', bk) + call close_dataset(refdset) + + lev_output = size(bk) - 1 + + nvcoord=2 + allocate(vcoord(lev_output+1, nvcoord)) + + do k = 1, (lev_output+1) + k2 = lev_output+2 - k + vcoord(k,1) = ak(k2) + vcoord(k,2) = bk(k2) + print*,'VCOORD OF OUTPUT GRID ',k,vcoord(k,:) enddo - close(14) + deallocate (ak, bk) end subroutine read_vcoord_info diff --git a/sorc/enkf_chgres_recenter_nc.fd/interp.f90 b/sorc/enkf_chgres_recenter_nc.fd/interp.f90 index 91a3451dc5..291e8ef0d3 100644 --- a/sorc/enkf_chgres_recenter_nc.fd/interp.f90 +++ b/sorc/enkf_chgres_recenter_nc.fd/interp.f90 @@ -37,6 +37,8 @@ subroutine adjust_for_terrain implicit none + integer :: k + real, allocatable :: pres_b4_adj_output(:,:) real, allocatable :: pres_output(:,:) real, allocatable :: q_b4_adj_output(:,:,:), q_output(:,:,:) @@ -48,12 +50,14 @@ subroutine adjust_for_terrain allocate(pres_b4_adj_output(ij_output,lev)) pres_b4_adj_output = 0.0 + print*,'before newpr1, sfcp b4 adj: ', sfcp_b4_adj_output(ij_output/2) + print* print*,"COMPUTE MID-LAYER PRESSURE FROM INTERPOLATED SURFACE PRESSURE." - call newpr1(ij_output, lev, idvc, idsl, nvcoord, vcoord, & + call newpr1(ij_output, lev, idvc, idsl, nvcoord_input, vcoord_input, & sfcp_b4_adj_output, pres_b4_adj_output) -!print*,'after newpr1, pres b4 adj: ', pres_b4_adj_output(ij_output/2,:) + print*,'after newpr1, pres b4 adj: ', pres_b4_adj_output(ij_output/2,:) !--------------------------------------------------------------------------------- ! Adjust surface pressure based on differences between interpolated and @@ -68,7 +72,7 @@ subroutine adjust_for_terrain lev, pres_b4_adj_output, tmp_b4_adj_output, & spfh_b4_adj_output, hgt_external_output, sfcp_output) -!print*,'after newps ',sfcp_b4_adj_output(ij_output/2),sfcp_output(ij_output/2) + print*,'after newps ',sfcp_b4_adj_output(ij_output/2),sfcp_output(ij_output/2) deallocate(sfcp_b4_adj_output) @@ -76,19 +80,22 @@ subroutine adjust_for_terrain ! Recompute mid-layer pressure based on the adjusted surface pressure. !--------------------------------------------------------------------------------- - allocate(pres_output(ij_output, lev)) + allocate(pres_output(ij_output, lev_output)) pres_output = 0.0 - allocate(dpres_output(ij_output, lev)) + allocate(dpres_output(ij_output, lev_output)) dpres_output = 0.0 + print*,'before newpr1 ',sfcp_output(ij_output/2) + print*,'before newpr1 ',idvc,idsl,nvcoord,vcoord + print*,"RECOMPUTE MID-LAYER PRESSURE." - call newpr1(ij_output, lev, idvc, idsl, nvcoord, vcoord, & + call newpr1(ij_output, lev_output, idvc, idsl, nvcoord, vcoord, & sfcp_output, pres_output, dpres_output) -!do k = 1, lev -! print*,'after newpr1 ',pres_b4_adj_output(ij_output/2,k),pres_output(ij_output/2,k), dpres_output(ij_output/2,k) -!enddo + do k = 1, lev_output + print*,'after newpr1 ',pres_output(ij_output/2,k), dpres_output(ij_output/2,k) + enddo !--------------------------------------------------------------------------------- ! Vertically interpolate from the pre-adjusted to the adjusted mid-layer @@ -105,121 +112,88 @@ subroutine adjust_for_terrain q_b4_adj_output(:,:,7) = grle_b4_adj_output(:,:) q_b4_adj_output(:,:,8) = cldamt_b4_adj_output(:,:) - allocate(q_output(ij_output,lev,ntrac)) + allocate(q_output(ij_output,lev_output,ntrac)) q_output = 0.0 - allocate(dzdt_output(ij_output,lev)) + allocate(dzdt_output(ij_output,lev_output)) dzdt_output = 0.0 - allocate(ugrd_output(ij_output,lev)) + allocate(ugrd_output(ij_output,lev_output)) ugrd_output=0.0 - allocate(vgrd_output(ij_output,lev)) + allocate(vgrd_output(ij_output,lev_output)) vgrd_output=0.0 - allocate(tmp_output(ij_output,lev)) + allocate(tmp_output(ij_output,lev_output)) tmp_output=0.0 print*,"VERTICALLY INTERPOLATE TO NEW PRESSURE LEVELS" - call vintg(ij_output, lev, lev, ntrac, pres_b4_adj_output, & + call vintg(ij_output, lev, lev_output, ntrac, pres_b4_adj_output, & ugrd_b4_adj_output, vgrd_b4_adj_output, tmp_b4_adj_output, q_b4_adj_output, & dzdt_b4_adj_output, pres_output, ugrd_output, vgrd_output, tmp_output, & q_output, dzdt_output) deallocate (dzdt_b4_adj_output, q_b4_adj_output) - deallocate (pres_b4_adj_output, pres_output) +!deallocate (pres_b4_adj_output, pres_output) - allocate(spfh_output(ij_output,lev)) + allocate(spfh_output(ij_output,lev_output)) spfh_output = q_output(:,:,1) - allocate(o3mr_output(ij_output,lev)) + allocate(o3mr_output(ij_output,lev_output)) o3mr_output = q_output(:,:,2) - allocate(clwmr_output(ij_output,lev)) + allocate(clwmr_output(ij_output,lev_output)) clwmr_output = q_output(:,:,3) - allocate(rwmr_output(ij_output,lev)) + allocate(rwmr_output(ij_output,lev_output)) rwmr_output = q_output(:,:,4) - allocate(icmr_output(ij_output,lev)) + allocate(icmr_output(ij_output,lev_output)) icmr_output = q_output(:,:,5) - allocate(snmr_output(ij_output,lev)) + allocate(snmr_output(ij_output,lev_output)) snmr_output = q_output(:,:,6) - allocate(grle_output(ij_output,lev)) + allocate(grle_output(ij_output,lev_output)) grle_output = q_output(:,:,7) - allocate(cldamt_output(ij_output,lev)) + allocate(cldamt_output(ij_output,lev_output)) cldamt_output = q_output(:,:,8) deallocate(q_output) -!do k = 1, lev -!print*,'after vintg tmp ',tmp_b4_adj_output(ij_output/2,k),tmp_output(ij_output/2,k) -!enddo + do k = 1, lev + print*,'after vintg tmp b4 ',tmp_b4_adj_output(ij_output/2,k), pres_b4_adj_output(ij_output/2,k) + enddo + do k = 1, lev_output + print*,'after vintg tmp ',tmp_output(ij_output/2,k),pres_output(ij_output/2,k) + enddo deallocate(tmp_b4_adj_output) -!do k = 1, lev -!print*,'after vintg u ',ugrd_b4_adj_output(ij_output/2,k),ugrd_output(ij_output/2,k) -!enddo - deallocate(ugrd_b4_adj_output) -!do k = 1, lev -!print*,'after vintg v ',vgrd_b4_adj_output(ij_output/2,k),vgrd_output(ij_output/2,k) -!enddo - deallocate(vgrd_b4_adj_output) -!do k = 1, lev -!print*,'after vintg spfh ',spfh_b4_adj_output(ij_output/2,k),spfh_output(ij_output/2,k) -!enddo - deallocate(spfh_b4_adj_output) -!do k = 1, lev -!print*,'after vintg o3 ',o3mr_b4_adj_output(ij_output/2,k),o3mr_output(ij_output/2,k) -!enddo - deallocate(o3mr_b4_adj_output) -!do k = 1, lev -!print*,'after vintg clw ',clwmr_b4_adj_output(ij_output/2,k),clwmr_output(ij_output/2,k) -!enddo - deallocate(clwmr_b4_adj_output) + deallocate(rwmr_b4_adj_output) -! do k = 1, lev -! print*,'after vintg rw ',rwmr_b4_adj_output(ij_output/2,k),rwmr_output(ij_output/2,k) -! enddo - - deallocate(rwmr_b4_adj_output) - -! do k = 1, lev -! print*,'after vintg ic ',icmr_b4_adj_output(ij_output/2,k),icmr_output(ij_output/2,k) -! enddo - - deallocate(icmr_b4_adj_output) + deallocate(icmr_b4_adj_output) -! do k = 1, lev -! print*,'after vintg sn ',snmr_b4_adj_output(ij_output/2,k),snmr_output(ij_output/2,k) -! enddo + deallocate(snmr_b4_adj_output) - deallocate(snmr_b4_adj_output) + deallocate(grle_b4_adj_output) -! do k = 1, lev -! print*,'after vintg grle ',grle_b4_adj_output(ij_output/2,k),grle_output(ij_output/2,k) -! enddo + deallocate(cldamt_b4_adj_output) - deallocate(grle_b4_adj_output) - - deallocate(cldamt_b4_adj_output) - - - - - allocate(delz_output(ij_output, lev)) + allocate(delz_output(ij_output, lev_output)) delz_output = 0.0 - call compute_delz(ij_output, lev, vcoord(:,1), vcoord(:,2), sfcp_output, hgt_output, & + call compute_delz(ij_output, lev_output, vcoord(:,1), vcoord(:,2), sfcp_output, hgt_output, & tmp_output, spfh_output, delz_output) + do k = 1, lev_output + print*,'after compute_delz ',delz_output(ij_output/2,k) + enddo + deallocate(hgt_output) end subroutine adjust_for_terrain @@ -236,18 +210,92 @@ subroutine gaus_to_gaus implicit none - integer :: ip, ipopt(20) + integer :: ip, ipopt(20), i integer :: num_fields integer :: iret, numpts integer, allocatable :: ibi(:), ibo(:) logical*1, allocatable :: bitmap_input(:,:), bitmap_output(:,:) + logical :: same_grid real, allocatable :: data_input(:,:) real, allocatable :: data_output(:,:), crot(:), srot(:) - print* - print*,'INTERPOLATE DATA TO OUTPUT GRID' + same_grid=.true. + do i = 1, 11 + if (kgds_input(i) /= kgds_output(i)) then + same_grid=.false. + exit + endif + enddo + + if (same_grid) then + + print* + print*,'INPUT AND OUTPUT GRIDS ARE THE SAME.' + print*,'NO HORIZ INTERPOLATION REQUIRED.' + + allocate(hgt_output(ij_output)) + hgt_output = hgt_input + deallocate(hgt_input) + + allocate(sfcp_b4_adj_output(ij_output)) + sfcp_b4_adj_output = sfcp_input + deallocate(sfcp_input) + + allocate(tmp_b4_adj_output(ij_output,lev)) + tmp_b4_adj_output = tmp_input + deallocate(tmp_input) + + allocate(clwmr_b4_adj_output(ij_output,lev)) + clwmr_b4_adj_output = clwmr_input + deallocate(clwmr_input) + + allocate(spfh_b4_adj_output(ij_output,lev)) + spfh_b4_adj_output = spfh_input + deallocate(spfh_input) + + allocate(o3mr_b4_adj_output(ij_output,lev)) + o3mr_b4_adj_output = o3mr_input + deallocate(o3mr_input) + + allocate(dzdt_b4_adj_output(ij_output,lev)) + dzdt_b4_adj_output = dzdt_input + deallocate(dzdt_input) + + allocate(rwmr_b4_adj_output(ij_output,lev)) + rwmr_b4_adj_output = rwmr_input + deallocate(rwmr_input) + + allocate(snmr_b4_adj_output(ij_output,lev)) + snmr_b4_adj_output = snmr_input + deallocate(snmr_input) + + allocate(icmr_b4_adj_output(ij_output,lev)) + icmr_b4_adj_output = icmr_input + deallocate(icmr_input) + + allocate(grle_b4_adj_output(ij_output,lev)) + grle_b4_adj_output = grle_input + deallocate(grle_input) + + allocate(cldamt_b4_adj_output(ij_output,lev)) + cldamt_b4_adj_output = cldamt_input + deallocate(cldamt_input) + + allocate(ugrd_b4_adj_output(ij_output,lev)) + ugrd_b4_adj_output = ugrd_input + deallocate(ugrd_input) + + allocate(vgrd_b4_adj_output(ij_output,lev)) + vgrd_b4_adj_output = vgrd_input + deallocate(vgrd_input) + + else + + print* + print*,'INTERPOLATE DATA TO OUTPUT GRID' + ip = 0 ! bilinear ipopt = 0 @@ -521,6 +569,8 @@ subroutine gaus_to_gaus deallocate (crot, srot) deallocate (ibi, ibo, bitmap_input, bitmap_output) + endif + return 89 continue diff --git a/sorc/enkf_chgres_recenter_nc.fd/makefile b/sorc/enkf_chgres_recenter_nc.fd/makefile index 5351b8aebc..ea3a14daed 100644 --- a/sorc/enkf_chgres_recenter_nc.fd/makefile +++ b/sorc/enkf_chgres_recenter_nc.fd/makefile @@ -1,6 +1,6 @@ SHELL= /bin/sh -LIBS= $(NETCDF)/lib/libnetcdff.so $(FV3GFS_NCIO_LIB) $(BACIO_LIB4) $(W3NCO_LIB4) $(IP_LIB4) $(SP_LIB4) +LIBS= $(FV3GFS_NCIO_LIB) $(BACIO_LIB4) $(W3NCO_LIB4) $(IP_LIB4) $(SP_LIB4) -L$(NETCDF)/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz CMD= chgres_recenter_ncio.exe diff --git a/sorc/enkf_chgres_recenter_nc.fd/output_data.f90 b/sorc/enkf_chgres_recenter_nc.fd/output_data.f90 index 5df0038165..17766d23c0 100644 --- a/sorc/enkf_chgres_recenter_nc.fd/output_data.f90 +++ b/sorc/enkf_chgres_recenter_nc.fd/output_data.f90 @@ -102,7 +102,6 @@ subroutine write_output_data real, allocatable, dimension (:,:) :: out2d real, allocatable, dimension (:,:,:) :: out3d - !------------------------------------------------------------------- ! Set up some header info. !------------------------------------------------------------------- @@ -119,7 +118,7 @@ subroutine write_output_data print* print*,'OPEN OUTPUT FILE: ',trim(output_file) allocate(out2d(i_output,j_output)) - allocate(out3d(i_output,j_output,lev)) + allocate(out3d(i_output,j_output,lev_output)) print*,"WRITE SURFACE HEIGHT" out2d = reshape(hgt_external_output, (/i_output,j_output/)) @@ -132,48 +131,48 @@ subroutine write_output_data deallocate(sfcp_output) print*,"WRITE TEMPERATURE" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(tmp_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'tmp', out3d) deallocate(tmp_output) print*,"WRITE CLOUD LIQUID WATER" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(clwmr_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'clwmr', out3d) deallocate(clwmr_output) print*,"WRITE SPECIFIC HUMIDITY" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(spfh_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'spfh', out3d) deallocate(spfh_output) print*,"WRITE OZONE" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(o3mr_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'o3mr', out3d) deallocate(o3mr_output) print*,"WRITE U-WINDS" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(ugrd_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'ugrd', out3d) deallocate(ugrd_output) print*,"WRITE V-WINDS" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(vgrd_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'vgrd', out3d) @@ -181,8 +180,8 @@ subroutine write_output_data if (idzdt == 1) then print*,"WRITE DZDT" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(dzdt_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'dzdt', out3d) @@ -191,8 +190,8 @@ subroutine write_output_data if (idpres == 1) then print*,"WRITE DPRES" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(dpres_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'dpres', out3d) @@ -201,8 +200,8 @@ subroutine write_output_data if (idelz == 1) then print*,"WRITE DELZ" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(delz_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'delz', out3d) @@ -211,8 +210,8 @@ subroutine write_output_data if (irwmr == 1) then print*,"WRITE RAIN WATER" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(rwmr_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'rwmr', out3d) @@ -221,8 +220,8 @@ subroutine write_output_data if (isnmr == 1) then print*,"WRITE SNOW WATER" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(snmr_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'snmr', out3d) @@ -231,8 +230,8 @@ subroutine write_output_data if (iicmr == 1) then print*,"WRITE ICE WATER" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(icmr_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'icmr', out3d) @@ -241,8 +240,8 @@ subroutine write_output_data if (igrle == 1) then print*,"WRITE GRAUPEL" - do n=1,lev - nrev = lev+1-n + do n=1,lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(grle_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'grle', out3d) @@ -251,8 +250,8 @@ subroutine write_output_data if (icldamt == 1) then print*,"WRITE CLD_AMT" - do n = 1, lev - nrev = lev+1-n + do n = 1, lev_output + nrev = lev_output+1-n out3d(:,:,n) = reshape(cldamt_output(:,nrev), (/i_output,j_output/)) end do call write_vardata(outdset, 'cld_amt', out3d) @@ -281,8 +280,8 @@ subroutine header_set print* print*,"SET HEADER INFO FOR OUTPUT FILE." - indset = open_dataset(terrain_file) - outdset = create_dataset(output_file, indset) + indset = open_dataset(ref_file) + outdset = create_dataset(output_file, indset, nocompress=.true.) end subroutine header_set diff --git a/sorc/enkf_chgres_recenter_nc.fd/setup.f90 b/sorc/enkf_chgres_recenter_nc.fd/setup.f90 index 1ea5b98a82..ee9956ae03 100644 --- a/sorc/enkf_chgres_recenter_nc.fd/setup.f90 +++ b/sorc/enkf_chgres_recenter_nc.fd/setup.f90 @@ -7,7 +7,7 @@ module setup character(len=300), public :: input_file character(len=300), public :: output_file character(len=300), public :: terrain_file - character(len=300), public :: vcoord_file + character(len=300), public :: ref_file integer, public :: i_output integer, public :: j_output @@ -26,7 +26,7 @@ subroutine program_setup character(len=500) :: filenamelist namelist /chgres_setup/ i_output, j_output, input_file, output_file, & - terrain_file, vcoord_file, cld_amt + terrain_file, cld_amt, ref_file cld_amt = .false. ! default option