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/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/VERSION b/VERSION index 81c871de4..1cac385c6 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.10.0 +1.11.0 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 98% rename from docs/user_guide.md rename to docs/main.md index 924055e72..80e6b5fdf 100644 --- a/docs/user_guide.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) 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'] 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/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/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/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/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/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/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/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/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/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/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/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/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/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/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 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) 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/ 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