diff --git a/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log b/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log index 494bc2d38..316fa4295 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_hera.intel.log @@ -1,8 +1,8 @@ -Fri Dec 15 20:03:43 UTC 2023 +Mon Apr 8 19:09:11 UTC 2024 Start Regression test -Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_148527/025 -Baseline dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/BASELINE/025 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_1965110/025 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025 Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -25,6 +25,7 @@ Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.Bu.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.0p50.bilinear.nc........OK @@ -38,8 +39,8 @@ Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx025.nc........OK -Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_148527/050 -Baseline dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/BASELINE/050 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_1965110/050 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050 Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -61,8 +62,10 @@ Comparing mesh.mx050.nc........OK Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx050.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.conserve.nc........OK Comparing tripole.mx050.Ct.to.rect.1p00.bilinear.nc........OK @@ -74,8 +77,8 @@ Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx050.nc........OK -Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_148527/100 -Baseline dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/BASELINE/100 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_1965110/100 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100 Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -96,8 +99,10 @@ Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx100.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.conserve.nc........OK Comparing tripole.mx100.Ct.to.rect.5p00.bilinear.nc........OK @@ -108,8 +113,8 @@ Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK -Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_148527/500 -Baseline dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/BASELINE/500 +Working dir = /scratch1/NCEPDEV/stmp4/Denise.Worthen/CPLD_GRIDGEN/rt_1965110/500 +Baseline dir = /scratch1/NCEPDEV/nems/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/500 Checking test 500 results .... Comparing Bu.mx500_SCRIP.nc........OK @@ -129,8 +134,10 @@ Comparing grid_cice_NEMS_mx500.nc........OK Comparing kmtu_cice_NEMS_mx500.nc........OK Comparing mesh.mx500.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.conserve.nc........OK Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK @@ -139,5 +146,5 @@ Comparing tripole.mx500.nc........OK REGRESSION TEST WAS SUCCESSFUL -Fri Dec 15 20:29:09 UTC 2023 -Elapsed time: 00h:25m:28s. Have a nice day! +Mon Apr 8 19:31:41 UTC 2024 +Elapsed time: 00h:23m:55s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/RegressionTests_hercules.intel.log b/reg_tests/cpld_gridgen/RegressionTests_hercules.intel.log new file mode 100644 index 000000000..d92854007 --- /dev/null +++ b/reg_tests/cpld_gridgen/RegressionTests_hercules.intel.log @@ -0,0 +1,150 @@ +Tue Apr 9 06:44:10 CDT 2024 +Start Regression test + +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_1693683/025 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils.hercules/reg_tests/cpld_gridgen/baseline_data/025 + +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.to.C384.nc........OK +Comparing Ct.mx025_SCRIP.nc........OK +Comparing Ct.mx025_SCRIP_land.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.0p50_SCRIP.nc........OK +Comparing rect.1p00_SCRIP.nc........OK +Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.Bu.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.0p50.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.0p50.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p00.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.1p00.conserve.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p00.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.rect.5p00.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/dworthen/CPLD_GRIDGEN/rt_1693683/050 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils.hercules/reg_tests/cpld_gridgen/baseline_data/050 + +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.to.C192.nc........OK +Comparing Ct.mx050_SCRIP.nc........OK +Comparing Ct.mx050_SCRIP_land.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.0p50_SCRIP.nc........OK +Comparing rect.1p00_SCRIP.nc........OK +Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx050.Ct.bilinear.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.Bu.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p50.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.0p50.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p00.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.1p00.conserve.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p00.bilinear.nc........OK +Comparing tripole.mx050.Ct.to.rect.5p00.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/dworthen/CPLD_GRIDGEN/rt_1693683/100 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils.hercules/reg_tests/cpld_gridgen/baseline_data/100 + +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.to.C96.nc........OK +Comparing Ct.mx100_SCRIP.nc........OK +Comparing Ct.mx100_SCRIP_land.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.1p00_SCRIP.nc........OK +Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx100.Ct.bilinear.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.Bu.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p00.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.1p00.conserve.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p00.bilinear.nc........OK +Comparing tripole.mx100.Ct.to.rect.5p00.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_1693683/500 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils.hercules/reg_tests/cpld_gridgen/baseline_data/500 + +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.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.bilinear.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.Bu.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p00.bilinear.nc........OK +Comparing tripole.mx500.Ct.to.rect.5p00.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 +Tue Apr 9 07:04:50 CDT 2024 +Elapsed time: 00h:21m:53s. 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 dab42d567..350d3e3c8 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_jet.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_jet.intel.log @@ -1,8 +1,8 @@ -Sat Dec 16 18:41:27 UTC 2023 +Mon Apr 8 19:07:01 UTC 2024 Start Regression test -Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_97163/025 -Baseline dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/BASELINE/025 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_2966831/025 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025 Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -12,9 +12,9 @@ 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.to.C384.nc........OK -Comparing Ct.mx025_SCRIP.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 @@ -25,6 +25,7 @@ Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.Bu.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.0p50.bilinear.nc........OK @@ -38,8 +39,8 @@ Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx025.nc........OK -Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_97163/050 -Baseline dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/BASELINE/050 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_2966831/050 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050 Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -50,9 +51,9 @@ 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.to.C192.nc........OK -Comparing Ct.mx050_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 @@ -61,8 +62,10 @@ Comparing mesh.mx050.nc........OK Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx050.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.conserve.nc........OK Comparing tripole.mx050.Ct.to.rect.1p00.bilinear.nc........OK @@ -74,8 +77,8 @@ Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx050.nc........OK -Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_97163/100 -Baseline dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/BASELINE/100 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_2966831/100 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100 Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -86,9 +89,9 @@ 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.to.C96.nc........OK -Comparing Ct.mx100_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 @@ -96,8 +99,10 @@ Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx100.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.conserve.nc........OK Comparing tripole.mx100.Ct.to.rect.5p00.bilinear.nc........OK @@ -108,8 +113,8 @@ Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK -Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_97163/500 -Baseline dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/BASELINE/500 +Working dir = /lfs4/HFIP/h-nems/Denise.Worthen/CPLD_GRIDGEN/rt_2966831/500 +Baseline dir = /lfs4/HFIP/hfv3gfs/emc.nemspara/role.ufsutils/ufs_utils/reg_tests/cpld_gridgen/baseline_data/500 Checking test 500 results .... Comparing Bu.mx500_SCRIP.nc........OK @@ -120,17 +125,19 @@ 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 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.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.conserve.nc........OK Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK @@ -139,5 +146,5 @@ Comparing tripole.mx500.nc........OK REGRESSION TEST WAS SUCCESSFUL -Sat Dec 16 19:13:08 UTC 2023 -Elapsed time: 00h:31m:44s. Have a nice day! +Mon Apr 8 19:38:29 UTC 2024 +Elapsed time: 00h:33m:11s. 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 34f40612f..4dde38fb8 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_orion.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_orion.intel.log @@ -1,8 +1,8 @@ -Fri Dec 15 11:10:53 CST 2023 +Mon Apr 8 18:04:38 CDT 2024 Start Regression test -Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_408740/025 -Baseline dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE/025 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_325586/025 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/025 Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -25,6 +25,7 @@ Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.Bu.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.0p50.bilinear.nc........OK @@ -38,8 +39,8 @@ Comparing tripole.mx025.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx025.nc........OK -Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_408740/050 -Baseline dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE/050 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_325586/050 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/050 Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -61,8 +62,10 @@ Comparing mesh.mx050.nc........OK Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx050.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.conserve.nc........OK Comparing tripole.mx050.Ct.to.rect.1p00.bilinear.nc........OK @@ -74,8 +77,8 @@ Comparing tripole.mx050.Cv.to.Ct.bilinear.nc........OK Comparing tripole.mx050.nc........OK -Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_408740/100 -Baseline dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE/100 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_325586/100 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/100 Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -96,8 +99,10 @@ Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx100.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.conserve.nc........OK Comparing tripole.mx100.Ct.to.rect.5p00.bilinear.nc........OK @@ -108,8 +113,8 @@ Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK -Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_408740/500 -Baseline dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/BASELINE/500 +Working dir = /work/noaa/stmp/dworthen/CPLD_GRIDGEN/rt_325586/500 +Baseline dir = /work/noaa/nems/role-nems/ufs_utils/reg_tests/cpld_gridgen/baseline_data/500 Checking test 500 results .... Comparing Bu.mx500_SCRIP.nc........OK @@ -129,8 +134,10 @@ Comparing grid_cice_NEMS_mx500.nc........OK Comparing kmtu_cice_NEMS_mx500.nc........OK Comparing mesh.mx500.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.conserve.nc........OK Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK @@ -139,5 +146,5 @@ Comparing tripole.mx500.nc........OK REGRESSION TEST WAS SUCCESSFUL -Fri Dec 15 11:33:32 CST 2023 -Elapsed time: 00h:22m:41s. Have a nice day! +Mon Apr 8 18:29:13 CDT 2024 +Elapsed time: 00h:26m:29s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log b/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log index a7fa76fd6..6d17bf427 100644 --- a/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log +++ b/reg_tests/cpld_gridgen/RegressionTests_wcoss2.intel.log @@ -1,8 +1,8 @@ -Sat Dec 16 15:19:48 UTC 2023 +Mon Apr 8 20:57:57 UTC 2024 Start Regression test -Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_194650/025 -Baseline dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/BASELINE/025 +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_15449/025 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/025 Checking test 025 results .... Comparing Bu.mx025_SCRIP.nc........OK @@ -25,6 +25,7 @@ Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK Comparing tripole.mx025.Bu.to.Ct.bilinear.nc........OK +Comparing tripole.mx025.Ct.to.Bu.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.0p50.bilinear.nc........OK @@ -38,8 +39,8 @@ 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_194650/050 -Baseline dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/BASELINE/050 +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_15449/050 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/050 Checking test 050 results .... Comparing Bu.mx050_SCRIP.nc........OK @@ -61,8 +62,10 @@ Comparing mesh.mx050.nc........OK Comparing rect.0p50_SCRIP.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx050.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.bilinear.nc........OK Comparing tripole.mx050.Ct.to.rect.0p50.conserve.nc........OK Comparing tripole.mx050.Ct.to.rect.1p00.bilinear.nc........OK @@ -74,8 +77,8 @@ 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_194650/100 -Baseline dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/BASELINE/100 +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_15449/100 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/100 Checking test 100 results .... Comparing Bu.mx100_SCRIP.nc........OK @@ -96,8 +99,10 @@ Comparing kmtu_cice_NEMS_mx100.nc........OK Comparing mesh.mx100.nc........OK Comparing rect.1p00_SCRIP.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx100.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.bilinear.nc........OK Comparing tripole.mx100.Ct.to.rect.1p00.conserve.nc........OK Comparing tripole.mx100.Ct.to.rect.5p00.bilinear.nc........OK @@ -108,8 +113,8 @@ Comparing tripole.mx100.nc........OK Comparing ufs.topo_edits_011818.nc........OK -Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_194650/500 -Baseline dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/BASELINE/500 +Working dir = /lfs/h2/emc/stmp/denise.worthen/CPLD_GRIDGEN/rt_15449/500 +Baseline dir = /lfs/h2/emc/nems/noscrub/emc.nems/UFS_UTILS/reg_tests/cpld_gridgen/baseline_data/500 Checking test 500 results .... Comparing Bu.mx500_SCRIP.nc........OK @@ -129,8 +134,10 @@ Comparing grid_cice_NEMS_mx500.nc........OK Comparing kmtu_cice_NEMS_mx500.nc........OK Comparing mesh.mx500.nc........OK Comparing rect.5p00_SCRIP.nc........OK +Comparing tripole.mx025.Ct.to.mx500.Ct.bilinear.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.Bu.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.bilinear.nc........OK Comparing tripole.mx500.Ct.to.rect.5p00.conserve.nc........OK Comparing tripole.mx500.Cu.to.Ct.bilinear.nc........OK @@ -139,5 +146,5 @@ Comparing tripole.mx500.nc........OK REGRESSION TEST WAS SUCCESSFUL -Sat Dec 16 15:39:10 UTC 2023 -Elapsed time: 00h:19m:23s. Have a nice day! +Mon Apr 8 21:22:18 UTC 2024 +Elapsed time: 00h:25m:33s. Have a nice day! diff --git a/reg_tests/cpld_gridgen/parm/grid.nml.IN b/reg_tests/cpld_gridgen/parm/grid.nml.IN index 8776b58c8..05f1ac04f 100644 --- a/reg_tests/cpld_gridgen/parm/grid.nml.IN +++ b/reg_tests/cpld_gridgen/parm/grid.nml.IN @@ -4,10 +4,10 @@ nj=NJ_GLB dirsrc='FIXDIR' dirout='OUTDIR' fv3dir='MOSAICDIR' -topofile=TOPOGFILE -editsfile=EDITSFILE +topofile='TOPOGFILE' +editsfile='EDITSFILE' res=RESNAME -atmres=MOSAICRES +atmres='MOSAICRES' npx=NPX editmask=DO_MASKEDIT debug=DO_DEBUG diff --git a/reg_tests/cpld_gridgen/rt.sh b/reg_tests/cpld_gridgen/rt.sh index 70d11c048..bfdf4795a 100755 --- a/reg_tests/cpld_gridgen/rt.sh +++ b/reg_tests/cpld_gridgen/rt.sh @@ -108,9 +108,9 @@ TESTS_FILE="$PATHRT/rt.conf" export TEST_NAME= # for C3072 on hera, use WLCLK=60 and MEM="--exclusive" -WLCLK_dflt=20 +WLCLK_dflt=35 export WLCLK=$WLCLK_dflt -MEM_dflt="--mem=12g" +MEM_dflt="--mem=16g" export MEM=$MEM_dflt cd $PATHRT @@ -170,7 +170,6 @@ elif [[ $target = jet ]]; then 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/angles.F90 b/sorc/cpld_gridgen.fd/angles.F90 index 31ac0bbcb..54af32bbb 100644 --- a/sorc/cpld_gridgen.fd/angles.F90 +++ b/sorc/cpld_gridgen.fd/angles.F90 @@ -10,125 +10,130 @@ module angles use gengrid_kinds, only : dbl_kind, int_kind - use grdvars, only : ni,nj,nx,ny - use grdvars, only : x,y,xsgp1,ysgp1,sg_maxlat - use grdvars, only : latBu,lonBu,lonCt - use grdvars, only : angq,anglet use grdvars, only : debug implicit none contains - !> Find the rotation angle on corner grid (Bu) points using the full MOM6 supergrid + !> Find the rotation angle on center (Bu) grid points !! + !! @param[in] iind the start/end index in the i-dimension of the grid + !! @param[in] jind the start/end index in the j-dimension of the grid + !! @param[in] xangCt the angle across the tripole seam + !! @param[in] anglet the rotation angle on Ct points + !! @param[out] angle the rotation angle on Bu points !! @author Denise.Worthen@noaa.gov - subroutine find_angq - ! local variables - integer :: i,j,i1,i2,m,n + subroutine find_angq(iind,jind,xangCt,anglet,angle) - ! pole locations on SG - integer(int_kind) :: ipolesg(2) + integer , intent(in) :: iind(2),jind(2) + real(dbl_kind), intent(in) :: xangCt(:) + real(dbl_kind), intent(in) :: anglet(:,:) + real(dbl_kind), intent(out) :: angle(:,:) - ! from geolonB fix in MOM6 - real(dbl_kind) :: len_lon ! The periodic range of longitudes, usually 360 degrees. - real(dbl_kind) :: pi_720deg ! One quarter the conversion factor from degrees to radians. - real(dbl_kind) :: lonB(2,2) ! The longitude of a point, shifted to have about the same value. - real(dbl_kind) :: lon_scale = 0.0 + ! local variables + integer :: i,j + + real(dbl_kind) :: angle_0, angle_w, angle_s, angle_sw + real(dbl_kind) :: p25 = 0.25 !--------------------------------------------------------------------- - ! to find angleq on seam, replicate supergrid values across seam + ! find the angle on corners using the same relationship CICE uses + ! internally to calculate angles on Ct using angles on Bu + ! + ! w-----------------0 Ct(i+1,j+1) + ! | | + ! ----------Bu(i,j)---------- Bu lies on seam at j=nj + ! | | + ! Ct(i,j) sw----------------s + ! !--------------------------------------------------------------------- - angq = 0.0 - xsgp1 = 0.0; ysgp1 = 0.0 - !pole on supergrid - ipolesg = -1 - j = ny - do i = 1,nx/2 - if(y(i,j) .eq. sg_maxlat)ipolesg(1) = i - enddo - do i = nx/2+1,nx - if(y(i,j) .eq. sg_maxlat)ipolesg(2) = i + angle = 0.0 + do j = jind(1)+1,jind(2) + do i = iind(1),iind(2)-1 + if (j .lt. jind(2)) then + angle_0 = anglet(i+1,j+1) + angle_w = anglet(i, j+1) + angle_s = anglet(i+1,j ) + angle_sw = anglet(i ,j ) + else + angle_0 = xangCt(i+1 ) + angle_w = xangCt(i ) + angle_s = anglet(i+1,j) + angle_sw = anglet(i, j) + end if + angle(i,j) = atan2(p25*(sin(angle_0) + sin(angle_w) + sin(angle_s) + sin(angle_sw)), & + p25*(cos(angle_0) + cos(angle_w) + cos(angle_s) + cos(angle_sw))) + + if (abs(angle(i,j)) .le. 1.0e-10)angle(i,j) = 0.0 + enddo enddo - if(debug)print *,'poles found at ',ipolesg - xsgp1(:,0:ny) = x(:,0:ny) - ysgp1(:,0:ny) = y(:,0:ny) + end subroutine find_angq - !check - do i = ipolesg(1)-5,ipolesg(1)+5 - i2 = ipolesg(2)+(ipolesg(1)-i)+1 - if(debug)print *,i,i2 - enddo - print * - do i = ipolesg(2)-5,ipolesg(2)+5 - i2 = ipolesg(2)+(ipolesg(1)-i)+1 - if(debug)print *,i,i2 - enddo + !> Verify the rotation angle on center (Ct) grid points using angle on corner + !! (Bu) grid points + !! + !! @param[in] iind the start/end index in the i-dimension of the grid + !! @param[in] jind the start/end index in the j-dimension of the grid + !! @param[in] angle the rotation angle on Bu points + !! @param[out] angchk the rotation angle on Ct points + !! @author Denise.Worthen@noaa.gov + subroutine find_angchk(iind,jind,angle,angchk) - !replicate supergrid across pole - do i = 1,nx - i2 = ipolesg(2)+(ipolesg(1)-i) - xsgp1(i,ny+1) = xsgp1(i2,ny) - ysgp1(i,ny+1) = ysgp1(i2,ny) - enddo + integer , intent(in) :: iind(2),jind(2) + real(dbl_kind), intent(in) :: angle(:,:) + real(dbl_kind), intent(out) :: angchk(:,:) - !check - j = ny+1 - i1 = ipolesg(1); i2 = ipolesg(2)-(ipolesg(1)-i1) - print *,'replicate X across seam on SG' - print *,xsgp1(i1-2,j),xsgp1(i2+2,j) - print *,xsgp1(i1-1,j),xsgp1(i2+1,j) - print *,xsgp1(i1, j),xsgp1(i2, j) - print *,xsgp1(i1+1,j),xsgp1(i2-1,j) - print *,xsgp1(i1+2,j),xsgp1(i2-2,j) - - print *,'replicate Y across seam on SG' - print *,ysgp1(i1-2,j),ysgp1(i2+2,j) - print *,ysgp1(i1-1,j),ysgp1(i2+1,j) - print *,ysgp1(i1, j),ysgp1(i2, j) - print *,ysgp1(i1+1,j),ysgp1(i2-1,j) - print *,ysgp1(i1+2,j),ysgp1(i2-2,j) + ! local variables + integer :: i,j + real(dbl_kind) :: angle_0, angle_w, angle_s, angle_sw + real(dbl_kind) :: p25 = 0.25 !--------------------------------------------------------------------- - ! rotation angle on supergrid vertices - ! lonB: x(i-1,j-1) has same relationship to x(i,j) on SG as - ! geolonT(i,j) has to geolonBu(i,j) on the reduced grid + ! check: calculate anglet from angle on corners as CICE does internally. + ! since angle changes sign between CICE and MOM6, (-1)*angchk ~ anglet + ! + ! w-----------------0 Bu(i,j) + ! | | + ! | Ct(i,j) | + ! | | + ! Bu(i-1,j-1) sw----------------s + ! !--------------------------------------------------------------------- - ! constants as defined in MOM - pi_720deg = atan(1.0) / 180.0 - len_lon = 360.0 - do j=1,ny ; do i=1,nx-1 - do n=1,2 ; do m=1,2 - lonB(m,n) = modulo_around_point(xsgp1(I+m-2,J+n-2), xsgp1(i-1,j-1), len_lon) - enddo; enddo - lon_scale = cos(pi_720deg*(ysgp1(i-1,j-1) + ysgp1(i+1,j-1) + & - ysgp1(i-1,j+1) + ysgp1(i+1,j+1)) ) - angq(i,j) = atan2(lon_scale*((lonB(1,2) - lonB(2,1)) + (lonB(2,2) - lonB(1,1))), & - ysgp1(i-1,j+1) + ysgp1(i+1,j+1) - & - ysgp1(i-1,j-1) - ysgp1(i+1,j-1) ) - enddo; enddo - - !check - if(debug) then - j = ny - i1 = ipolesg(1); i2 = ipolesg(2)-(ipolesg(1)-i1) - print *,'angq along seam on SG' - print *,angq(i1-2,j),angq(i2+2,j) - print *,angq(i1-1,j),angq(i2+1,j) - print *,angq(i1, j),angq(i2, j) - print *,angq(i1+1,j),angq(i2-1,j) - print *,angq(i1+2,j),angq(i2-2,j) - end if + angchk = 0.0 + do j = jind(1)+1,jind(2) + do i = iind(1)+1,iind(2) + angle_0 = angle(i ,j ) + angle_w = angle(i-1,j ) + angle_s = angle(i, j-1) + angle_sw = angle(i-1,j-1) + angchk(i,j) = atan2(p25*(sin(angle_0) + sin(angle_w) + sin(angle_s) + sin(angle_sw)), & + p25*(cos(angle_0) + cos(angle_w) + cos(angle_s) + cos(angle_sw))) + enddo + enddo - end subroutine find_angq + end subroutine find_angchk !> Find the rotation angle on center (Ct) grid points !! + !! @param[in] iind the start/end index in the i-dimension of the grid + !! @param[in] jind the start/end index in the j-dimension of the grid + !! @param[in] lonBu the longitudes of the corner grid points + !! @param[in] latBu the latitudes of the corner grid points + !! @param[in] lonCt the longitudes of the center grid points + !! @param[out] anglet the rotation angle on Ct points !! @author Denise.Worthen@noaa.gov - subroutine find_ang + + subroutine find_ang(iind,jind,lonBu,latBu,lonCt,anglet) + + integer , intent(in) :: iind(2),jind(2) + real(dbl_kind), intent(in) :: lonBu(:,:) + real(dbl_kind), intent(in) :: latBu(:,:) + real(dbl_kind), intent(in) :: lonCt(:,:) + real(dbl_kind), intent(out) :: anglet(:,:) ! local variables integer :: i,j,m,n @@ -151,17 +156,17 @@ subroutine find_ang anglet = 0.0 pi_720deg = atan(1.0) / 180.0 len_lon = 360.0 - do j=1,nj; do i = 1,ni + do j=jind(1),jind(2); do i = iind(1),iind(2) do n=1,2 ; do m=1,2 jj = J+n-2; ii = I+m-2 if(jj .eq. 0)jj = 1 - if(ii .eq. 0)ii = ni + if(ii .eq. 0)ii = iind(2) lonB(m,n) = modulo_around_point(LonBu(ii,jj), LonCt(i,j), len_lon) ! lonB(m,n) = modulo_around_point(LonBu(I+m-2,J+n-2), LonCt(i,j), len_lon) enddo; enddo jj = j-1; ii = i-1 if(jj .eq. 0)jj = 1 - if(ii .eq. 0)ii = ni + if(ii .eq. 0)ii = iind(2) lon_scale = cos(pi_720deg*((LatBu(ii,jj) + LatBu(I,J)) + & (LatBu(I,jj) + LatBu(ii,J)) ) ) anglet(i,j) = atan2(lon_scale*((lonB(1,2) - lonB(2,1)) + (lonB(2,2) - lonB(1,1))), & diff --git a/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md b/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md index 9e34d1ccf..e0572adee 100644 --- a/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md +++ b/sorc/cpld_gridgen.fd/docs/cpld_gridgen.md @@ -20,7 +20,10 @@ For the UFS coupled model application S2S or S2SW, the following fix files are r - The mapped ocean mask on the FV3 tiles -- The ESMF regridding weights required to create the CICE6 IC from CPC (SIS2) reanalysis. +- The ESMF regridding weights required to create the CICE6 IC from CPC (SIS2) reanalysis or to map a 1/4 deg MOM6 or CICE6 tripole restart file +to a lower tripole resolution. + +- The latitude,longitude,depth and mask arrays required by WW3 to create a mod_def file. - The ESMF regridding weights required to remap the CICE6 or MOM6 output from tripole grid to a rectilinear grid (optional). @@ -30,7 +33,7 @@ Since MOM6 creates the model grid at runtime (including adjusting the land mask, ### MOM6 grids -The MOM6 supergrid contains a MOM6 grid at twice the desired resolution. The indexing of the supergrid vs the reduced grid is: +The MOM6 supergrid contains a MOM6 grid at twice the desired resolution. The indexing of the supergrid vs the reduced grid is: Super Grid Reduced Grid @@ -62,7 +65,7 @@ MOM6 uses an Arakawa C grid. Within cpld_gridgen, these are referred to as "stag ### Rotation angles -For the tripole grid, a rotation angle is defined to translate vectors to/from the grid (i-j) orientation from/to true E-W. The rotation angle is calculated at run-time in MOM6 (src/initialization/MOM_shared_initialization.F90). However, CICE6 requires a rotation at the corner (``Bu``) grid points, which for points along the tripole seam requires values on the other side of the tripole fold. In cpld_gridgen, these values are found by "flipping over" the values on the last row of the MOM6 super-grid. If ``ipL`` and ``ipR`` are the i-indices of the poles along the last j-row: +For the tripole grid, a rotation angle is defined to translate vectors to/from the grid (i-j) orientation from/to true E-W. The rotation angle on ``Ct`` grid points is calculated at run-time in MOM6 (src/initialization/MOM_shared_initialization.F90). However, CICE6 requires a rotation at the corner (``Bu``) grid points. To find these angles, the rotation angle on ``Ct`` points on the opposite side of the tripole fold are used. In cpld_gridgen, these values are found by "flipping over" and changing the sign of the values on the last row of the MOM6 grid. If ``ipL`` and ``ipR`` are the i-indices of the poles along the last j-row: ipL-1 ipL ipL+1 ipR-1 ipR ipR+1 @@ -77,14 +80,14 @@ then after folding along the tripole seam, ``ipL`` and ``ipR`` must align: x-------x-------x -Using the folded seam, the values required for calculating the rotation angle on the ``Bu`` grid points are available and can be calculated in the same way as MOM6 calculates rotation angles for the ``Ct`` grid points. +Using the folded seam, the values of the rotation on ``Ct`` points across the seam are known. The same procedure that CICE uses internally to calculate the ``Ct`` angles from the ``Bu`` angles can be used to instead calculate the ``Bu`` angles knowing the ``Ct`` angles. ### SCRIP format files -For calculating interpolation weights using ESMF, a SCRIP file needs to be provided. A SCIP file contains the both the grid locations of any stagger grid location (e.g. ``Ct``) and the associated grid vertices for that point. As seen from the above diagram, for the ``Ct`` points, those grid vertices are given by the ``Bu`` grid locations. +For calculating interpolation weights using ESMF, a SCRIP file needs to be provided. A SCIP file contains the both the grid locations of any stagger grid location (e.g. ``Ct``) and the associated grid vertices for that point. As seen from the above diagram, for the ``Ct`` points, those grid vertices are given by the ``Bu`` grid locations. SCRIP requires that the vertices be ordered counter-clockwise so that the center grid point is always to the left of the vertex. In cpld_gridgen, vertices are defined counter-clockwise from upper right. ``Ct`` vertices are located on the ``Bu`` grid (as shown above), ``Cu`` vertices on the ``Cv`` grid, ``Cv`` vertices on the ``Cu`` grid and ``Bu`` vertices on the ``Ct`` grid. For example, for the ``Ct`` grid, the vertices are: - + Vertex #2 Vertex #1 Bu(i-1,j) Bu(i,j) Ct(i,j) @@ -96,7 +99,7 @@ so that the vertices for the ``Ct`` grid are found as off-sets of the i,j index iVertCt(4) = (/0, -1, -1, 0/) jVertCt(4) = (/0, 0, -1, -1/) - + Careful examination of the remaining stagger locations lead to similar definitions for the i,j offsets required to extract the vertices, all of which can be defined in terms of the ``iVertCt`` and ``jVertCt`` values. Special treatment is require at the bottom of the grid, where the vertices of the ``Ct`` and ``Cu`` grid must be set manually (note, these points are on land.) The top of the grid also requires special treatment because the required vertices are located across the tripole seam. This is accomplished by creating 1-d arrays which hold the ``Ct`` and ``Cu`` grid point locations across the matched seam. @@ -111,7 +114,7 @@ The cpld_gridgen program and associated script related functions perform the fol 3. create the CICE6 grid variables and writes the required CICE6 grid file 4. create a SCRIP file for the center stagger (``Ct``) grid points and a second SCRIP file also containing the land mask 5. create the ESMF conservative regridding weights to map the ocean mask to the FV3 tiles and write the mapped mask to 6 tile files -6. create the ESMF regridding weights to map the 1/4 CICE6 restart file to a lower resolution tripole grid +6. create the ESMF regridding weights to map a 1/4 deg ice or ocean restart file to a lower resolution tripole grid 7. optionally call a routine to generate ESMF regridding weights to map the tripole grid to a set of rectilinear grids 8. use the command line command *ESMF_Scrip2Unstruct* to generate the ocean mesh from the SCRIP file containing the land mask (item 4) 9. use an NCO command line command to generate the CICE6 land mask file from the CICE6 grid file @@ -134,11 +137,11 @@ The exact list of files produced by the *cpld_gridgen.sh* script will vary depen
tripole.mx025.Ct.to.rect.[destination resolution].[bilinear][conserve].nc | the ESMF weights for mapping variables on the center (Ct) stagger location on the tripole grid to a rectilinear grid with [destination resolution] using either bilinear or conservative mapping |
File name | Function - |
---|---|
tripole.mx025.Ct.to.mx[destination resolution].Ct.neareststod.nc | the ESMF weights for mapping the 1/4 CICE ICs to - a tripole [destination resolution] using nearest source-to-destination mapping + |
tripole.mx025.Ct.to.mx[destination resolution].Ct.neareststod.nc | the ESMF weights for mapping 1/4 deg tripole ICs to + a lower tripole destination resolution using nearest source-to-destination mapping + |
tripole.mx025.Ct.to.mx[destination resolution].Ct.bilinear.nc | the ESMF weights for mapping 1/4 deg tripole ICs to + a lower tripole destination resolution using bilinear mapping + |
tripole.[destination resolution].Ct.to.[Cu][Cv][Bu].bilinear.nc | the ESMF weights for mapping downscaled IC values on a + tripole grid from Ct locations to the native stagger locations |
File name | Function |
---|---|
ufs.[Default filename].nc | Topo-edits required for UFS application. These are appended to the existing default topo edits file and implemented at run time with the parameter flag ``ALLOW_LANDMASK_CHANGES=true``. All files produced by the *cpld_gridgen.sh* will be consistent with this run-time land mask. |