From 751bb1856ea345df12bfc708ac420e051ca4e1b5 Mon Sep 17 00:00:00 2001 From: Ming Hu Date: Wed, 4 Oct 2023 14:24:34 -0600 Subject: [PATCH 1/6] Change FVCOM background IO to read 32-bit surface restart files. (#848) Required by the RRFS system is using 32-bit CCPP. Fixes #847. --- sorc/fvcom_tools.fd/module_ncio.f90 | 34 ++++++++++-- sorc/fvcom_tools.fd/module_nwp.f90 | 62 +++++++++++++--------- sorc/fvcom_tools.fd/process_FVCOM.f90 | 20 +++---- tests/fvcom_tools/ftst_readfvcomnetcdf.F90 | 16 +++--- 4 files changed, 86 insertions(+), 46 deletions(-) diff --git a/sorc/fvcom_tools.fd/module_ncio.f90 b/sorc/fvcom_tools.fd/module_ncio.f90 index 00fc79be8..9abd999b4 100644 --- a/sorc/fvcom_tools.fd/module_ncio.f90 +++ b/sorc/fvcom_tools.fd/module_ncio.f90 @@ -2511,15 +2511,17 @@ end subroutine convert_theta2t_2dgrid !! @param[in] dname3 3rd dimension name !! @param[in] lname long name output for netcdf variable !! @param[in] units units to use in netcdf variable + !! @param[in] dtype date type of netcdf variable !! !! @author David.M.Wright org: UM/GLERL @date 2020-09-01 - subroutine add_new_var_3d(this,varname,dname1,dname2,dname3,lname,units) + subroutine add_new_var_3d(this,varname,dname1,dname2,dname3,lname,units,dtype) implicit none ! class(ncio) :: this character(len=*),intent(in) :: varname,dname1,dname2,dname3 & ,lname,units integer :: status, ncid, dim1id, dim2id, dim3id, varid + character(len=*),intent(in) :: dtype status = nf90_redef(this%ncid) !Enter Define Mode if (status /= nf90_noerr) call this%handle_err(status) @@ -2531,8 +2533,19 @@ subroutine add_new_var_3d(this,varname,dname1,dname2,dname3,lname,units) status = nf90_inq_dimid(this%ncid, dname3, dim3id) if (status /= nf90_noerr) call this%handle_err(status) - status = nf90_def_var(this%ncid, varname, nf90_double, & + if(trim(dtype)=="double") then + status = nf90_def_var(this%ncid, varname, nf90_double, & (/ dim1id, dim2id, dim3id /), varid) + elseif(trim(dtype)=="float") then + status = nf90_def_var(this%ncid, varname, nf90_float, & + (/ dim1id, dim2id, dim3id /), varid) + elseif(trim(dtype)=="int") then + status = nf90_def_var(this%ncid, varname, nf90_int, & + (/ dim1id, dim2id, dim3id /), varid) + else + write(*,*) ' undefined data type ', trim(dtype) + call this%handle_err(status) + endif if (status /= nf90_noerr) call this%handle_err(status) status = nf90_put_att(this%ncid, varid, 'long_name', lname) @@ -2555,15 +2568,17 @@ end subroutine add_new_var_3d !! @param[in] dname2 2nd dimension name !! @param[in] lname long name output for netcdf variable !! @param[in] units units to use in netcdf variable + !! @param[in] dtype data type of netcdf variable !! !! @author David.M.Wright org: UM/GLERL @date 2021-10-07 - subroutine add_new_var_2d(this,varname,dname1,dname2,lname,units) + subroutine add_new_var_2d(this,varname,dname1,dname2,lname,units,dtype) implicit none ! class(ncio) :: this character(len=*),intent(in) :: varname,dname1,dname2 & ,lname,units integer :: status, ncid, dim1id, dim2id, varid + character(len=*),intent(in) :: dtype status = nf90_redef(this%ncid) !Enter Define Mode if (status /= nf90_noerr) call this%handle_err(status) @@ -2573,8 +2588,19 @@ subroutine add_new_var_2d(this,varname,dname1,dname2,lname,units) status = nf90_inq_dimid(this%ncid, dname2, dim2id) if (status /= nf90_noerr) call this%handle_err(status) - status = nf90_def_var(this%ncid, varname, nf90_double, & + if(trim(dtype)=="double") then + status = nf90_def_var(this%ncid, varname, nf90_double, & + (/ dim1id, dim2id /), varid) + elseif(trim(dtype)=="float") then + status = nf90_def_var(this%ncid, varname, nf90_float, & (/ dim1id, dim2id /), varid) + elseif(trim(dtype)=="int") then + status = nf90_def_var(this%ncid, varname, nf90_int, & + (/ dim1id, dim2id /), varid) + else + write(*,*) ' undefined data type ', trim(dtype) + call this%handle_err(status) + endif if (status /= nf90_noerr) call this%handle_err(status) status = nf90_put_att(this%ncid, varid, 'long_name', lname) diff --git a/sorc/fvcom_tools.fd/module_nwp.f90 b/sorc/fvcom_tools.fd/module_nwp.f90 index 878233112..1967fd787 100644 --- a/sorc/fvcom_tools.fd/module_nwp.f90 +++ b/sorc/fvcom_tools.fd/module_nwp.f90 @@ -47,22 +47,22 @@ module module_nwp character(len=20), allocatable :: dimnameDATE !< String dimension name. character(len=1), allocatable :: times(:,:) !< Array of times in FVCOM. - real(r_kind), allocatable :: nwp_mask_c(:,:) !< cold start land/water mask 3d array - real(r_kind), allocatable :: nwp_sst_c(:,:,:) !< cold start sst 3d array - real(r_kind), allocatable :: nwp_ice_c(:,:,:) !< cold start over water ice concentration 3d array - real(r_kind), allocatable :: nwp_sfct_c(:,:,:) !< cold start skin temperature 3d array - real(r_kind), allocatable :: nwp_icet_c(:,:,:) !< cold start ice skin temperature 3d array - real(r_kind), allocatable :: nwp_zorl_c(:,:,:) !< cold start surface roughness - real(r_kind), allocatable :: nwp_hice_c(:,:,:) !< cold start ice thickness - - real(r_kind), allocatable :: nwp_mask_w(:,:) !< warm start land/water mask 3d array - real(r_kind), allocatable :: nwp_sst_w(:,:) !< warm start sst 3d array - real(r_kind), allocatable :: nwp_ice_w(:,:) !< warm start over water ice concentration 3d array - real(r_kind), allocatable :: nwp_sfct_w(:,:) !< warm start skin temperature 3d array - real(r_kind), allocatable :: nwp_icet_w(:,:) !< warm start ice skin temperature 3d array - real(r_kind), allocatable :: nwp_sfctl_w(:,:) !< warm start skin temperature 3d array - real(r_kind), allocatable :: nwp_zorl_w(:,:) !< warm start surface roughness - real(r_kind), allocatable :: nwp_hice_w(:,:) !< warm start ice thickness + real(r_single), allocatable :: nwp_mask_c(:,:) !< cold start land/water mask 3d array + real(r_single), allocatable :: nwp_sst_c(:,:,:) !< cold start sst 3d array + real(r_single), allocatable :: nwp_ice_c(:,:,:) !< cold start over water ice concentration 3d array + real(r_single), allocatable :: nwp_sfct_c(:,:,:) !< cold start skin temperature 3d array + real(r_single), allocatable :: nwp_icet_c(:,:,:) !< cold start ice skin temperature 3d array + real(r_single), allocatable :: nwp_zorl_c(:,:,:) !< cold start surface roughness + real(r_single), allocatable :: nwp_hice_c(:,:,:) !< cold start ice thickness + + real(r_single), allocatable :: nwp_mask_w(:,:) !< warm start land/water mask 3d array + real(r_single), allocatable :: nwp_sst_w(:,:) !< warm start sst 3d array + real(r_single), allocatable :: nwp_ice_w(:,:) !< warm start over water ice concentration 3d array + real(r_single), allocatable :: nwp_sfct_w(:,:) !< warm start skin temperature 3d array + real(r_single), allocatable :: nwp_icet_w(:,:) !< warm start ice skin temperature 3d array + real(r_single), allocatable :: nwp_sfctl_w(:,:) !< warm start skin temperature 3d array + real(r_single), allocatable :: nwp_zorl_w(:,:) !< warm start surface roughness + real(r_single), allocatable :: nwp_hice_w(:,:) !< warm start ice thickness contains procedure :: initial => initial_nwp !< Defines vars and names. @return @@ -267,9 +267,12 @@ subroutine read_nwp(this,filename,itype,wcstart,numlon,numlat,numtimes,time_to_g integer, intent(in) :: ybegin,yend integer, intent(inout) :: numlon, numlat, numtimes ! real(r_single), intent(inout) :: mask(:,:), sst(:,:), ice(:,:), sfcT(:,:) - real(r_kind), intent(inout) :: mask(:,:),sst(:,:),ice(:,:),sfcT(:,:) & + real(r_single), intent(inout) :: mask(:,:),sst(:,:),ice(:,:),sfcT(:,:) & ,iceT(:,:),sfcTl(:,:),zorl(:,:),hice(:,:) + real(r_kind),allocatable :: tmp2d8b(:,:) + real(r_kind),allocatable :: tmp3d8b(:,:,:) + ! ! Open the file using module_ncio.f90 code, and find the number of ! lat/lon points @@ -297,6 +300,8 @@ subroutine read_nwp(this,filename,itype,wcstart,numlon,numlat,numtimes,time_to_g allocate(this%nwp_iceT_c(this%xlon,this%xlat,this%xtime)) allocate(this%nwp_zorl_c(this%xlon,this%xlat,this%xtime)) allocate(this%nwp_hice_c(this%xlon,this%xlat,this%xtime)) + allocate(tmp2d8b(this%xlon,this%xlat)) + allocate(tmp3d8b(this%xlon,this%xlat,this%xtime)) ! Get variables from the data file, but only if the variable is ! defined for that data type. @@ -309,40 +314,49 @@ subroutine read_nwp(this,filename,itype,wcstart,numlon,numlat,numtimes,time_to_g if (this%i_mask .gt. 0) then call ncdata%get_var(this%varnames(this%i_mask),this%xlon, & - this%xlat,this%nwp_mask_c) + this%xlat,tmp2d8b) + this%nwp_mask_c=tmp2d8b mask = this%nwp_mask_c(:,ybegin:yend) end if if (this%i_sst .gt. 0) then write(6,*) 'get sst for cold or FVCOM' call ncdata%get_var(this%varnames(this%i_sst),this%xlon, & - this%xlat,this%xtime,this%nwp_sst_c) + this%xlat,this%xtime,tmp3d8b) + this%nwp_sst_c=tmp3d8b sst = this%nwp_sst_c(:,ybegin:yend,time_to_get) end if if (this%i_ice .gt. 0) then call ncdata%get_var(this%varnames(this%i_ice),this%xlon, & - this%xlat,this%xtime,this%nwp_ice_c) + this%xlat,this%xtime,tmp3d8b) + this%nwp_ice_c=tmp3d8b ice = this%nwp_ice_c(:,ybegin:yend,time_to_get) end if if (this%i_sfcT .gt. 0) then call ncdata%get_var(this%varnames(this%i_sfcT),this%xlon, & - this%xlat,this%xtime,this%nwp_sfcT_c) + this%xlat,this%xtime,tmp3d8b) + this%nwp_sfcT_c=tmp3d8b sfcT = this%nwp_sfcT_c(:,ybegin:yend,time_to_get) end if if (this%i_iceT .gt. 0) then call ncdata%get_var(this%varnames(this%i_iceT),this%xlon, & - this%xlat,this%xtime,this%nwp_iceT_c) + this%xlat,this%xtime,tmp3d8b) + this%nwp_iceT_c=tmp3d8b iceT = this%nwp_iceT_c(:,ybegin:yend,time_to_get) end if if (this%i_zorl .gt. 0) then call ncdata%get_var(this%varnames(this%i_zorl),this%xlon, & - this%xlat,this%xtime,this%nwp_zorl_c) + this%xlat,this%xtime,tmp3d8b) + this%nwp_zorl_c=tmp3d8b zorl = this%nwp_zorl_c(:,ybegin:yend,time_to_get) end if if (this%i_hice .gt. 0) then call ncdata%get_var(this%varnames(this%i_hice),this%xlon, & - this%xlat,this%xtime,this%nwp_hice_c) + this%xlat,this%xtime,tmp3d8b) + this%nwp_hice_c=tmp3d8b hice = this%nwp_hice_c(:,ybegin:yend,time_to_get) end if + deallocate(tmp2d8b) + deallocate(tmp3d8b) else if (wcstart == 'warm') then allocate(this%nwp_mask_w(this%xlon,this%xlat)) diff --git a/sorc/fvcom_tools.fd/process_FVCOM.f90 b/sorc/fvcom_tools.fd/process_FVCOM.f90 index c82121927..68ff9614e 100755 --- a/sorc/fvcom_tools.fd/process_FVCOM.f90 +++ b/sorc/fvcom_tools.fd/process_FVCOM.f90 @@ -77,14 +77,14 @@ program process_FVCOM integer :: fv3_io_layout_y integer,allocatable :: fv3_layout_begin(:),fv3_layout_end(:) - real(r_kind), allocatable :: fv3ice(:,:), fv3sst(:,:) - real(r_kind), allocatable :: fv3sfcT(:,:), fv3mask(:,:) - real(r_kind), allocatable :: fv3iceT(:,:), fv3sfcTl(:,:) - real(r_kind), allocatable :: fv3zorl(:,:), fv3hice(:,:) - real(r_kind), allocatable :: lbcice(:,:), lbcsst(:,:) - real(r_kind), allocatable :: lbcsfcT(:,:), lbcmask(:,:) - real(r_kind), allocatable :: lbciceT(:,:), lbczorl(:,:) - real(r_kind), allocatable :: lbchice(:,:) + real(r_single), allocatable :: fv3ice(:,:), fv3sst(:,:) + real(r_single), allocatable :: fv3sfcT(:,:), fv3mask(:,:) + real(r_single), allocatable :: fv3iceT(:,:), fv3sfcTl(:,:) + real(r_single), allocatable :: fv3zorl(:,:), fv3hice(:,:) + real(r_single), allocatable :: lbcice(:,:), lbcsst(:,:) + real(r_single), allocatable :: lbcsfcT(:,:), lbcmask(:,:) + real(r_single), allocatable :: lbciceT(:,:), lbczorl(:,:) + real(r_single), allocatable :: lbchice(:,:) ! Declare namelists ! SETUP (general control namelist) : @@ -378,14 +378,14 @@ program process_FVCOM if (wcstart == 'cold') then ! Add_New_Var takes names of (Variable,Dim1,Dim2,Dim3,Long_Name,Units) call geo%replace_var("zorl",NLON,NLAT,fv3zorl) - call geo%add_new_var('glmsk','xaxis_1','yaxis_1','Time','glmsk','none') + call geo%add_new_var('glmsk','xaxis_1','yaxis_1','Time','glmsk','none','float') call geo%replace_var('glmsk',NLON,NLAT,lbcmask) end if if (wcstart == 'warm') then call geo%replace_var("zorli",NLON,NLAT,fv3zorl) call geo%replace_var("tsfc",NLON,NLAT,fv3sfcT) call geo%replace_var("tsfcl",NLON,NLAT,fv3sfcTl) - call geo%add_new_var('glmsk','xaxis_1','yaxis_1','Time','glmsk','none') + call geo%add_new_var('glmsk','xaxis_1','yaxis_1','Time','glmsk','none','float') call geo%replace_var('glmsk',NLON,NLAT,lbcmask) end if call geo%close diff --git a/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 b/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 index a472f660f..71de50fb3 100644 --- a/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 +++ b/tests/fvcom_tools/ftst_readfvcomnetcdf.F90 @@ -40,14 +40,14 @@ program readfvcomnetcdf real :: lbcvice_expected(NUM_VALUES) !expected fvcom ice thickness values ! Create allocabable arrays to read from .nc files - real, allocatable :: fv3ice(:,:), fv3sst(:,:) - real, allocatable :: fv3sfcT(:,:), fv3mask(:,:) - real, allocatable :: fv3iceT(:,:), fv3sfcTl(:,:) - real, allocatable :: fv3zorl(:,:), fv3hice(:,:) - real, allocatable :: lbcice(:,:), lbcsst(:,:) - real, allocatable :: lbcsfcT(:,:), lbcmask(:,:) - real, allocatable :: lbciceT(:,:), lbchice(:,:) - real, allocatable :: lbczorl(:,:) + real(4), allocatable :: fv3ice(:,:), fv3sst(:,:) + real(4), allocatable :: fv3sfcT(:,:), fv3mask(:,:) + real(4), allocatable :: fv3iceT(:,:), fv3sfcTl(:,:) + real(4), allocatable :: fv3zorl(:,:), fv3hice(:,:) + real(4), allocatable :: lbcice(:,:), lbcsst(:,:) + real(4), allocatable :: lbcsfcT(:,:), lbcmask(:,:) + real(4), allocatable :: lbciceT(:,:), lbchice(:,:) + real(4), allocatable :: lbczorl(:,:) ! Expected values from the dummy files data lat_lon_expected_values /5, 5/ data fv3mask_expected /1, 0/ From 773fe3c6eee6a0d20db2d02036b7cac26d0779b3 Mon Sep 17 00:00:00 2001 From: GeorgeGayno-NOAA <52789452+GeorgeGayno-NOAA@users.noreply.github.com> Date: Tue, 17 Oct 2023 16:29:33 -0400 Subject: [PATCH 2/6] Doxygen Updates (#853) Fixes #835. --- docs/Doxyfile.in | 4 ++-- docs/README.md | 5 +++++ docs/{user_guide.md => main.md} | 0 sorc/chgres_cube.fd/docs/Doxyfile.in | 4 ++-- sorc/chgres_cube.fd/docs/README.md | 4 ++++ sorc/chgres_cube.fd/docs/{user_guide.md => chgres_cube.md} | 0 sorc/cpld_gridgen.fd/docs/Doxyfile.in | 4 ++-- sorc/cpld_gridgen.fd/docs/README.md | 4 ++++ sorc/cpld_gridgen.fd/docs/{user_guide.md => cpld_gridgen.md} | 0 sorc/emcsfc_ice_blend.fd/docs/Doxyfile.in | 4 ++-- sorc/emcsfc_ice_blend.fd/docs/README.md | 4 ++++ .../docs/{user_guide.md => emc_ice_blend.md} | 0 sorc/emcsfc_snow2mdl.fd/docs/Doxyfile.in | 4 ++-- sorc/emcsfc_snow2mdl.fd/docs/README.md | 4 ++++ .../docs/{user_guide.md => emcsfc_snow2mdl.md} | 0 sorc/fvcom_tools.fd/docs/Doxyfile.in | 4 ++-- sorc/fvcom_tools.fd/docs/README.md | 5 +++++ sorc/fvcom_tools.fd/docs/{user_guide.md => fvcom_tools.md} | 0 sorc/gblevents.fd/docs/Doxyfile.in | 4 ++-- sorc/gblevents.fd/docs/README.md | 3 +++ sorc/gblevents.fd/docs/{user_guide.md => gblevents.md} | 0 sorc/gblevents.fd/gblevents.f | 1 + sorc/global_cycle.fd/docs/Doxyfile.in | 4 ++-- sorc/global_cycle.fd/docs/README.md | 5 +++++ sorc/global_cycle.fd/docs/{user_guide.md => global_cycle.md} | 0 sorc/grid_tools.fd/docs/Doxyfile.in | 4 ++-- sorc/grid_tools.fd/docs/README.md | 3 +++ sorc/grid_tools.fd/docs/{user_guide.md => grid_tools.md} | 0 sorc/lsm_routines.fd/docs/Doxyfile.in | 4 ++-- sorc/lsm_routines.fd/docs/README.md | 4 ++++ sorc/lsm_routines.fd/docs/{user_guide.md => lsm_routines.md} | 0 sorc/lsm_routines.fd/noah.fd/docs/Doxyfile.in | 4 ++-- sorc/lsm_routines.fd/noah.fd/{readme => docs/README.md} | 2 +- sorc/lsm_routines.fd/noah.fd/docs/{user_guide.md => noah.md} | 0 sorc/orog_mask_tools.fd/docs/Doxyfile.in | 4 ++-- sorc/orog_mask_tools.fd/docs/README.md | 4 ++++ .../docs/{user_guide.md => orog_mask_tools.md} | 0 sorc/sfc_climo_gen.fd/docs/Doxyfile.in | 4 ++-- sorc/sfc_climo_gen.fd/docs/README.md | 4 ++++ .../docs/{user_guide.md => sfc_climo_gen.md} | 0 sorc/vcoord_gen.fd/docs/Doxyfile.in | 4 ++-- sorc/vcoord_gen.fd/docs/README.md | 4 ++++ sorc/vcoord_gen.fd/docs/{user_guide.md => vcoord_gen.md} | 0 43 files changed, 83 insertions(+), 29 deletions(-) create mode 100644 docs/README.md rename docs/{user_guide.md => main.md} (100%) create mode 100644 sorc/chgres_cube.fd/docs/README.md rename sorc/chgres_cube.fd/docs/{user_guide.md => chgres_cube.md} (100%) create mode 100644 sorc/cpld_gridgen.fd/docs/README.md rename sorc/cpld_gridgen.fd/docs/{user_guide.md => cpld_gridgen.md} (100%) create mode 100644 sorc/emcsfc_ice_blend.fd/docs/README.md rename sorc/emcsfc_ice_blend.fd/docs/{user_guide.md => emc_ice_blend.md} (100%) create mode 100644 sorc/emcsfc_snow2mdl.fd/docs/README.md rename sorc/emcsfc_snow2mdl.fd/docs/{user_guide.md => emcsfc_snow2mdl.md} (100%) create mode 100644 sorc/fvcom_tools.fd/docs/README.md rename sorc/fvcom_tools.fd/docs/{user_guide.md => fvcom_tools.md} (100%) create mode 100644 sorc/gblevents.fd/docs/README.md rename sorc/gblevents.fd/docs/{user_guide.md => gblevents.md} (100%) create mode 100644 sorc/global_cycle.fd/docs/README.md rename sorc/global_cycle.fd/docs/{user_guide.md => global_cycle.md} (100%) create mode 100644 sorc/grid_tools.fd/docs/README.md rename sorc/grid_tools.fd/docs/{user_guide.md => grid_tools.md} (100%) create mode 100644 sorc/lsm_routines.fd/docs/README.md rename sorc/lsm_routines.fd/docs/{user_guide.md => lsm_routines.md} (100%) rename sorc/lsm_routines.fd/noah.fd/{readme => docs/README.md} (91%) rename sorc/lsm_routines.fd/noah.fd/docs/{user_guide.md => noah.md} (100%) create mode 100644 sorc/orog_mask_tools.fd/docs/README.md rename sorc/orog_mask_tools.fd/docs/{user_guide.md => orog_mask_tools.md} (100%) create mode 100644 sorc/sfc_climo_gen.fd/docs/README.md rename sorc/sfc_climo_gen.fd/docs/{user_guide.md => sfc_climo_gen.md} (100%) create mode 100644 sorc/vcoord_gen.fd/docs/README.md rename sorc/vcoord_gen.fd/docs/{user_guide.md => vcoord_gen.md} (100%) diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index c0874346c..6c78b87cb 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/docs/user_guide.md +INPUT = @abs_top_srcdir@/docs/main.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1014,7 +1014,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = @abs_top_srcdir@/docs/sp_user_guide.md +USE_MDFILE_AS_MAINPAGE = @abs_top_srcdir@/docs/main.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..99e6c4cb7 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,5 @@ +For documentation see: + +https://ufs-community.github.io/UFS_UTILS + +https://noaa-emcufs-utils.readthedocs.io/en/latest diff --git a/docs/user_guide.md b/docs/main.md similarity index 100% rename from docs/user_guide.md rename to docs/main.md diff --git a/sorc/chgres_cube.fd/docs/Doxyfile.in b/sorc/chgres_cube.fd/docs/Doxyfile.in index f66dd3943..9e6dcf0e3 100644 --- a/sorc/chgres_cube.fd/docs/Doxyfile.in +++ b/sorc/chgres_cube.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/chgres_cube.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/chgres_cube.fd/docs/chgres_cube.md \ @abs_top_srcdir@/sorc/chgres_cube.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = chgres_cube.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/chgres_cube.fd/docs/README.md b/sorc/chgres_cube.fd/docs/README.md new file mode 100644 index 000000000..f035d6b47 --- /dev/null +++ b/sorc/chgres_cube.fd/docs/README.md @@ -0,0 +1,4 @@ +The chgres_cube program creates initial condition files to coldstart +the forecast model. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/chgres_cube.fd/docs/user_guide.md b/sorc/chgres_cube.fd/docs/chgres_cube.md similarity index 100% rename from sorc/chgres_cube.fd/docs/user_guide.md rename to sorc/chgres_cube.fd/docs/chgres_cube.md diff --git a/sorc/cpld_gridgen.fd/docs/Doxyfile.in b/sorc/cpld_gridgen.fd/docs/Doxyfile.in index 62808f419..8c64d2d93 100644 --- a/sorc/cpld_gridgen.fd/docs/Doxyfile.in +++ b/sorc/cpld_gridgen.fd/docs/Doxyfile.in @@ -855,7 +855,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/cpld_gridgen.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md \ @abs_top_srcdir@/sorc/cpld_gridgen.fd # This tag can be used to specify the character encoding of the source files @@ -1016,7 +1016,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = cpld_gridgen.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/cpld_gridgen.fd/docs/README.md b/sorc/cpld_gridgen.fd/docs/README.md new file mode 100644 index 000000000..ed90be316 --- /dev/null +++ b/sorc/cpld_gridgen.fd/docs/README.md @@ -0,0 +1,4 @@ +This program creates the files required for the Fix and IC files for +the coupled model. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/cpld_gridgen.fd/docs/user_guide.md b/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md similarity index 100% rename from sorc/cpld_gridgen.fd/docs/user_guide.md rename to sorc/cpld_gridgen.fd/docs/cpld_gridgen.md diff --git a/sorc/emcsfc_ice_blend.fd/docs/Doxyfile.in b/sorc/emcsfc_ice_blend.fd/docs/Doxyfile.in index ce7bc1001..156246c25 100644 --- a/sorc/emcsfc_ice_blend.fd/docs/Doxyfile.in +++ b/sorc/emcsfc_ice_blend.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/emcsfc_ice_blend.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/emcsfc_ice_blend.fd/docs/emc_ice_blend.md \ @abs_top_srcdir@/sorc/emcsfc_ice_blend.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = emc_ice_blend.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/emcsfc_ice_blend.fd/docs/README.md b/sorc/emcsfc_ice_blend.fd/docs/README.md new file mode 100644 index 000000000..b6ea661ed --- /dev/null +++ b/sorc/emcsfc_ice_blend.fd/docs/README.md @@ -0,0 +1,4 @@ +This program blends National Ice Center sea ice cover and EMC +sea ice concentration data to create a global sea ice analysis. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/emcsfc_ice_blend.fd/docs/user_guide.md b/sorc/emcsfc_ice_blend.fd/docs/emc_ice_blend.md similarity index 100% rename from sorc/emcsfc_ice_blend.fd/docs/user_guide.md rename to sorc/emcsfc_ice_blend.fd/docs/emc_ice_blend.md diff --git a/sorc/emcsfc_snow2mdl.fd/docs/Doxyfile.in b/sorc/emcsfc_snow2mdl.fd/docs/Doxyfile.in index 214bf03d1..1ab605434 100644 --- a/sorc/emcsfc_snow2mdl.fd/docs/Doxyfile.in +++ b/sorc/emcsfc_snow2mdl.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/emcsfc_snow2mdl.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/emcsfc_snow2mdl.fd/docs/emcsfc_snow2mdl.md \ @abs_top_srcdir@/sorc/emcsfc_snow2mdl.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = emcsfc_snow2mdl.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/emcsfc_snow2mdl.fd/docs/README.md b/sorc/emcsfc_snow2mdl.fd/docs/README.md new file mode 100644 index 000000000..d48964525 --- /dev/null +++ b/sorc/emcsfc_snow2mdl.fd/docs/README.md @@ -0,0 +1,4 @@ +This program blends National Ice Center snow cover and Air Force +snow depth data to create a global depth analysis. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/emcsfc_snow2mdl.fd/docs/user_guide.md b/sorc/emcsfc_snow2mdl.fd/docs/emcsfc_snow2mdl.md similarity index 100% rename from sorc/emcsfc_snow2mdl.fd/docs/user_guide.md rename to sorc/emcsfc_snow2mdl.fd/docs/emcsfc_snow2mdl.md diff --git a/sorc/fvcom_tools.fd/docs/Doxyfile.in b/sorc/fvcom_tools.fd/docs/Doxyfile.in index d30d6cc27..9d0202f88 100644 --- a/sorc/fvcom_tools.fd/docs/Doxyfile.in +++ b/sorc/fvcom_tools.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/fvcom_tools.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/fvcom_tools.fd/docs/fvcom_tools.md \ @abs_top_srcdir@/sorc/fvcom_tools.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = fvcom_tools.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/fvcom_tools.fd/docs/README.md b/sorc/fvcom_tools.fd/docs/README.md new file mode 100644 index 000000000..a77671271 --- /dev/null +++ b/sorc/fvcom_tools.fd/docs/README.md @@ -0,0 +1,5 @@ +This program replaces lake surface and lake ice temperature along +with aerial ice concentration generated from the Great Lakes +Operational Forecast System (GLOFS) into the model surface restart file. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/fvcom_tools.fd/docs/user_guide.md b/sorc/fvcom_tools.fd/docs/fvcom_tools.md similarity index 100% rename from sorc/fvcom_tools.fd/docs/user_guide.md rename to sorc/fvcom_tools.fd/docs/fvcom_tools.md diff --git a/sorc/gblevents.fd/docs/Doxyfile.in b/sorc/gblevents.fd/docs/Doxyfile.in index bcbcac4db..5abb21f95 100644 --- a/sorc/gblevents.fd/docs/Doxyfile.in +++ b/sorc/gblevents.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/gblevents.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/gblevents.fd/docs/gblevents.md \ @abs_top_srcdir@/sorc/gblevents.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = gblevents.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/gblevents.fd/docs/README.md b/sorc/gblevents.fd/docs/README.md new file mode 100644 index 000000000..25bf69112 --- /dev/null +++ b/sorc/gblevents.fd/docs/README.md @@ -0,0 +1,3 @@ +The gblevents program performs pre and post processing of prepbufr events. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/gblevents.fd/docs/user_guide.md b/sorc/gblevents.fd/docs/gblevents.md similarity index 100% rename from sorc/gblevents.fd/docs/user_guide.md rename to sorc/gblevents.fd/docs/gblevents.md diff --git a/sorc/gblevents.fd/gblevents.f b/sorc/gblevents.fd/gblevents.f index acc5ce6f9..70d0b9aa8 100644 --- a/sorc/gblevents.fd/gblevents.f +++ b/sorc/gblevents.fd/gblevents.f @@ -2047,6 +2047,7 @@ SUBROUTINE GBLEVN06(XOB,YOB) ! FORMERLY SUBROUTINE HTERP C> - (USED ONLY IN PREVENTS MODE) C> @param OEMIN - REAL MINIMUM VALUE FOR OBS ERROR (FOR VARIABLE BEING C> - INTERPOLATED) +C> @return OEFG01 OBSERVATION ERROR C> C> REMARKS: 'OEFG01' RETURNED IS OBSERVATION ERROR FOR VARIABLE "IE" IN C> REPORT TYPE "TYP", INTERPOLATED TO PRESSURE LEVEL "P". diff --git a/sorc/global_cycle.fd/docs/Doxyfile.in b/sorc/global_cycle.fd/docs/Doxyfile.in index 5d1fffb6a..b565301fa 100644 --- a/sorc/global_cycle.fd/docs/Doxyfile.in +++ b/sorc/global_cycle.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/global_cycle.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/global_cycle.fd/docs/global_cycle.md \ @abs_top_srcdir@/sorc/global_cycle.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = global_cycle.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/global_cycle.fd/docs/README.md b/sorc/global_cycle.fd/docs/README.md new file mode 100644 index 000000000..45365bbe6 --- /dev/null +++ b/sorc/global_cycle.fd/docs/README.md @@ -0,0 +1,5 @@ +This program updates the GFS surface conditions using +external snow and sea ice analyses. It updates monthly climatological +fields such as plant greenness fraction and albedo. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/global_cycle.fd/docs/user_guide.md b/sorc/global_cycle.fd/docs/global_cycle.md similarity index 100% rename from sorc/global_cycle.fd/docs/user_guide.md rename to sorc/global_cycle.fd/docs/global_cycle.md diff --git a/sorc/grid_tools.fd/docs/Doxyfile.in b/sorc/grid_tools.fd/docs/Doxyfile.in index bd6a3accd..7b0119611 100644 --- a/sorc/grid_tools.fd/docs/Doxyfile.in +++ b/sorc/grid_tools.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/grid_tools.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/grid_tools.fd/docs/grid_tools.md \ @abs_top_srcdir@/sorc/grid_tools.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = grid_tools.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/grid_tools.fd/docs/README.md b/sorc/grid_tools.fd/docs/README.md new file mode 100644 index 000000000..37aef8e8b --- /dev/null +++ b/sorc/grid_tools.fd/docs/README.md @@ -0,0 +1,3 @@ +Utility programs for creating model grids. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/grid_tools.fd/docs/user_guide.md b/sorc/grid_tools.fd/docs/grid_tools.md similarity index 100% rename from sorc/grid_tools.fd/docs/user_guide.md rename to sorc/grid_tools.fd/docs/grid_tools.md diff --git a/sorc/lsm_routines.fd/docs/Doxyfile.in b/sorc/lsm_routines.fd/docs/Doxyfile.in index 8467348f1..d8c40f87d 100644 --- a/sorc/lsm_routines.fd/docs/Doxyfile.in +++ b/sorc/lsm_routines.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/lsm_routines.fd/docs/user_guide.md +INPUT = @abs_top_srcdir@/sorc/lsm_routines.fd/docs/lsm_routines.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1014,7 +1014,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = lsm_routines.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/lsm_routines.fd/docs/README.md b/sorc/lsm_routines.fd/docs/README.md new file mode 100644 index 000000000..1ba6836a3 --- /dev/null +++ b/sorc/lsm_routines.fd/docs/README.md @@ -0,0 +1,4 @@ +This directory contains land surface model-specific routines that are +utilised elsewhere within UFS_UTILS. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/lsm_routines.fd/docs/user_guide.md b/sorc/lsm_routines.fd/docs/lsm_routines.md similarity index 100% rename from sorc/lsm_routines.fd/docs/user_guide.md rename to sorc/lsm_routines.fd/docs/lsm_routines.md diff --git a/sorc/lsm_routines.fd/noah.fd/docs/Doxyfile.in b/sorc/lsm_routines.fd/noah.fd/docs/Doxyfile.in index 49bd3f7e8..632a044b9 100644 --- a/sorc/lsm_routines.fd/noah.fd/docs/Doxyfile.in +++ b/sorc/lsm_routines.fd/noah.fd/docs/Doxyfile.in @@ -857,7 +857,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/lsm_routines.fd/noah.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/lsm_routines.fd/noah.fd/docs/noah.md \ @abs_top_srcdir@/sorc/lsm_routines.fd/noah.fd/ # This tag can be used to specify the character encoding of the source files @@ -1018,7 +1018,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = noah.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/lsm_routines.fd/noah.fd/readme b/sorc/lsm_routines.fd/noah.fd/docs/README.md similarity index 91% rename from sorc/lsm_routines.fd/noah.fd/readme rename to sorc/lsm_routines.fd/noah.fd/docs/README.md index 85a292f98..d4968c55e 100644 --- a/sorc/lsm_routines.fd/noah.fd/readme +++ b/sorc/lsm_routines.fd/noah.fd/docs/README.md @@ -10,4 +10,4 @@ set_soilveg.f -> needed some changes for doxygen sflx_snippet.f is a snippet of the file sflx.F, with minor changes to compil, and to enable frh2o routine to be called externally. - +For complete documentation, see https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/lsm_routines.fd/noah.fd/docs/user_guide.md b/sorc/lsm_routines.fd/noah.fd/docs/noah.md similarity index 100% rename from sorc/lsm_routines.fd/noah.fd/docs/user_guide.md rename to sorc/lsm_routines.fd/noah.fd/docs/noah.md diff --git a/sorc/orog_mask_tools.fd/docs/Doxyfile.in b/sorc/orog_mask_tools.fd/docs/Doxyfile.in index c4d9dec55..26bc1b541 100644 --- a/sorc/orog_mask_tools.fd/docs/Doxyfile.in +++ b/sorc/orog_mask_tools.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/orog_mask_tools.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/orog_mask_tools.fd/docs/orog_mask_tools.md \ @abs_top_srcdir@/sorc/orog_mask_tools.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = orog_mask_tools.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/orog_mask_tools.fd/docs/README.md b/sorc/orog_mask_tools.fd/docs/README.md new file mode 100644 index 000000000..c9c117819 --- /dev/null +++ b/sorc/orog_mask_tools.fd/docs/README.md @@ -0,0 +1,4 @@ +These programs are used in creating the terrain and land mask for +a model grid. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/orog_mask_tools.fd/docs/user_guide.md b/sorc/orog_mask_tools.fd/docs/orog_mask_tools.md similarity index 100% rename from sorc/orog_mask_tools.fd/docs/user_guide.md rename to sorc/orog_mask_tools.fd/docs/orog_mask_tools.md diff --git a/sorc/sfc_climo_gen.fd/docs/Doxyfile.in b/sorc/sfc_climo_gen.fd/docs/Doxyfile.in index 36fb2baa8..7f35e9ec1 100644 --- a/sorc/sfc_climo_gen.fd/docs/Doxyfile.in +++ b/sorc/sfc_climo_gen.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/sfc_climo_gen.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/sfc_climo_gen.fd/docs/sfc_climo_gen.md \ @abs_top_srcdir@/sorc/sfc_climo_gen.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = sfc_climo_gen.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/sfc_climo_gen.fd/docs/README.md b/sorc/sfc_climo_gen.fd/docs/README.md new file mode 100644 index 000000000..93388c9e8 --- /dev/null +++ b/sorc/sfc_climo_gen.fd/docs/README.md @@ -0,0 +1,4 @@ +This program creates climatological surface fields on the model grid, +such as soil type and albedo. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/sfc_climo_gen.fd/docs/user_guide.md b/sorc/sfc_climo_gen.fd/docs/sfc_climo_gen.md similarity index 100% rename from sorc/sfc_climo_gen.fd/docs/user_guide.md rename to sorc/sfc_climo_gen.fd/docs/sfc_climo_gen.md diff --git a/sorc/vcoord_gen.fd/docs/Doxyfile.in b/sorc/vcoord_gen.fd/docs/Doxyfile.in index e998ef6b0..b450c4504 100644 --- a/sorc/vcoord_gen.fd/docs/Doxyfile.in +++ b/sorc/vcoord_gen.fd/docs/Doxyfile.in @@ -854,7 +854,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/sorc/vcoord_gen.fd/docs/user_guide.md \ +INPUT = @abs_top_srcdir@/sorc/vcoord_gen.fd/docs/vcoord_gen.md \ @abs_top_srcdir@/sorc/vcoord_gen.fd # This tag can be used to specify the character encoding of the source files @@ -1015,7 +1015,7 @@ FILTER_SOURCE_PATTERNS = # (index.html). This can be useful if you have a project on for instance GitHub # and want to reuse the introduction page also for the doxygen output. -USE_MDFILE_AS_MAINPAGE = user_guide.md +USE_MDFILE_AS_MAINPAGE = vcoord_gen.md #--------------------------------------------------------------------------- # Configuration options related to source browsing diff --git a/sorc/vcoord_gen.fd/docs/README.md b/sorc/vcoord_gen.fd/docs/README.md new file mode 100644 index 000000000..238d5b850 --- /dev/null +++ b/sorc/vcoord_gen.fd/docs/README.md @@ -0,0 +1,4 @@ +This program generates the parameters needed to define +the forecast model's hybrid levels. + +Documentation may be found at https://ufs-community.github.io/UFS_UTILS diff --git a/sorc/vcoord_gen.fd/docs/user_guide.md b/sorc/vcoord_gen.fd/docs/vcoord_gen.md similarity index 100% rename from sorc/vcoord_gen.fd/docs/user_guide.md rename to sorc/vcoord_gen.fd/docs/vcoord_gen.md From b31385fdcf82b751b815b313a9cc86eaf4a5e3d8 Mon Sep 17 00:00:00 2001 From: GeorgeGayno-NOAA <52789452+GeorgeGayno-NOAA@users.noreply.github.com> Date: Wed, 18 Oct 2023 09:22:29 -0400 Subject: [PATCH 3/6] Fix 'readthedocs' build failure (#861) Add a new .readthedocs.yaml file, which is now required by ReadTheDocs. Remove references to "sphinxconfig.bibtex", which is not currently used by our documentation. Fixes #860. --- .readthedocs.yaml | 15 +++++++++++++++ docs/requirements.txt | 1 - docs/source/conf.py | 5 ++--- 3 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 .readthedocs.yaml delete mode 100644 docs/requirements.txt diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 000000000..c425804db --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,15 @@ +# .readthedocs.yaml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-20.04 + tools: + python: "3.9" + +sphinx: + configuration: docs/source/conf.py diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index ef36addc6..000000000 --- a/docs/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -sphinxcontrib-bibtex diff --git a/docs/source/conf.py b/docs/source/conf.py index e322267b8..4f5c826ef 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -50,11 +50,10 @@ 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', - 'sphinx.ext.napoleon', - 'sphinxcontrib.bibtex' + 'sphinx.ext.napoleon' ] -bibtex_bibfiles = ['references.bib'] +#bibtex_bibfiles = ['references.bib'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] From 72701ab45165ae67a1c4b4d855e763bf5674dbd2 Mon Sep 17 00:00:00 2001 From: GeorgeGayno-NOAA <52789452+GeorgeGayno-NOAA@users.noreply.github.com> Date: Tue, 24 Oct 2023 12:42:55 -0400 Subject: [PATCH 4/6] Release Version 1.11.0 (#863) Fixes #862. --- VERSION | 2 +- docs/main.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 81c871de4..1cac385c6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.0 +1.11.0 diff --git a/docs/main.md b/docs/main.md index 924055e72..80e6b5fdf 100644 --- a/docs/main.md +++ b/docs/main.md @@ -9,6 +9,7 @@ https://github.com/ufs-community/UFS_UTILS. ## Documentation for Previous Versions of UFS_UTILS +* [UFS_UTILS Version 1.11.0](ver-1.11.0/index.html) * [UFS_UTILS Version 1.10.0](ver-1.10.0/index.html) * [UFS_UTILS Version 1.9.0](ver-1.9.0/index.html) * [UFS_UTILS Version 1.8.0](ver-1.8.0/index.html) From 41f7ca923ec290a78fd525eecd524927ab16f255 Mon Sep 17 00:00:00 2001 From: Denise Worthen Date: Fri, 27 Oct 2023 08:36:20 -0400 Subject: [PATCH 5/6] cpld_gridgen: Fix weights generation for tripole->rectilinear output of ocean and ice (#858) When generating rectilinear destination grids, set lat_typ=cap in order to obtain a grid from 90S to 90N. Also, return an optional RouteHandle (un-used) when generating the ESMF Weights. This creates a weights file which properly generates values along the tripole seam. Fixes #857 Fixes #864 --- .../RegressionTests_hera.intel.log | 83 +++++++++- .../RegressionTests_jet.intel.log | 83 +++++++++- .../RegressionTests_orion.intel.log | 83 +++++++++- .../RegressionTests_wcoss2.intel.log | 143 ++++++++++++++++++ reg_tests/cpld_gridgen/rt.conf | 1 + reg_tests/cpld_gridgen/rt.sh | 11 +- sorc/cpld_gridgen.fd/charstrings.F90 | 2 +- sorc/cpld_gridgen.fd/gen_fixgrid.F90 | 32 +++- sorc/cpld_gridgen.fd/postwgts.F90 | 28 ++-- ush/cpld_gridgen.sh | 33 ++-- 10 files changed, 431 insertions(+), 68 deletions(-) create mode 100644 reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log diff --git a/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log b/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log index 6e9632d61..1a9a8954d 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log @@ -1,8 +1,8 @@ -Sat Apr 23 17:52:41 UTC 2022 +Thu Oct 26 17:23:32 UTC 2023 Start Regression test -Working dir = /scratch1/NCEPDEV/stmp4/Minsuk.Ji/CPLD_GRIDGEN/rt_142841/025 -Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_198243/025 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025.new Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -20,11 +20,26 @@ Comparing Cv.mx025_SCRIP.nc........OK Comparing grid_cice_NEMS_mx025.nc........OK Comparing kmtu_cice_NEMS_mx025.nc........OK Comparing mesh.mx025.nc........OK +Comparing rect.0p25_SCRIP.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx025.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx025.nc........OK -Working dir = /scratch1/NCEPDEV/stmp4/Minsuk.Ji/CPLD_GRIDGEN/rt_142841/050 -Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_198243/050 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050.new Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -43,12 +58,24 @@ Comparing Cv.mx050_SCRIP.nc........OK Comparing grid_cice_NEMS_mx050.nc........OK Comparing kmtu_cice_NEMS_mx050.nc........OK Comparing mesh.mx050.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK Comparing tripole.mx025.Ct.to.mx050.Ct.neareststod.nc........OK +Comparing tripole.mx050.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx050.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx050.nc........OK -Working dir = /scratch1/NCEPDEV/stmp4/Minsuk.Ji/CPLD_GRIDGEN/rt_142841/100 -Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_198243/100 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100.new Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -67,10 +94,50 @@ Comparing Cv.mx100_SCRIP.nc........OK Comparing grid_cice_NEMS_mx100.nc........OK Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK Comparing tripole.mx025.Ct.to.mx100.Ct.neareststod.nc........OK +Comparing tripole.mx100.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx100.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_198243/500 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/500.new + +Checking test 500 results .... +Comparing Bu.mx500_SCRIP.nc........OK +Comparing C48.mx500.tile1.nc........OK +Comparing C48.mx500.tile2.nc........OK +Comparing C48.mx500.tile3.nc........OK +Comparing C48.mx500.tile4.nc........OK +Comparing C48.mx500.tile5.nc........OK +Comparing C48.mx500.tile6.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx500_SCRIP_land.nc........OK +Comparing Ct.mx500_SCRIP.nc........OK +Comparing Ct.mx500.to.C48.nc........OK +Comparing Cu.mx500_SCRIP.nc........OK +Comparing Cv.mx500_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx500.nc........OK +Comparing kmtu_cice_NEMS_mx500.nc........OK +Comparing mesh.mx500.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.neareststod.nc........OK +Comparing tripole.mx500.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.nc........OK + + REGRESSION TEST WAS SUCCESSFUL -Sat Apr 23 17:57:15 UTC 2022 +Thu Oct 26 17:46:20 UTC 2023 +Elapsed time: 00h:24m:25s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/RegressionTests_jet.intel.log b/reg_tests/cpld_gridgen/RegressionTests_jet.intel.log index 88b074661..a0d8ca735 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_jet.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_jet.intel.log @@ -1,8 +1,8 @@ -Mon Apr 25 14:59:30 GMT 2022 +Thu Oct 26 18:20:27 UTC 2023 Start Regression test -Working dir = /lfs4/HFIP/h-nems//Minsuk.Ji/CPLD_GRIDGEN/rt_25376/025 -Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_55026/025 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025.new Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -20,11 +20,26 @@ Comparing Cv.mx025_SCRIP.nc........OK Comparing grid_cice_NEMS_mx025.nc........OK Comparing kmtu_cice_NEMS_mx025.nc........OK Comparing mesh.mx025.nc........OK +Comparing rect.0p25_SCRIP.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx025.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx025.nc........OK -Working dir = /lfs4/HFIP/h-nems//Minsuk.Ji/CPLD_GRIDGEN/rt_25376/050 -Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_55026/050 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050.new Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -43,12 +58,24 @@ Comparing Cv.mx050_SCRIP.nc........OK Comparing grid_cice_NEMS_mx050.nc........OK Comparing kmtu_cice_NEMS_mx050.nc........OK Comparing mesh.mx050.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK Comparing tripole.mx025.Ct.to.mx050.Ct.neareststod.nc........OK +Comparing tripole.mx050.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx050.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx050.nc........OK -Working dir = /lfs4/HFIP/h-nems//Minsuk.Ji/CPLD_GRIDGEN/rt_25376/100 -Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_55026/100 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100.new Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -67,10 +94,50 @@ Comparing Cv.mx100_SCRIP.nc........OK Comparing grid_cice_NEMS_mx100.nc........OK Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK Comparing tripole.mx025.Ct.to.mx100.Ct.neareststod.nc........OK +Comparing tripole.mx100.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx100.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_55026/500 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/500.new + +Checking test 500 results .... +Comparing Bu.mx500_SCRIP.nc........OK +Comparing C48.mx500.tile1.nc........OK +Comparing C48.mx500.tile2.nc........OK +Comparing C48.mx500.tile3.nc........OK +Comparing C48.mx500.tile4.nc........OK +Comparing C48.mx500.tile5.nc........OK +Comparing C48.mx500.tile6.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx500.to.C48.nc........OK +Comparing Ct.mx500_SCRIP.nc........OK +Comparing Ct.mx500_SCRIP_land.nc........OK +Comparing Cu.mx500_SCRIP.nc........OK +Comparing Cv.mx500_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx500.nc........OK +Comparing kmtu_cice_NEMS_mx500.nc........OK +Comparing mesh.mx500.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.neareststod.nc........OK +Comparing tripole.mx500.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.nc........OK + + REGRESSION TEST WAS SUCCESSFUL -Mon Apr 25 15:07:31 GMT 2022 +Thu Oct 26 18:50:56 UTC 2023 +Elapsed time: 00h:32m:10s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/RegressionTests_orion.intel.log b/reg_tests/cpld_gridgen/RegressionTests_orion.intel.log index 2a7e3b8e0..ff7816ef9 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_orion.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_orion.intel.log @@ -1,8 +1,8 @@ -Sat Apr 23 12:52:18 CDT 2022 +Thu Oct 26 13:21:30 CDT 2023 Start Regression test -Working dir = /work/noaa/stmp/jminsuk/CPLD_GRIDGEN/rt_614/025 -Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_121164/025 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025.new Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -20,11 +20,26 @@ Comparing Cv.mx025_SCRIP.nc........OK Comparing grid_cice_NEMS_mx025.nc........OK Comparing kmtu_cice_NEMS_mx025.nc........OK Comparing mesh.mx025.nc........OK +Comparing rect.0p25_SCRIP.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx025.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx025.nc........OK -Working dir = /work/noaa/stmp/jminsuk/CPLD_GRIDGEN/rt_614/050 -Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_121164/050 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050.new Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -43,12 +58,24 @@ Comparing Cv.mx050_SCRIP.nc........OK Comparing grid_cice_NEMS_mx050.nc........OK Comparing kmtu_cice_NEMS_mx050.nc........OK Comparing mesh.mx050.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK Comparing tripole.mx025.Ct.to.mx050.Ct.neareststod.nc........OK +Comparing tripole.mx050.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx050.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx050.nc........OK -Working dir = /work/noaa/stmp/jminsuk/CPLD_GRIDGEN/rt_614/100 -Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_121164/100 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100.new Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -67,10 +94,50 @@ Comparing Cv.mx100_SCRIP.nc........OK Comparing grid_cice_NEMS_mx100.nc........OK Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK Comparing tripole.mx025.Ct.to.mx100.Ct.neareststod.nc........OK +Comparing tripole.mx100.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx100.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_121164/500 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/500.new + +Checking test 500 results .... +Comparing Bu.mx500_SCRIP.nc........OK +Comparing C48.mx500.tile1.nc........OK +Comparing C48.mx500.tile2.nc........OK +Comparing C48.mx500.tile3.nc........OK +Comparing C48.mx500.tile4.nc........OK +Comparing C48.mx500.tile5.nc........OK +Comparing C48.mx500.tile6.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx500_SCRIP_land.nc........OK +Comparing Ct.mx500_SCRIP.nc........OK +Comparing Ct.mx500.to.C48.nc........OK +Comparing Cu.mx500_SCRIP.nc........OK +Comparing Cv.mx500_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx500.nc........OK +Comparing kmtu_cice_NEMS_mx500.nc........OK +Comparing mesh.mx500.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.neareststod.nc........OK +Comparing tripole.mx500.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.nc........OK + + REGRESSION TEST WAS SUCCESSFUL -Sat Apr 23 12:56:51 CDT 2022 +Thu Oct 26 13:41:16 CDT 2023 +Elapsed time: 00h:21m:06s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log b/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log new file mode 100644 index 000000000..08cef51ad --- /dev/null +++ b/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log @@ -0,0 +1,143 @@ +Thu Oct 26 18:28:37 UTC 2023 +Start Regression test + +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_155737/025 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/025.new + +Checking test 025 results .... +Comparing Bu.mx025_SCRIP.nc........OK +Comparing C384.mx025.tile1.nc........OK +Comparing C384.mx025.tile2.nc........OK +Comparing C384.mx025.tile3.nc........OK +Comparing C384.mx025.tile4.nc........OK +Comparing C384.mx025.tile5.nc........OK +Comparing C384.mx025.tile6.nc........OK +Comparing Ct.mx025_SCRIP_land.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx025.to.C384.nc........OK +Comparing Cu.mx025_SCRIP.nc........OK +Comparing Cv.mx025_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx025.nc........OK +Comparing kmtu_cice_NEMS_mx025.nc........OK +Comparing mesh.mx025.nc........OK +Comparing rect.0p25_SCRIP.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p25.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx025.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.nc........OK + + +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_155737/050 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/050.new + +Checking test 050 results .... +Comparing Bu.mx050_SCRIP.nc........OK +Comparing C192.mx050.tile1.nc........OK +Comparing C192.mx050.tile2.nc........OK +Comparing C192.mx050.tile3.nc........OK +Comparing C192.mx050.tile4.nc........OK +Comparing C192.mx050.tile5.nc........OK +Comparing C192.mx050.tile6.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx050_SCRIP_land.nc........OK +Comparing Ct.mx050_SCRIP.nc........OK +Comparing Ct.mx050.to.C192.nc........OK +Comparing Cu.mx050_SCRIP.nc........OK +Comparing Cv.mx050_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx050.nc........OK +Comparing kmtu_cice_NEMS_mx050.nc........OK +Comparing mesh.mx050.nc........OK +Comparing rect.0p5_SCRIP.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx050.Ct.neareststod.nc........OK +Comparing tripole.mx050.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p5.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx050.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx050.nc........OK + + +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_155737/100 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/100.new + +Checking test 100 results .... +Comparing Bu.mx100_SCRIP.nc........OK +Comparing C96.mx100.tile1.nc........OK +Comparing C96.mx100.tile2.nc........OK +Comparing C96.mx100.tile3.nc........OK +Comparing C96.mx100.tile4.nc........OK +Comparing C96.mx100.tile5.nc........OK +Comparing C96.mx100.tile6.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx100_SCRIP_land.nc........OK +Comparing Ct.mx100_SCRIP.nc........OK +Comparing Ct.mx100.to.C96.nc........OK +Comparing Cu.mx100_SCRIP.nc........OK +Comparing Cv.mx100_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx100.nc........OK +Comparing kmtu_cice_NEMS_mx100.nc........OK +Comparing mesh.mx100.nc........OK +Comparing rect.1p0_SCRIP.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx100.Ct.neareststod.nc........OK +Comparing tripole.mx100.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p0.conserve.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx100.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx100.nc........OK +Comparing ufs.topo_edits_011818.nc........OK + + +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_155737/500 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/500.new + +Checking test 500 results .... +Comparing Bu.mx500_SCRIP.nc........OK +Comparing C48.mx500.tile1.nc........OK +Comparing C48.mx500.tile2.nc........OK +Comparing C48.mx500.tile3.nc........OK +Comparing C48.mx500.tile4.nc........OK +Comparing C48.mx500.tile5.nc........OK +Comparing C48.mx500.tile6.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx500_SCRIP_land.nc........OK +Comparing Ct.mx500_SCRIP.nc........OK +Comparing Ct.mx500.to.C48.nc........OK +Comparing Cu.mx500_SCRIP.nc........OK +Comparing Cv.mx500_SCRIP.nc........OK +Comparing grid_cice_NEMS_mx500.nc........OK +Comparing kmtu_cice_NEMS_mx500.nc........OK +Comparing mesh.mx500.nc........OK +Comparing rect.5p0_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.neareststod.nc........OK +Comparing tripole.mx500.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p0.conserve.nc........OK +Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.Cv.to.Ct.bilinear.nc........OK +Comparing tripole.mx500.nc........OK + + +REGRESSION TEST WAS SUCCESSFUL +Thu Oct 26 18:48:08 UTC 2023 +Elapsed time: 00h:20m:34s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/rt.conf b/reg_tests/cpld_gridgen/rt.conf index 64b2a617f..d40b4d815 100644 --- a/reg_tests/cpld_gridgen/rt.conf +++ b/reg_tests/cpld_gridgen/rt.conf @@ -9,6 +9,7 @@ C384_025 | C192_050 | C384_025 C096_100 | C384_025 + C048_500 | C384_025 ################################################################# # Non-baseline configurations. diff --git a/reg_tests/cpld_gridgen/rt.sh b/reg_tests/cpld_gridgen/rt.sh index b08cbac7c..49f353963 100755 --- a/reg_tests/cpld_gridgen/rt.sh +++ b/reg_tests/cpld_gridgen/rt.sh @@ -108,7 +108,7 @@ TESTS_FILE="$PATHRT/rt.conf" export TEST_NAME= # for C3072 on hera, use WLCLK=60 and MEM="--exclusive" -WLCLK_dflt=10 +WLCLK_dflt=15 export WLCLK=$WLCLK_dflt MEM_dflt="--mem=12g" export MEM=$MEM_dflt @@ -125,7 +125,7 @@ rm -f fail_test* $COMPILE_LOG run_*.log nccmp_*.log summary.log if [[ $target = wcoss2 ]]; then STMP=${STMP:-/lfs/h2/emc/stmp/$USER} - export MOM6_FIXDIR=/lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/fix_mom6 + export MOM6_FIXDIR=/lfs/h2/emc/global/noscrub/emc.global/FIX/fix/mom6/20220805 BASELINE_ROOT=/lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data ACCOUNT=${ACCOUNT:-GFS-DEV} export APRUN="mpiexec -n 1 -ppn 1 --cpu-bind core" @@ -134,7 +134,7 @@ if [[ $target = wcoss2 ]]; then NCCMP=/lfs/h2/emc/global/noscrub/George.Gayno/util/nccmp/nccmp-1.8.5.0/src/nccmp elif [[ $target = hera ]]; then STMP=${STMP:-/scratch1/NCEPDEV/stmp4/$USER} - export MOM6_FIXDIR=/scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/fix_mom6 + export MOM6_FIXDIR=/scratch1/NCEPDEV/global/glopara/fix/mom6/20220805 BASELINE_ROOT=/scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data ACCOUNT=${ACCOUNT:-nems} QUEUE=${QUEUE:-batch} @@ -143,7 +143,7 @@ elif [[ $target = hera ]]; then SBATCH_COMMAND="./cpld_gridgen.sh" elif [[ $target = orion ]]; then STMP=${STMP:-/work/noaa/stmp/$USER} - export MOM6_FIXDIR=/work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/fix_mom6 + export MOM6_FIXDIR=/work/noaa/global/glopara/fix/mom6/20220805 BASELINE_ROOT=/work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data ACCOUNT=${ACCOUNT:-nems} QUEUE=${QUEUE:-batch} @@ -153,13 +153,14 @@ elif [[ $target = orion ]]; then SBATCH_COMMAND="./cpld_gridgen.sh" elif [[ $target = jet ]]; then STMP=${STMP:-/lfs4/HFIP/h-nems/$USER} - export MOM6_FIXDIR=/lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/fix_mom6 + export MOM6_FIXDIR=/lfs4/HFIP/hfv3gfs/glopara/git/fv3gfs/fix/mom6/20220805 BASELINE_ROOT=/lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data ACCOUNT=${ACCOUNT:-h-nems} QUEUE=${QUEUE:-batch} NCCMP=nccmp PARTITION=xjet ulimit -s unlimited + WLCLK=25 SBATCH_COMMAND="./cpld_gridgen.sh" fi NEW_BASELINE_ROOT=$STMP/CPLD_GRIDGEN/BASELINE diff --git a/sorc/cpld_gridgen.fd/charstrings.F90 b/sorc/cpld_gridgen.fd/charstrings.F90 index 00deab1b4..0e7b5a19b 100644 --- a/sorc/cpld_gridgen.fd/charstrings.F90 +++ b/sorc/cpld_gridgen.fd/charstrings.F90 @@ -15,7 +15,7 @@ module charstrings character(len=CL) :: dirout !< The directory where output files will be written character(len=CL) :: fv3dir !< The directory containing the FV3 mosaic files character(len=CS) :: res !< The Ocean/Ice resolution, e.g. 500 (5deg), 100 (1deg) - !! 050 (1/2deg), 025 (1/4deg) + !! 050 (1/2deg), 025 (1/4deg) character(len=CS) :: atmres !< The ATM resolution, e.g. C96, C192, C384 character(len=CL) :: logmsg !< An informational message diff --git a/sorc/cpld_gridgen.fd/gen_fixgrid.F90 b/sorc/cpld_gridgen.fd/gen_fixgrid.F90 index 2fcffb126..36f118eed 100644 --- a/sorc/cpld_gridgen.fd/gen_fixgrid.F90 +++ b/sorc/cpld_gridgen.fd/gen_fixgrid.F90 @@ -169,17 +169,22 @@ program gen_fixgrid if(xtype.eq. 6)dp4 = real(dp8,4) - !print *,minval(dp8),maxval(dp8) - !print *,minval(dp4),maxval(dp4) - if(editmask)then !--------------------------------------------------------------------- - ! apply topoedits run time mask changes if required for this config + ! apply topoedits run time mask changes if required for this config + ! this will create a modified topoedits file which accounts for any + ! land mask changes created at run time by MOM6 !--------------------------------------------------------------------- if(trim(editsfile) == 'none')then print '(a)', 'Need a valid editsfile to make mask edits ' - stop + call abort() + end if + inquire(file=trim(dirsrc)//'/'//trim(editsfile),exist=fexist) + if (.not. fexist) then + print '(a)', 'Required topoedits file '//trim(editsfile) & + //'for land mask changes is missing ' + call abort() end if fsrc = trim(dirsrc)//'/'//trim(editsfile) @@ -191,11 +196,22 @@ program gen_fixgrid ! MOM6 reads the depth file, applies the topo edits and then adjusts ! depth using masking_depth and min/max depth. This call mimics ! MOM6 routines apply_topography_edits_from_file and limit_topography + ! If the the topoedits file has been modified to account for MOM6 run + ! time land mask changes (above), then the depth will be created using + ! this modified topoedits file !--------------------------------------------------------------------- - fsrc = trim(dirsrc)//'/'//trim(editsfile) - if(editmask)fsrc = trim(dirout)//'/'//'ufs.'//trim(editsfile) - call apply_topoedits(fsrc) + fsrc = trim(dirsrc)//'/'//trim(editsfile) + if(editmask)fsrc = trim(dirout)//'/'//'ufs.'//trim(editsfile) + + if (trim(editsfile) /= 'none') then + inquire(file=trim(fsrc),exist=fexist) + if (.not. fexist) then + print '(a)', 'Required topoedits file '//trim(fsrc)//' is missing ' + call abort() + end if + end if + call apply_topoedits(fsrc) !--------------------------------------------------------------------- ! read MOM6 supergrid file diff --git a/sorc/cpld_gridgen.fd/postwgts.F90 b/sorc/cpld_gridgen.fd/postwgts.F90 index 4ff0bc0fa..0310d8db9 100644 --- a/sorc/cpld_gridgen.fd/postwgts.F90 +++ b/sorc/cpld_gridgen.fd/postwgts.F90 @@ -29,6 +29,7 @@ subroutine make_postwgts character(len=CM), dimension(2) :: methodname = (/'conserve', 'bilinear'/) + type(ESMF_RouteHandle) :: rh type(ESMF_RegridMethod_Flag) :: method ! the number of possible destination grids depends on the source grid resolution integer :: k,rc,nd,ndest @@ -38,22 +39,25 @@ subroutine make_postwgts ! set the destination grids !--------------------------------------------------------------------- - if(trim(res) .eq. '400')return - - if(trim(res) .eq. '100')then + if(trim(res) .eq. '500')then ndest = 1 allocate(destgrds(ndest)) - destgrds = (/'1p0 '/) + destgrds = (/'5p0 '/) end if - if(trim(res) .eq. '050')then + if(trim(res) .eq. '100')then ndest = 2 allocate(destgrds(ndest)) - destgrds = (/'1p0 ', '0p5 '/) + destgrds = (/'5p0 ', '1p0 '/) end if - if(trim(res) .eq. '025')then + if(trim(res) .eq. '050')then ndest = 3 allocate(destgrds(ndest)) - destgrds = (/'1p0 ', '0p5 ', '0p25'/) + destgrds = (/'5p0 ', '1p0 ', '0p5 '/) + end if + if(trim(res) .eq. '025')then + ndest = 4 + allocate(destgrds(ndest)) + destgrds = (/'5p0 ', '1p0 ', '0p5 ', '0p25'/) end if !--------------------------------------------------------------------- @@ -71,8 +75,8 @@ subroutine make_postwgts print '(a)',trim(logmsg) call ESMF_RegridWeightGen(srcFile=trim(fsrc),dstFile=trim(fdst), & - weightFile=trim(fwgt), regridmethod=method, & - ignoreDegenerate=.true., & + weightFile=trim(fwgt), regridmethod=method, & + ignoreDegenerate=.true., & unmappedaction=ESMF_UNMAPPEDACTION_IGNORE, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) call ESMF_Finalize(endflag=ESMF_END_ABORT) @@ -98,8 +102,8 @@ subroutine make_postwgts print '(a)',trim(logmsg) call ESMF_RegridWeightGen(srcFile=trim(fsrc),dstFile=trim(fdst), & - weightFile=trim(fwgt), regridmethod=method, & - ignoreDegenerate=.true., & + weightFile=trim(fwgt), regridmethod=method, & + ignoreDegenerate=.true., regridRouteHandle=rh, & unmappedaction=ESMF_UNMAPPEDACTION_IGNORE, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, & line=__LINE__, file=__FILE__)) call ESMF_Finalize(endflag=ESMF_END_ABORT) diff --git a/ush/cpld_gridgen.sh b/ush/cpld_gridgen.sh index 2573baf6e..2aafd621e 100755 --- a/ush/cpld_gridgen.sh +++ b/ush/cpld_gridgen.sh @@ -21,7 +21,7 @@ function edit_namelist { export RESNAME=${RESNAME:-$1} export DEBUG=.false. export MASKEDIT=.false. -export DO_POSTWGTS=.false. +export DO_POSTWGTS=.true. export OUTDIR_PATH=${OUTDIR_PATH:-/scratch1/NCEPDEV/climate/Denise.Worthen/grids-20220116} export MOSAICDIR_PATH=${MOSAICDIR_PATH:-$PATHTR/fix/orog} if [[ $MOSAICRES == C3072 ]]; then @@ -41,11 +41,7 @@ elif [[ $MOSAICRES == C048 ]]; then export MOSAICRES=C48 export NPX=48 fi -if [ $RESNAME = 500 ]; then - export FIXDIR_PATH=/scratch1/NCEPDEV/global/glopara/fix/mom6/20220805/500/ -else - export FIXDIR_PATH=${MOM6_FIXDIR}/${RESNAME} -fi +export FIXDIR_PATH=${MOM6_FIXDIR}/${RESNAME} APRUN=${APRUN:-"srun"} @@ -54,6 +50,10 @@ if [ $RESNAME = 500 ]; then export NJ=35 export TOPOGFILE=ocean_topog.nc export EDITSFILE='none' + if [ $DO_POSTWGTS == .true. ]; then + #pre-generate SCRIP files for dst rectilinear grids using NCO + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.5p0_SCRIP.nc -G latlon=36,72#lon_typ=grn_ctr#lat_typ=cap + fi fi if [ $RESNAME = 100 ]; then @@ -64,9 +64,8 @@ if [ $RESNAME = 100 ]; then export EDITSFILE=topo_edits_011818.nc if [ $DO_POSTWGTS == .true. ]; then #pre-generate SCRIP files for dst rectilinear grids using NCO - # TODO: is the stagger really correct? The first pt is at 0.0E? - # should lat_type be cap? #lon_typ=grn_ctr#lat_typ=cap - ncremap -g ${OUTDIR_PATH}/rect.1p0_SCRIP.nc -G latlon=181,360#lon_typ=grn_ctr + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.5p0_SCRIP.nc -G latlon=36,72#lon_typ=grn_ctr#lat_typ=cap + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.1p0_SCRIP.nc -G latlon=181,360#lon_typ=grn_ctr#lat_typ=cap fi fi @@ -77,10 +76,9 @@ if [ $RESNAME = 050 ]; then export EDITSFILE='none' if [ $DO_POSTWGTS == .true. ]; then #pre-generate SCRIP files for dst rectilinear grids using NCO - # TODO: is the stagger really correct? The first pt is at 0.0E? - # should lat_type be cap? #lon_typ=grn_ctr#lat_typ=cap - ncremap -g ${OUTDIR_PATH}/rect.1p0_SCRIP.nc -G latlon=181,360#lon_typ=grn_ctr - ncremap -g ${OUTDIR_PATH}/rect.0p5_SCRIP.nc -G latlon=361,720#lon_typ=grn_ctr + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.5p0_SCRIP.nc -G latlon=36,72#lon_typ=grn_ctr#lat_typ=cap + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.1p0_SCRIP.nc -G latlon=181,360#lon_typ=grn_ctr#lat_typ=cap + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.0p5_SCRIP.nc -G latlon=361,720#lon_typ=grn_ctr#lat_typ=cap fi fi @@ -91,11 +89,10 @@ if [ $RESNAME = 025 ]; then export EDITSFILE=All_edits.nc if [ $DO_POSTWGTS == .true. ]; then #pre-generate SCRIP files for dst rectilinear grids using NCO - # TODO: is the stagger really correct? The first pt is at 0.0E? - # should lat_type be cap? #lon_typ=grn_ctr#lat_typ=cap - ncremap -g ${OUTDIR_PATH}/rect.1p0_SCRIP.nc -G latlon=181,360#lon_typ=grn_ctr - ncremap -g ${OUTDIR_PATH}/rect.0p5_SCRIP.nc -G latlon=361,720#lon_typ=grn_ctr - ncremap -g ${OUTDIR_PATH}/rect.0p25_SCRIP.nc -G latlon=721,1440#lon_typ=grn_ctr + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.5p0_SCRIP.nc -G latlon=36,72#lon_typ=grn_ctr#lat_typ=cap + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.1p0_SCRIP.nc -G latlon=181,360#lon_typ=grn_ctr#lat_typ=cap + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.0p5_SCRIP.nc -G latlon=361,720#lon_typ=grn_ctr#lat_typ=cap + $APRUN -n 1 ncremap -g ${OUTDIR_PATH}/rect.0p25_SCRIP.nc -G latlon=721,1440#lon_typ=grn_ctr#lat_typ=cap fi fi From 325c32f11d3c013366b1936f7b16d45e11d3c6ff Mon Sep 17 00:00:00 2001 From: GeorgeGayno-NOAA <52789452+GeorgeGayno-NOAA@users.noreply.github.com> Date: Fri, 27 Oct 2023 15:47:44 -0400 Subject: [PATCH 6/6] chgres_cube: Remove "-fallow-argument-mismatch compile" flag (#865) The "-fallow-argument-mismatch" compiler flag is needed when building chgres_cube using GNU v10. Make minor adjustments to the source code to eliminate the need for this flag. Also, remove this flag from build of other programs that don't require it. Fixes #471. --- CMakeLists.txt | 2 +- sorc/chgres_cube.fd/CMakeLists.txt | 5 ----- sorc/chgres_cube.fd/atm_input_data.F90 | 6 +++--- sorc/chgres_cube.fd/atmosphere.F90 | 4 ++-- sorc/chgres_cube.fd/chgres.F90 | 2 +- sorc/chgres_cube.fd/msis2.1.fd/msis_init.F90 | 2 +- sorc/chgres_cube.fd/search_util.F90 | 2 +- sorc/chgres_cube.fd/sfc_input_data.F90 | 2 +- sorc/chgres_cube.fd/surface.F90 | 2 +- sorc/chgres_cube.fd/utils.F90 | 4 ++-- sorc/cpld_gridgen.fd/CMakeLists.txt | 5 ----- sorc/gblevents.fd/CMakeLists.txt | 3 +++ sorc/lsm_routines.fd/noah.fd/CMakeLists.txt | 3 --- sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt | 2 +- sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt | 2 +- sorc/weight_gen.fd/CMakeLists.txt | 3 --- 16 files changed, 18 insertions(+), 31 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4278cc9f8..6a0d1a345 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,7 +74,7 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -fbacktrace") if(${CMAKE_Fortran_COMPILER_VERSION} VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch -fallow-invalid-boz") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-invalid-boz") endif() set(CMAKE_Fortran_FLAGS_RELEASE "-O3") set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -ggdb -Wall -fcheck=all") diff --git a/sorc/chgres_cube.fd/CMakeLists.txt b/sorc/chgres_cube.fd/CMakeLists.txt index e7e3c49cd..53fe3644d 100644 --- a/sorc/chgres_cube.fd/CMakeLists.txt +++ b/sorc/chgres_cube.fd/CMakeLists.txt @@ -29,11 +29,6 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -assume byterecl") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8") - - # Turn on this argument mismatch flag for gfortran10. - if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") - endif() endif() set(exe_name chgres_cube) diff --git a/sorc/chgres_cube.fd/atm_input_data.F90 b/sorc/chgres_cube.fd/atm_input_data.F90 index bcb0e3782..7d995ee0a 100644 --- a/sorc/chgres_cube.fd/atm_input_data.F90 +++ b/sorc/chgres_cube.fd/atm_input_data.F90 @@ -1294,7 +1294,7 @@ end subroutine read_input_atm_restart_file !! @author George Gayno NCEP/EMC subroutine read_input_atm_gaussian_netcdf_file(localpet) - use mpi + use mpi_f08 implicit none @@ -1678,7 +1678,7 @@ end subroutine read_input_atm_gaussian_netcdf_file !! @author George Gayno NCEP/EMC subroutine read_input_atm_tiled_history_file(localpet) - use mpi + use mpi_f08 implicit none @@ -1969,7 +1969,7 @@ end subroutine read_input_atm_tiled_history_file !! @author George Gayno NCEP/EMC subroutine read_input_atm_grib2_file(localpet) - use mpi + use mpi_f08 use grib_mod use grib2_util, only : rh2spfh, rh2spfh_gfs, convert_omega diff --git a/sorc/chgres_cube.fd/atmosphere.F90 b/sorc/chgres_cube.fd/atmosphere.F90 index 68281e94c..c13e709b6 100644 --- a/sorc/chgres_cube.fd/atmosphere.F90 +++ b/sorc/chgres_cube.fd/atmosphere.F90 @@ -117,7 +117,7 @@ module atmosphere !! @author George Gayno subroutine atmosphere_driver(localpet) - use mpi + use mpi_f08 implicit none @@ -1761,7 +1761,7 @@ END SUBROUTINE VINTG_WAM !! !! @author Mark Iredell @date 92-10-31 SUBROUTINE VINTG - use mpi + use mpi_f08 IMPLICIT NONE diff --git a/sorc/chgres_cube.fd/chgres.F90 b/sorc/chgres_cube.fd/chgres.F90 index 8b01656f2..ba1a0394c 100644 --- a/sorc/chgres_cube.fd/chgres.F90 +++ b/sorc/chgres_cube.fd/chgres.F90 @@ -23,7 +23,7 @@ !! @return 0 for success, error code otherwise. program chgres - use mpi + use mpi_f08 use esmf use atmosphere, only : atmosphere_driver diff --git a/sorc/chgres_cube.fd/msis2.1.fd/msis_init.F90 b/sorc/chgres_cube.fd/msis2.1.fd/msis_init.F90 index e6dd54b25..5f4da6f25 100644 --- a/sorc/chgres_cube.fd/msis2.1.fd/msis_init.F90 +++ b/sorc/chgres_cube.fd/msis2.1.fd/msis_init.F90 @@ -370,7 +370,7 @@ end subroutine initparmspace !================================================================================================== subroutine loadparmset(name,iun) - use mpi + use mpi_f08 use msis_constants, only : maxnbf, csfxmod diff --git a/sorc/chgres_cube.fd/search_util.F90 b/sorc/chgres_cube.fd/search_util.F90 index fbab5e209..fbafcda32 100644 --- a/sorc/chgres_cube.fd/search_util.F90 +++ b/sorc/chgres_cube.fd/search_util.F90 @@ -45,7 +45,7 @@ module search_util !! @author George Gayno NCEP/EMC subroutine search (field, mask, idim, jdim, tile, field_num, latitude, terrain_land, soilt_climo) - use mpi + use mpi_f08 use esmf implicit none diff --git a/sorc/chgres_cube.fd/sfc_input_data.F90 b/sorc/chgres_cube.fd/sfc_input_data.F90 index 4ea4d7629..c5d5d7c0f 100644 --- a/sorc/chgres_cube.fd/sfc_input_data.F90 +++ b/sorc/chgres_cube.fd/sfc_input_data.F90 @@ -1762,7 +1762,7 @@ end subroutine read_input_sfc_netcdf_file !! @author Larissa Reames subroutine read_input_sfc_grib2_file(localpet) - use mpi + use mpi_f08 use grib_mod use program_setup, only : vgtyp_from_climo, sotyp_from_climo use model_grid, only : input_grid_type diff --git a/sorc/chgres_cube.fd/surface.F90 b/sorc/chgres_cube.fd/surface.F90 index b77f83f80..37ef6dc61 100644 --- a/sorc/chgres_cube.fd/surface.F90 +++ b/sorc/chgres_cube.fd/surface.F90 @@ -247,7 +247,7 @@ end subroutine surface_driver !! @author George Gayno NOAA/EMC subroutine interp(localpet) - use mpi + use mpi_f08 use esmf use sfc_input_data, only : canopy_mc_input_grid, & diff --git a/sorc/chgres_cube.fd/utils.F90 b/sorc/chgres_cube.fd/utils.F90 index c46540c5e..2f2eccc1b 100644 --- a/sorc/chgres_cube.fd/utils.F90 +++ b/sorc/chgres_cube.fd/utils.F90 @@ -11,7 +11,7 @@ module utilities !! @param[in] rc error status code subroutine error_handler(string, rc) - use mpi + use mpi_f08 implicit none @@ -33,7 +33,7 @@ end subroutine error_handler !! @param[in] string error message subroutine netcdf_err( err, string ) - use mpi + use mpi_f08 use netcdf implicit none diff --git a/sorc/cpld_gridgen.fd/CMakeLists.txt b/sorc/cpld_gridgen.fd/CMakeLists.txt index 0cdfc3540..c4e99ae63 100644 --- a/sorc/cpld_gridgen.fd/CMakeLists.txt +++ b/sorc/cpld_gridgen.fd/CMakeLists.txt @@ -25,11 +25,6 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -assume byterecl") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -ffree-line-length-0 -fdefault-real-8") - - # Turn on this argument mismatch flag for gfortran10. - if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") - endif() endif() set(exe_name cpld_gridgen) diff --git a/sorc/gblevents.fd/CMakeLists.txt b/sorc/gblevents.fd/CMakeLists.txt index ee39d9358..22086de19 100644 --- a/sorc/gblevents.fd/CMakeLists.txt +++ b/sorc/gblevents.fd/CMakeLists.txt @@ -4,6 +4,9 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS_RELEASE "-O3") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8") + if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") + endif() set(CMAKE_Fortran_FLAGS_RELEASE "-O3") endif() diff --git a/sorc/lsm_routines.fd/noah.fd/CMakeLists.txt b/sorc/lsm_routines.fd/noah.fd/CMakeLists.txt index b971b9712..daa252e56 100644 --- a/sorc/lsm_routines.fd/noah.fd/CMakeLists.txt +++ b/sorc/lsm_routines.fd/noah.fd/CMakeLists.txt @@ -12,9 +12,6 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -convert big_endian") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fconvert=big-endian") - if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") - endif() endif() set(lib_name noah_lsm_routines) diff --git a/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt index 79fefcefb..04ab86742 100644 --- a/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/orog.fd/CMakeLists.txt @@ -6,7 +6,7 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fconvert=big-endian -fno-range-check") if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch -fallow-invalid-boz") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-invalid-boz") endif() endif() if(ip_VERSION GREATER_EQUAL 4.0.0) diff --git a/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt b/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt index 6499db583..8704e4d54 100644 --- a/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt +++ b/sorc/orog_mask_tools.fd/orog_gsl.fd/CMakeLists.txt @@ -9,7 +9,7 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fno-range-check") if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch -fallow-invalid-boz") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-invalid-boz") endif() endif() diff --git a/sorc/weight_gen.fd/CMakeLists.txt b/sorc/weight_gen.fd/CMakeLists.txt index 8d8e05db7..6871c37cc 100644 --- a/sorc/weight_gen.fd/CMakeLists.txt +++ b/sorc/weight_gen.fd/CMakeLists.txt @@ -6,9 +6,6 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -r8 -i4 -convert big_endian") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8") - if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") - endif() endif() set(exe_name weight_gen)